{"version":3,"file":"ubits-mf-root-config.js","mappings":"mXAGIA,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,k3EAAm3E,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,4CAA4C,mDAAmD,MAAQ,GAAG,SAAW,glBAAglB,eAAiB,CAAC,0tCAA0tC,8FAA8F,WAAa,MAEn9I,S,wBCDAD,EAAOE,QAAU,SAAUC,GACzB,IAAIC,EAAO,GA4EX,OAzEAA,EAAKC,SAAW,WACd,OAAOC,KAAKC,KAAI,SAAUC,GACxB,IAAIC,EAAU,GACVC,OAA+B,IAAZF,EAAK,GAoB5B,OAnBIA,EAAK,KACPC,GAAW,cAAcE,OAAOH,EAAK,GAAI,QAEvCA,EAAK,KACPC,GAAW,UAAUE,OAAOH,EAAK,GAAI,OAEnCE,IACFD,GAAW,SAASE,OAAOH,EAAK,GAAGI,OAAS,EAAI,IAAID,OAAOH,EAAK,IAAM,GAAI,OAE5EC,GAAWN,EAAuBK,GAC9BE,IACFD,GAAW,KAETD,EAAK,KACPC,GAAW,KAETD,EAAK,KACPC,GAAW,KAENA,CACT,IAAGI,KAAK,GACV,EAGAT,EAAKU,EAAI,SAAWC,EAASC,EAAOC,EAAQC,EAAUC,GAC7B,iBAAZJ,IACTA,EAAU,CAAC,CAAC,KAAMA,OAASK,KAE7B,IAAIC,EAAyB,CAAC,EAC9B,GAAIJ,EACF,IAAK,IAAIK,EAAI,EAAGA,EAAIhB,KAAKM,OAAQU,IAAK,CACpC,IAAIrB,EAAKK,KAAKgB,GAAG,GACP,MAANrB,IACFoB,EAAuBpB,IAAM,EAEjC,CAEF,IAAK,IAAIsB,EAAK,EAAGA,EAAKR,EAAQH,OAAQW,IAAM,CAC1C,IAAIf,EAAO,GAAGG,OAAOI,EAAQQ,IACzBN,GAAUI,EAAuBb,EAAK,WAGrB,IAAVW,SACc,IAAZX,EAAK,KAGdA,EAAK,GAAK,SAASG,OAAOH,EAAK,GAAGI,OAAS,EAAI,IAAID,OAAOH,EAAK,IAAM,GAAI,MAAMG,OAAOH,EAAK,GAAI,MAF/FA,EAAK,GAAKW,GAMVH,IACGR,EAAK,IAGRA,EAAK,GAAK,UAAUG,OAAOH,EAAK,GAAI,MAAMG,OAAOH,EAAK,GAAI,KAC1DA,EAAK,GAAKQ,GAHVR,EAAK,GAAKQ,GAMVE,IACGV,EAAK,IAGRA,EAAK,GAAK,cAAcG,OAAOH,EAAK,GAAI,OAAOG,OAAOH,EAAK,GAAI,KAC/DA,EAAK,GAAKU,GAHVV,EAAK,GAAK,GAAGG,OAAOO,IAMxBd,EAAKL,KAAKS,GACZ,CACF,EACOJ,CACT,C,wBClFAJ,EAAOE,QAAU,SAAUM,GACzB,IAAIC,EAAUD,EAAK,GACfgB,EAAahB,EAAK,GACtB,IAAKgB,EACH,OAAOf,EAET,GAAoB,mBAATgB,KAAqB,CAC9B,IAAIC,EAASD,KAAKE,SAASC,mBAAmBC,KAAKC,UAAUN,MACzDO,EAAO,+DAA+DpB,OAAOe,GAC7EM,EAAgB,OAAOrB,OAAOoB,EAAM,OACxC,MAAO,CAACtB,GAASE,OAAO,CAACqB,IAAgBnB,KAAK,KAChD,CACA,MAAO,CAACJ,GAASI,KAAK,KACxB,C,8BCbAb,EAAOE,QAAU,EAAjB,I,8BCAA,IAAI+B,EAAU,EAAQ,MAClBC,EAAU,EAAQ,MAClBC,EAAU,EAAQ,KAEtB,SAASC,IACP9B,KAAK+B,QAAU,GACf/B,KAAKgC,UAAY,GACjBhC,KAAKiC,aAAe,GACpBjC,KAAKkC,OAAS,GACdlC,KAAKmC,SAAW,CAAC,EACjBnC,KAAKoC,aAAe,QACtB,CAEAN,EAAYO,YAAc,SAASC,GACjC,IAAIC,EAA6B,oBAAZC,QAA0BA,QAAU,EAAAC,EAIzD,OAHAF,EAAQG,wBAA0BH,EAAQG,yBAA2B,CAAC,EACtEH,EAAQG,wBAAwBJ,GAAUC,EAAQG,wBAAwBJ,IAAW,IAAIR,EAElFS,EAAQG,wBAAwBJ,EACzC,EAEAR,EAAYa,UAAUC,QAAU,SAASC,GACvC7C,KAAKmC,SAASU,EAAKC,eAAiBD,EAEpC,IAAIE,EAAS,GAEb,IAAK,IAAIC,KAAOhD,KAAKmC,SACfR,EAAQ3B,KAAKmC,SAAUa,IACzBD,EAAOtD,KAAKO,KAAKmC,SAASa,IAI9BhD,KAAKoC,aAAe,IAAIa,OAAOF,EAAOxC,KAAK,KAC7C,EAEAuB,EAAYa,UAAUO,OAAS,SAASC,EAAMC,GACxB,iBAATD,GACTvB,EAAO5B,KAAKiC,aAAckB,GAG5BvB,EAAO5B,KAAKiC,aAAcmB,GAC1BpD,KAAK+B,QAAQsB,QAAQ,CAACF,EAAMC,GAC9B,EAEAtB,EAAYa,UAAUW,SAAW,SAASH,EAAMC,GAC1B,iBAATD,GACTvB,EAAO5B,KAAKiC,aAAckB,GAG5BvB,EAAO5B,KAAKiC,aAAcmB,GAC1BpD,KAAKgC,UAAUqB,QAAQ,CAACF,EAAMC,GAChC,EAEAtB,EAAYa,UAAUY,UAAY,SAASD,EAAUJ,GACnDtB,EAAO5B,KAAKiC,aAAcqB,GAC1B1B,EAAO5B,KAAKiC,aAAciB,GAE1B,IAAIM,EAAKF,EAAS,GACdG,EAAQH,EAASI,OAAO,GAExBC,EAAKT,EAAO,GACZU,EAAQV,EAAOQ,OAAO,GAE1B,GAAIF,EAAGK,gBAAkBF,EAAGE,cAC1B7D,KAAKkD,OAAO,IAAID,OAAO,IAAMO,EAAK,IAAMC,EAAQ,IAAK,KAAM,KAAOG,GAClE5D,KAAKkD,OAAO,IAAID,OAAO,IAAMU,EAAK,IAAMC,EAAQ,IAAK,KAAM,KAAOA,GAElE5D,KAAKsD,SAAS,IAAIL,OAAO,IAAMO,EAAK,IAAMC,EAAQ,IAAK,KAAM,KAAOA,GACpEzD,KAAKsD,SAAS,IAAIL,OAAO,IAAMU,EAAK,IAAMC,EAAQ,IAAK,KAAM,KAAOH,OAC/D,CACL,IAAIK,EAAUjC,EAAO4B,GACjBM,EAAUlC,EAAO+B,GAErB5D,KAAKkD,OAAO,IAAID,OAAOO,EAAGK,cAAgBC,EAAU,KAAMH,EAAGE,cAAgBD,GAC7E5D,KAAKkD,OAAO,IAAID,OAAOO,EAAGV,cAAgBgB,EAAU,KAAMH,EAAGb,cAAgBc,GAC7E5D,KAAKkD,OAAO,IAAID,OAAOU,EAAGE,cAAgBE,EAAU,KAAMJ,EAAGE,cAAgBD,GAC7E5D,KAAKkD,OAAO,IAAID,OAAOU,EAAGb,cAAgBiB,EAAU,KAAMJ,EAAGb,cAAgBc,GAE7E5D,KAAKsD,SAAS,IAAIL,OAAOO,EAAGK,cAAgBC,EAAU,KAAMN,EAAGK,cAAgBJ,GAC/EzD,KAAKsD,SAAS,IAAIL,OAAOO,EAAGV,cAAgBgB,EAAU,KAAMN,EAAGV,cAAgBW,GAC/EzD,KAAKsD,SAAS,IAAIL,OAAOU,EAAGE,cAAgBE,EAAU,KAAMP,EAAGK,cAAgBJ,GAC/EzD,KAAKsD,SAAS,IAAIL,OAAOU,EAAGb,cAAgBiB,EAAU,KAAMP,EAAGV,cAAgBW,EACjF,CACF,EAEA3B,EAAYa,UAAUqB,YAAc,WAClC,IAAIC,EAAQC,MAAMvB,UAAUwB,MAAMC,KAAKC,UAAW,GAClDrE,KAAKiC,aAAejC,KAAKiC,aAAa5B,OAAO4D,EAC/C,EAEAnC,EAAYa,UAAU2B,MAAQ,SAASnB,EAAMC,GAC3CpD,KAAKkC,OAAOmB,QAAQ,CAACF,EAAMC,GAC7B,EAEAtB,EAAYa,UAAU4B,MAAQ,SAASC,GAGvB,SAFdA,EAAQA,GAAS,QAGfxE,KAAK+B,QAAU,GACf/B,KAAKgC,UAAY,GACjBhC,KAAKiC,aAAe,GACpBjC,KAAKkC,OAAS,IAEdlC,KAAKwE,GAAS,EAElB,EAEA9E,EAAOE,QAAUkC,C,6BC3GjB,IAAIA,EAAkB,EAAQ,MAC1B2C,EAAkB,EAAQ,MAC1BC,EAAkB,EAAQ,MAC1BC,EAAkB,EAAQ,MAC1BC,EAAkB,EAAQ,MAE1BC,EAAYH,EAgChB,IAAK,IAAIpC,KA9BTuC,EAAUC,YAAc,SAASxC,EAAQyC,GAQvC,GAPIH,EAAOtC,KACTyC,EAAKzC,EACLA,EAAS,MAGXA,EAASA,GAAU,MAEfyC,EAGF,OAAOjD,EAAYO,YAAYC,GAF/ByC,EAAGjD,EAAYO,YAAYC,GAI/B,EAEAuC,EAAUG,iBAAmB,SAAS1C,EAAQyC,GAQ5C,GAPIH,EAAOtC,KACTyC,EAAKzC,EACLA,EAAS,MAGXA,EAASA,GAAU,MAEfyC,EAGF,OAAON,EAAepC,YAAYC,GAFlCyC,EAAGN,EAAepC,YAAYC,GAIlC,EAEmBqC,EACjBE,EAAUC,YAAYxC,EAAQqC,EAASrC,IAGzC5C,EAAOE,QAAUiF,C,wBC1CjB,IAAIH,EAAU,CACZO,UAAW,SAASpC,EAAMP,GAGxB,OAFAA,EAASA,GAAU,KAEZtC,KAAKkF,kBAAkBrC,EAAM7C,KAAK8E,YAAYxC,GAAQP,QAC/D,EAEAoD,YAAa,SAAStC,EAAMP,GAG1B,OAFAA,EAASA,GAAU,KAEZtC,KAAKkF,kBAAkBrC,EAAM7C,KAAK8E,YAAYxC,GAAQN,UAC/D,EAEAoD,SAAU,SAASC,EAAMC,GACnBA,UACFA,GAAuB,GAGzB,IAAIC,EAAS,GAAKF,EAAMG,EAAOxF,KAiB/B,OAdEuF,EADED,EACOC,EAAOE,QAAQ,aAAa,SAASC,GAC5C,OAAOF,EAAKV,cAAc3C,SAASuD,IAAMF,EAAKG,WAAWD,EAC3D,IAESH,EAAOE,QAAQ,IAAIxC,OAAO,OAASjD,KAAK8E,cAAc1C,aAAawD,OAAS,wBAAwB,SAASF,GACpH,OAAOA,EAAE5C,aACX,KAGc2C,QAAQ,0BAA0B,SAASI,EAAOH,EAAGI,EAAGC,EAAKC,GAE3E,OADAN,IAAMA,EAAI,IACH,GAAKA,GAAKF,EAAKV,cAAc3C,SAAS2D,IAAMN,EAAKG,WAAWG,GACrE,GAGF,EAEAG,WAAY,SAASC,GACnB,IAAIX,EAAS,GAAKW,EAUlB,OAFAX,GADAA,GADAA,GAJAA,EAASA,EAAOE,QAAQ,IAAIxC,OAAO,uBAAyBjD,KAAK8E,cAAc1C,aAAawD,OAAS,kBAAmB,MAAM,SAASC,EAAOM,EAAIC,GAChJ,OAAaD,GAAM,KAAOA,EAAK,IAAM,IAAMC,EAAGtD,aAChD,KAEgB2C,QAAQ,0BAA2B,UACnCA,QAAQ,oBAAqB,UAC7BA,QAAQ,KAAM,MAEhB3C,aAChB,EAEAuD,SAAU,SAASC,EAA6BC,GAC9C,IAEIjC,EAAOnB,EAAMC,EAFbmC,EAAS,GAAKe,EACdpE,EAASlC,KAAK8E,cAAc5C,OAE5BsD,EAAOxF,KAIgB,QAF3BuG,EAAUA,GAAW,CAAC,GAEVZ,iBAA8C7E,IAAvByF,EAAQZ,aACzCY,EAAQZ,YAAa,GAGvB,IAAK,IAAInF,EAAI,EAAGgG,EAAKtE,EAAO5B,OAAQE,EAAIgG,EAAIhG,IAK1C,GAHA2C,GADAmB,EAAQpC,EAAO1B,IACF,GACb4C,EAAckB,EAAM,GAEhBnB,EAAKsD,MAAQtD,EAAKsD,KAAKlB,IAAWA,EAAOmB,QAAQvD,IAAS,EAAG,CAC/DoC,EAASA,EAAOE,QAAQtC,EAAMC,GAC9B,KACF,CAgBF,OAVAmC,GAFAA,GADAA,EAASA,EAAOE,QAAQ,OAAQ,KAChBA,QAAQ,KAAM,MAEdA,QAAQ,gBAAgB,SAASI,GAC/C,OAAOL,EAAKV,cAAc3C,SAAS0D,IAAUA,EAAM/C,aACrD,IAEIyD,EAAQZ,aACVJ,EAASA,EAAOE,QAAQ,OAAO,SAASI,GACtC,OAAOA,EAAMhC,aACf,KAGK0B,CACT,EAEAI,WAAY,SAASgB,GACnB,IAAIpB,EAASoB,QAAoC,GAAKC,OAAOD,GAC7D,OAAOpB,EAAOsB,OAAO,GAAGhD,cAAgB0B,EAAOpB,MAAM,EACvD,EAEA2C,SAAU,SAASjE,GACjB,OAAO7C,KAAKqG,SAASrG,KAAKiG,WAAWpD,IAAO4C,QAAQ,wBAAwB,SAASI,EAAOkB,EAAUC,EAAQjB,EAAKC,GACjH,OAAOH,EAAMJ,QAAQuB,EAAQA,EAAOnD,cACtC,GACF,EAEAoD,SAAU,SAASC,GACjB,OAAOlH,KAAKiF,UAAUjF,KAAKiG,WAAWiB,GACxC,EAEAC,SAAU,SAASC,GACjB,OAAOpH,KAAKoF,SAASpF,KAAKmF,YAAYiC,EAAU3B,QAAQ,QAAS,KACnE,EAEA4B,UAAW,SAASC,GAClB,OAAOA,EAAgB7B,QAAQ,KAAM,IACvC,EAEA8B,WAAY,SAASL,EAAWM,GAK9B,OAJIA,UACFA,GAAyB,GAGpBxH,KAAKiG,WAAWiB,IAAcM,EAAyB,MAAQ,KACxE,EAEAC,QAAS,SAASC,GAChB,IAAIC,EAAYC,KAAKC,IAAIC,OAAOJ,IAC5BK,EAASJ,EAAY,IAEzB,GAAe,KAAXI,GAA4B,KAAXA,GAA4B,KAAXA,EACpC,MAAO,KAEP,OAAQJ,EAAY,IAClB,KAAK,EAAG,MAAO,KACf,KAAK,EAAG,MAAO,KACf,KAAK,EAAG,MAAO,KACf,QAAS,MAAO,KAGtB,EAEAK,WAAY,SAASN,GACnB,MAAO,GAAKA,EAAS1H,KAAKyH,QAAQC,EACpC,EAEAO,cAAe,SAASjC,EAAQO,GAG9B,IAAIjE,GAFJiE,EAAUA,GAAW,CAAC,GAEIjE,QAAU,KAChCc,EAAcmD,EAAQnD,aAAe,IAEzC,OAAOpD,KAAKgF,iBAAiB1C,GAAQ2F,cAAcjC,EAAQ5C,EAC7D,EAEA8E,aAAc,SAASlC,EAAQO,QAGHzF,KAF1ByF,EAAUA,GAAW,CAAC,GAEV4B,YACV5B,EAAQ4B,UAAY,KAGI,OAAtB5B,EAAQ4B,YACV5B,EAAQ4B,UAAY,IAItB,IAAI5C,EAASvF,KAAKiI,cAAcjC,EAAQO,GAIxC,GAFAhB,EAASA,EAAOE,QAAQ,kBAAmBc,EAAQ4B,WAE/C5B,EAAQ4B,UAAU7H,OAAQ,CAC5B,IAAI8H,EAAiB,IAAInF,OAAOsD,EAAQ4B,WAMxC5C,GAHAA,EAASA,EAAOE,QAAQ,IAAIxC,OAAOmF,EAAexC,OAAS,QAASW,EAAQ4B,YAG5D1C,QAAQ,IAAIxC,OAAO,IAAMmF,EAAexC,OAAS,IAAMwC,EAAexC,OAAS,IAAK,KAAM,GAC5G,CAEA,OAAOL,EAAOzC,aAChB,EAEAoC,kBAAmB,SAASrC,EAAMwF,GAChC,IAAwBlF,EAAMmF,EAAOlF,EAAjCmC,EAAS,GAAK1C,EAElB,GAAsB,IAAlB0C,EAAOjF,OACT,OAAOiF,EAEP,IAAIM,EAAQN,EAAOzC,cAAc+C,MAAM,UAEvC,GAAIA,GAAS7F,KAAK8E,cAAc7C,aAAayE,QAAQb,EAAM,KAAO,EAChE,OAAON,EAEP,IAAK,IAAI/E,EAAI,EAAGgG,EAAK6B,EAAM/H,OAAQE,EAAIgG,EAAIhG,IAMzC,GAHA8H,GAFAnF,EAAOkF,EAAM7H,IAEA,GACb4C,EAAcD,EAAK,GAEfoC,EAAOM,MAAMyC,GAAQ,CACvB/C,EAASA,EAAOE,QAAQ6C,EAAOlF,GAC/B,KACF,CAGF,OAAOmC,CAGb,GAGF7F,EAAOE,QAAU8E,C,8BCjNjB,IAAI6D,EAAyB,CAC3B,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,KAC7E,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAC7E,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAC7E,EAAK,IAAO,EAAK,IAAO,IAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAC7E,EAAK,IAAO,EAAK,IAAO,EAAK,KAAO,EAAK,KAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAC7E,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,KAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAC7E,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAC7E,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAC7E,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,KAAO,EAAK,IAC7E,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAC7E,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAC7E,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAC7E,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAC7E,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAC7E,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAC7E,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAC7E,EAAK,IAAO,EAAK,KAAO,EAAK,KAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAC7E,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAC7E,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAC7E,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,KAAO,EAAK,KAAO,EAAK,KACjE,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,IAAO,EAAK,KA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AC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CA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SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,KAAM,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,eAAgB,CAAC,EAAG,YAAa,CAAC,EAAG,yBAA0B,CAAC,EAAG,UAAW,CAAC,EA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","sources":["webpack://root-config/./src/assets/styles/global.style.scss","webpack://root-config/./node_modules/css-loader/dist/runtime/api.js","webpack://root-config/./node_modules/css-loader/dist/runtime/sourceMaps.js","webpack://root-config/./node_modules/inflected/index.js","webpack://root-config/./node_modules/inflected/lib/Inflections.js","webpack://root-config/./node_modules/inflected/lib/Inflector.js","webpack://root-config/./node_modules/inflected/lib/Methods.js","webpack://root-config/./node_modules/inflected/lib/Transliterator.js","webpack://root-config/./node_modules/inflected/lib/defaults.js","webpack://root-config/./node_modules/inflected/lib/hasProp.js","webpack://root-config/./node_modules/inflected/lib/icPart.js","webpack://root-config/./node_modules/inflected/lib/isFunc.js","webpack://root-config/./node_modules/inflected/lib/remove.js","webpack://root-config/./node_modules/jsonapi-serializer/index.js","webpack://root-config/./node_modules/jsonapi-serializer/lib/deserializer-utils.js","webpack://root-config/./node_modules/jsonapi-serializer/lib/deserializer.js","webpack://root-config/./node_modules/jsonapi-serializer/lib/error-utils.js","webpack://root-config/./node_modules/jsonapi-serializer/lib/error.js","webpack://root-config/./node_modules/jsonapi-serializer/lib/inflector.js","webpack://root-config/./node_modules/jsonapi-serializer/lib/serializer-utils.js","webpack://root-config/./node_modules/jsonapi-serializer/lib/serializer.js","webpack://root-config/./node_modules/lodash/_DataView.js","webpack://root-config/./node_modules/lodash/_Hash.js","webpack://root-config/./node_modules/lodash/_ListCache.js","webpack://root-config/./node_modules/lodash/_Map.js","webpack://root-config/./node_modules/lodash/_MapCache.js","webpack://root-config/./node_modules/lodash/_Promise.js","webpack://root-config/./node_modules/lodash/_Set.js","webpack://root-config/./node_modules/lodash/_SetCache.js","webpack://root-config/./node_modules/lodash/_Stack.js","webpack://root-config/./node_modules/lodash/_Symbol.js","webpack://root-config/./node_modules/lodash/_Uint8Array.js","webpack://root-config/./node_modules/lodash/_WeakMap.js","webpack://root-config/./node_modules/lodash/_apply.js","webpack://root-config/./node_modules/lodash/_arrayEach.js","webpack://root-config/./node_modules/lodash/_arrayFilter.js","webpack://root-config/./node_modules/lodash/_arrayLikeKeys.js","webpack://root-config/./node_modules/lodash/_arrayMap.js","webpack://root-config/./node_modules/lodash/_arrayPush.js","webpack://root-config/./node_modules/lodash/_arraySome.js","webpack://root-config/./node_modules/lodash/_assignMergeValue.js","webpack://root-config/./node_modules/lodash/_assignValue.js","webpack://root-config/./node_modules/lodash/_assocIndexOf.js","webpack://root-config/./node_modules/lodash/_baseAssignValue.js","webpack://root-config/./node_modules/lodash/_baseCreate.js","webpack://root-config/./node_modules/lodash/_baseEach.js","webpack://root-config/./node_modules/lodash/_baseFindIndex.js","webpack://root-config/./node_modules/lodash/_baseFlatten.js","webpack://root-config/./node_modules/lodash/_baseFor.js","webpack://root-config/./node_modules/lodash/_baseForOwn.js","webpack://root-config/./node_modules/lodash/_baseGet.js","webpack://root-config/./node_modules/lodash/_baseGetAllKeys.js","webpack://root-config/./node_modules/lodash/_baseGetTag.js","webpack://root-config/./node_modules/lodash/_baseHasIn.js","webpack://root-config/./node_modules/lodash/_baseIsArguments.js","webpack://root-config/./node_modules/lodash/_baseIsEqual.js","webpack://root-config/./node_modules/lodash/_baseIsEqualDeep.js","webpack://root-config/./node_modules/lodash/_baseIsMatch.js","webpack://root-config/./node_modules/lodash/_baseIsNative.js","webpack://root-config/./node_modules/lodash/_baseIsTypedArray.js","webpack://root-config/./node_modules/lodash/_baseIteratee.js","webpack://root-config/./node_modules/lodash/_baseKeys.js","webpack://root-config/./node_modules/lodash/_baseKeysIn.js","webpack://root-config/./node_modules/lodash/_baseMatches.js","webpack://root-config/./node_modules/lodash/_baseMatchesProperty.js","webpack://root-config/./node_modules/lodash/_baseMerge.js","webpack://root-config/./node_modules/lodash/_baseMergeDeep.js","webpack://root-config/./node_modules/lodash/_basePick.js","webpack://root-config/./node_modules/lodash/_basePickBy.js","webpack://root-config/./node_modules/lodash/_baseProperty.js","webpack://root-config/./node_modules/lodash/_basePropertyDeep.js","webpack://root-config/./node_modules/lodash/_baseRest.js","webpack://root-config/./node_modules/lodash/_baseSet.js","webpack://root-config/./node_modules/lodash/_baseSetToString.js","webpack://root-config/./node_modules/lodash/_baseTimes.js","webpack://root-config/./node_modules/lodash/_baseToString.js","webpack://root-config/./node_modules/lodash/_baseTrim.js","webpack://root-config/./node_modules/lodash/_baseUnary.js","webpack://root-config/./node_modules/lodash/_cacheHas.js","webpack://root-config/./node_modules/lodash/_castFunction.js","webpack://root-config/./node_modules/lodash/_castPath.js","webpack://root-config/./node_modules/lodash/_cloneArrayBuffer.js","webpack://root-config/./node_modules/lodash/_cloneBuffer.js","webpack://root-config/./node_modules/lodash/_cloneTypedArray.js","webpack://root-config/./node_modules/lodash/_copyArray.js","webpack://root-config/./node_modules/lodash/_copyObject.js","webpack://root-config/./node_modules/lodash/_coreJsData.js","webpack://root-config/./node_modules/lodash/_createAssigner.js","webpack://root-config/./node_modules/lodash/_createBaseEach.js","webpack://root-config/./node_modules/lodash/_createBaseFor.js","webpack://root-config/./node_modules/lodash/_createFind.js","webpack://root-config/./node_modules/lodash/_defineProperty.js","webpack://root-config/./node_modules/lodash/_equalArrays.js","webpack://root-config/./node_modules/lodash/_equalByTag.js","webpack://root-config/./node_modules/lodash/_equalObjects.js","webpack://root-config/./node_modules/lodash/_flatRest.js","webpack://root-config/./node_modules/lodash/_freeGlobal.js","webpack://root-config/./node_modules/lodash/_getAllKeys.js","webpack://root-config/./node_modules/lodash/_getAllKeysIn.js","webpack://root-config/./node_modules/lodash/_getMapData.js","webpack://root-config/./node_modules/lodash/_getMatchData.js","webpack://root-config/./node_modules/lodash/_getNative.js","webpack://root-config/./node_modules/lodash/_getPrototype.js","webpack://root-config/./node_modules/lodash/_getRawTag.js","webpack://root-config/./node_modules/lodash/_getSymbols.js","webpack://root-config/./node_modules/lodash/_getSymbolsIn.js","webpack://root-config/./node_modules/lodash/_getTag.js","webpack://root-config/./node_modules/lodash/_getValue.js","webpack://root-config/./node_modules/lodash/_hasPath.js","webpack://root-config/./node_modules/lodash/_hashClear.js","webpack://root-config/./node_modules/lodash/_hashDelete.js","webpack://root-config/./node_modules/lodash/_hashGet.js","webpack://root-config/./node_modules/lodash/_hashHas.js","webpack://root-config/./node_modules/lodash/_hashSet.js","webpack://root-config/./node_modules/lodash/_initCloneObject.js","webpack://root-config/./node_modules/lodash/_isFlattenable.js","webpack://root-config/./node_modules/lodash/_isIndex.js","webpack://root-config/./node_modules/lodash/_isIterateeCall.js","webpack://root-config/./node_modules/lodash/_isKey.js","webpack://root-config/./node_modules/lodash/_isKeyable.js","webpack://root-config/./node_modules/lodash/_isMasked.js","webpack://root-config/./node_modules/lodash/_isPrototype.js","webpack://root-config/./node_modules/lodash/_isStrictComparable.js","webpack://root-config/./node_modules/lodash/_listCacheClear.js","webpack://root-config/./node_modules/lodash/_listCacheDelete.js","webpack://root-config/./node_modules/lodash/_listCacheGet.js","webpack://root-config/./node_modules/lodash/_listCacheHas.js","webpack://root-config/./node_modules/lodash/_listCacheSet.js","webpack://root-config/./node_modules/lodash/_mapCacheClear.js","webpack://root-config/./node_modules/lodash/_mapCacheDelete.js","webpack://root-config/./node_modules/lodash/_mapCacheGet.js","webpack://root-config/./node_modules/lodash/_mapCacheHas.js","webpack://root-config/./node_modules/lodash/_mapCacheSet.js","webpack://root-config/./node_modules/lodash/_mapToArray.js","webpack://root-config/./node_modules/lodash/_matchesStrictComparable.js","webpack://root-config/./node_modules/lodash/_memoizeCapped.js","webpack://root-config/./node_modules/lodash/_nativeCreate.js","webpack://root-config/./node_modules/lodash/_nativeKeys.js","webpack://root-config/./node_modules/lodash/_nativeKeysIn.js","webpack://root-config/./node_modules/lodash/_nodeUtil.js","webpack://root-config/./node_modules/lodash/_objectToString.js","webpack://root-config/./node_modules/lodash/_overArg.js","webpack://root-config/./node_modules/lodash/_overRest.js","webpack://root-config/./node_modules/lodash/_root.js","webpack://root-config/./node_modules/lodash/_safeGet.js","webpack://root-config/./node_modules/lodash/_setCacheAdd.js","webpack://root-config/./node_modules/lodash/_setCacheHas.js","webpack://root-config/./node_modules/lodash/_setToArray.js","webpack://root-config/./node_modules/lodash/_setToString.js","webpack://root-config/./node_modules/lodash/_shortOut.js","webpack://root-config/./node_modules/lodash/_stackClear.js","webpack://root-config/./node_modules/lodash/_stackDelete.js","webpack://root-config/./node_modules/lodash/_stackGet.js","webpack://root-config/./node_modules/lodash/_stackHas.js","webpack://root-config/./node_modules/lodash/_stackSet.js","webpack://root-config/./node_modules/lodash/_stringToPath.js","webpack://root-config/./node_modules/lodash/_toKey.js","webpack://root-config/./node_modules/lodash/_toSource.js","webpack://root-config/./node_modules/lodash/_trimmedEndIndex.js","webpack://root-config/./node_modules/lodash/assignIn.js","webpack://root-config/./node_modules/lodash/constant.js","webpack://root-config/./node_modules/lodash/each.js","webpack://root-config/./node_modules/lodash/eq.js","webpack://root-config/./node_modules/lodash/extend.js","webpack://root-config/./node_modules/lodash/find.js","webpack://root-config/./node_modules/lodash/findIndex.js","webpack://root-config/./node_modules/lodash/flatten.js","webpack://root-config/./node_modules/lodash/forEach.js","webpack://root-config/./node_modules/lodash/get.js","webpack://root-config/./node_modules/lodash/hasIn.js","webpack://root-config/./node_modules/lodash/identity.js","webpack://root-config/./node_modules/lodash/isArguments.js","webpack://root-config/./node_modules/lodash/isArray.js","webpack://root-config/./node_modules/lodash/isArrayLike.js","webpack://root-config/./node_modules/lodash/isArrayLikeObject.js","webpack://root-config/./node_modules/lodash/isBuffer.js","webpack://root-config/./node_modules/lodash/isFunction.js","webpack://root-config/./node_modules/lodash/isLength.js","webpack://root-config/./node_modules/lodash/isNil.js","webpack://root-config/./node_modules/lodash/isObject.js","webpack://root-config/./node_modules/lodash/isObjectLike.js","webpack://root-config/./node_modules/lodash/isPlainObject.js","webpack://root-config/./node_modules/lodash/isSymbol.js","webpack://root-config/./node_modules/lodash/isTypedArray.js","webpack://root-config/./node_modules/lodash/keys.js","webpack://root-config/./node_modules/lodash/keysIn.js","webpack://root-config/./node_modules/lodash/mapKeys.js","webpack://root-config/./node_modules/lodash/mapValues.js","webpack://root-config/./node_modules/lodash/memoize.js","webpack://root-config/./node_modules/lodash/merge.js","webpack://root-config/./node_modules/lodash/pick.js","webpack://root-config/./node_modules/lodash/pickBy.js","webpack://root-config/./node_modules/lodash/property.js","webpack://root-config/./node_modules/lodash/stubArray.js","webpack://root-config/./node_modules/lodash/stubFalse.js","webpack://root-config/./node_modules/lodash/toFinite.js","webpack://root-config/./node_modules/lodash/toInteger.js","webpack://root-config/./node_modules/lodash/toNumber.js","webpack://root-config/./node_modules/lodash/toPlainObject.js","webpack://root-config/./node_modules/lodash/toString.js","webpack://root-config/./node_modules/lodash/transform.js","webpack://root-config/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://root-config/./node_modules/style-loader/dist/runtime/insertBySelector.js","webpack://root-config/./node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack://root-config/./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack://root-config/./node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack://root-config/./node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack://root-config/./node_modules/systemjs-webpack-interop/auto-public-path/auto-public-path.js","webpack://root-config/./node_modules/systemjs-webpack-interop/public-path.js","webpack://root-config/external system \"single-spa\"","webpack://root-config/webpack/bootstrap","webpack://root-config/webpack/runtime/__system_context__","webpack://root-config/webpack/runtime/compat get default export","webpack://root-config/webpack/runtime/define property getters","webpack://root-config/webpack/runtime/global","webpack://root-config/webpack/runtime/hasOwnProperty shorthand","webpack://root-config/webpack/runtime/make namespace object","webpack://root-config/webpack/runtime/node module decorator","webpack://root-config/webpack/runtime/publicPath","webpack://root-config/webpack/runtime/nonce","webpack://root-config/./node_modules/systemjs-webpack-interop/auto-public-path/1.js","webpack://root-config/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://root-config/./src/assets/styles/global.style.scss?1098","webpack://root-config/./node_modules/@auth0/auth0-spa-js/dist/auth0-spa-js.production.esm.js","webpack://root-config/./node_modules/jwt-decode/build/jwt-decode.esm.js","webpack://root-config/./node_modules/@ubits/library-enums/dist/index.js","webpack://root-config/./node_modules/@ubits/library-core/dist/index.js","webpack://root-config/./src/record.application.ts","webpack://root-config/./src/resources.data.ts","webpack://root-config/./src/router/router.list.ts","webpack://root-config/./src/services/appcues.service.ts","webpack://root-config/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://root-config/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://root-config/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://root-config/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://root-config/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://root-config/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://root-config/./src/services/data-layer/data-layer.track.ts","webpack://root-config/./node_modules/@ubits/library-events-track/dist/index.js","webpack://root-config/./src/services/data-layer/data-layer.directive.ts","webpack://root-config/./src/services/data-layer/data-layer.service.ts","webpack://root-config/./src/services/data-layer/data-layer.provider.ts","webpack://root-config/./src/services/homepage.service.ts","webpack://root-config/./node_modules/mdurl/lib/decode.mjs","webpack://root-config/./node_modules/mdurl/lib/encode.mjs","webpack://root-config/./node_modules/mdurl/lib/format.mjs","webpack://root-config/./node_modules/mdurl/lib/parse.mjs","webpack://root-config/./node_modules/uc.micro/categories/P/regex.mjs","webpack://root-config/./node_modules/uc.micro/properties/Any/regex.mjs","webpack://root-config/./node_modules/uc.micro/categories/Cc/regex.mjs","webpack://root-config/./node_modules/uc.micro/categories/Cf/regex.mjs","webpack://root-config/./node_modules/uc.micro/categories/Z/regex.mjs","webpack://root-config/./node_modules/markdown-it/node_modules/entities/lib/esm/generated/decode-data-html.js","webpack://root-config/./node_modules/markdown-it/node_modules/entities/lib/esm/generated/decode-data-xml.js","webpack://root-config/./node_modules/markdown-it/node_modules/entities/lib/esm/decode_codepoint.js","webpack://root-config/./node_modules/markdown-it/node_modules/entities/lib/esm/decode.js","webpack://root-config/./node_modules/markdown-it/node_modules/entities/lib/esm/generated/encode-html.js","webpack://root-config/./node_modules/markdown-it/node_modules/entities/lib/esm/escape.js","webpack://root-config/./node_modules/markdown-it/node_modules/entities/lib/esm/index.js","webpack://root-config/./node_modules/markdown-it/lib/common/utils.mjs","webpack://root-config/./node_modules/markdown-it/lib/helpers/parse_link_label.mjs","webpack://root-config/./node_modules/markdown-it/lib/helpers/parse_link_destination.mjs","webpack://root-config/./node_modules/markdown-it/lib/helpers/parse_link_title.mjs","webpack://root-config/./node_modules/markdown-it/lib/renderer.mjs","webpack://root-config/./node_modules/markdown-it/lib/ruler.mjs","webpack://root-config/./node_modules/markdown-it/lib/token.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_core/state_core.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_core/normalize.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_core/linkify.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_core/replacements.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_core/smartquotes.mjs","webpack://root-config/./node_modules/markdown-it/lib/parser_core.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_core/block.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_core/inline.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_core/text_join.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_block/state_block.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_block/table.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_block/list.mjs","webpack://root-config/./node_modules/markdown-it/lib/common/html_blocks.mjs","webpack://root-config/./node_modules/markdown-it/lib/common/html_re.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_block/html_block.mjs","webpack://root-config/./node_modules/markdown-it/lib/parser_block.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_block/code.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_block/fence.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_block/blockquote.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_block/hr.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_block/reference.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_block/heading.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_block/lheading.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_block/paragraph.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_inline/state_inline.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_inline/text.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_inline/linkify.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_inline/escape.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_inline/strikethrough.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_inline/emphasis.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_inline/autolink.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_inline/entity.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_inline/balance_pairs.mjs","webpack://root-config/./node_modules/markdown-it/lib/parser_inline.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_inline/newline.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_inline/backticks.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_inline/link.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_inline/image.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_inline/html_inline.mjs","webpack://root-config/./node_modules/markdown-it/lib/rules_inline/fragments_join.mjs","webpack://root-config/./node_modules/linkify-it/index.mjs","webpack://root-config/./node_modules/linkify-it/lib/re.mjs","webpack://root-config/./node_modules/punycode.js/punycode.es6.js","webpack://root-config/./node_modules/markdown-it/lib/index.mjs","webpack://root-config/./node_modules/markdown-it/lib/presets/default.mjs","webpack://root-config/./node_modules/markdown-it/lib/presets/zero.mjs","webpack://root-config/./node_modules/markdown-it/lib/presets/commonmark.mjs","webpack://root-config/./node_modules/markdown-it-emoji/lib/data/shortcuts.mjs","webpack://root-config/./node_modules/markdown-it-emoji/lib/data/full.mjs","webpack://root-config/./node_modules/markdown-it-emoji/lib/render.mjs","webpack://root-config/./node_modules/markdown-it-emoji/lib/full.mjs","webpack://root-config/./node_modules/markdown-it-emoji/lib/bare.mjs","webpack://root-config/./node_modules/markdown-it-emoji/lib/normalize_opts.mjs","webpack://root-config/./node_modules/markdown-it-emoji/lib/replace.mjs","webpack://root-config/./node_modules/i18next/dist/esm/i18next.js","webpack://root-config/./node_modules/@ubits/library-internationalization/dist/index.js","webpack://root-config/./src/utils/store-temporarily.ts","webpack://root-config/./src/services/internationalization.service.ts","webpack://root-config/./src/services/logout.service.ts","webpack://root-config/./src/services/session.manager.ts","webpack://root-config/./src/router/router.service.ts","webpack://root-config/./src/utils/load-resources.ts","webpack://root-config/./src/ubits-mf-root-config.ts","webpack://root-config/./src/config/environment.ts","webpack://root-config/./src/utils/dependencies.ts","webpack://root-config/./src/register.application.ts","webpack://root-config/./src/scripts/footer-tyc-event-listener.ts","webpack://root-config/./src/scripts/ubits-manager-content-scroll.ts","webpack://root-config/./src/services/refresh-lms.service.ts"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `html,body{display:table;margin:0;padding:0;border:0;outline:0;overflow:auto;height:100%;width:100%;position:relative;box-sizing:border-box;-webkit-overflow-scrolling:touch;scroll-behavior:smooth;z-index:1024}html ::-webkit-scrollbar,body ::-webkit-scrollbar{width:8px;height:8px}html ::-webkit-scrollbar-button,body ::-webkit-scrollbar-button{width:0;height:0}html ::-webkit-scrollbar-thumb,body ::-webkit-scrollbar-thumb{background:var(--element5);border-radius:5px}html ::-webkit-scrollbar-thumb:hover,body ::-webkit-scrollbar-thumb:hover{background:var(--element4)}html ::-webkit-scrollbar-thumb:active,body ::-webkit-scrollbar-thumb:active{background:var(--element4)}html ::-webkit-scrollbar-track,body ::-webkit-scrollbar-track{background:var(--element1);border-radius:5px}html ::-webkit-scrollbar-track:hover,body ::-webkit-scrollbar-track:hover{background:var(--element1)}html ::-webkit-scrollbar-track:active,body ::-webkit-scrollbar-track:active{background:var(--element1)}html ::-webkit-scrollbar-corner,body ::-webkit-scrollbar-corner{background:rgba(0,0,0,0)}.application{display:contents;position:relative}*,*::before,*::after{box-sizing:inherit}* ::-webkit-scrollbar,*::before ::-webkit-scrollbar,*::after ::-webkit-scrollbar{width:8px;height:8px}* ::-webkit-scrollbar-button,*::before ::-webkit-scrollbar-button,*::after ::-webkit-scrollbar-button{width:0;height:0}* ::-webkit-scrollbar-thumb,*::before ::-webkit-scrollbar-thumb,*::after ::-webkit-scrollbar-thumb{background:var(--element5);border-radius:5px}* ::-webkit-scrollbar-thumb:hover,*::before ::-webkit-scrollbar-thumb:hover,*::after ::-webkit-scrollbar-thumb:hover{background:var(--element4)}* ::-webkit-scrollbar-thumb:active,*::before ::-webkit-scrollbar-thumb:active,*::after ::-webkit-scrollbar-thumb:active{background:var(--element4)}* ::-webkit-scrollbar-track,*::before ::-webkit-scrollbar-track,*::after ::-webkit-scrollbar-track{background:var(--element1);border-radius:5px}* ::-webkit-scrollbar-track:hover,*::before ::-webkit-scrollbar-track:hover,*::after ::-webkit-scrollbar-track:hover{background:var(--element1)}* ::-webkit-scrollbar-track:active,*::before ::-webkit-scrollbar-track:active,*::after ::-webkit-scrollbar-track:active{background:var(--element1)}* ::-webkit-scrollbar-corner,*::before ::-webkit-scrollbar-corner,*::after ::-webkit-scrollbar-corner{background:rgba(0,0,0,0)}:root{--sat: env(safe-area-inset-top)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/assets/styles/_reset.scss\",\"webpack://./src/assets/styles/global.style.scss\"],\"names\":[],\"mappings\":\"AA4CA,UAEE,aAAA,CAEA,QAAA,CACA,SAAA,CACA,QAAA,CACA,SAAA,CACA,aAAA,CAEA,WAAA,CACA,UAAA,CAEA,iBAAA,CAEA,qBAAA,CACA,gCAAA,CACA,sBAAA,CACA,YAAA,CA3DA,kDACE,SAHU,CAIV,UAJU,CAOZ,gEACE,OAAA,CACA,QAAA,CAGF,8DACE,0BAAA,CACA,iBAAA,CAGF,0EACE,0BAAA,CAGF,4EACE,0BAAA,CAGF,8DACE,0BAAA,CACA,iBAAA,CAGF,0EACE,0BAAA,CAGF,4EACE,0BAAA,CAGF,gEACE,wBAAA,CA2BJ,aACE,gBAAA,CACA,iBAAA,CAGF,qBAGE,kBAAA,CAxEA,iFACE,SAHU,CAIV,UAJU,CAOZ,sGACE,OAAA,CACA,QAAA,CAGF,mGACE,0BAAA,CACA,iBAAA,CAGF,qHACE,0BAAA,CAGF,wHACE,0BAAA,CAGF,mGACE,0BAAA,CACA,iBAAA,CAGF,qHACE,0BAAA,CAGF,wHACE,0BAAA,CAGF,sGACE,wBAAA,CCrCJ,MACE,+BAAA\",\"sourcesContent\":[\"@mixin scrollbar() {\\n $scrollbar: 8px;\\n\\n ::-webkit-scrollbar {\\n width: $scrollbar;\\n height: $scrollbar;\\n }\\n\\n ::-webkit-scrollbar-button {\\n width: 0;\\n height: 0;\\n }\\n\\n ::-webkit-scrollbar-thumb {\\n background: var(--element5);\\n border-radius: 5px;\\n }\\n\\n ::-webkit-scrollbar-thumb:hover {\\n background: var(--element4);\\n }\\n\\n ::-webkit-scrollbar-thumb:active {\\n background: var(--element4);\\n }\\n\\n ::-webkit-scrollbar-track {\\n background: var(--element1);\\n border-radius: 5px;\\n }\\n\\n ::-webkit-scrollbar-track:hover {\\n background: var(--element1);\\n }\\n\\n ::-webkit-scrollbar-track:active {\\n background: var(--element1);\\n }\\n\\n ::-webkit-scrollbar-corner {\\n background: transparent;\\n }\\n}\\n\\nhtml,\\nbody {\\n display: table;\\n\\n margin: 0;\\n padding: 0;\\n border: 0;\\n outline: 0;\\n overflow: auto;\\n\\n height: 100%;\\n width: 100%;\\n\\n position: relative;\\n\\n box-sizing: border-box;\\n -webkit-overflow-scrolling: touch;\\n scroll-behavior: smooth;\\n z-index: 1024;\\n\\n @include scrollbar();\\n}\\n\\n.application {\\n display: contents;\\n position: relative;\\n}\\n\\n*,\\n*::before,\\n*::after {\\n box-sizing: inherit;\\n @include scrollbar();\\n}\\n\",\"//components\\n@import './_reset.scss';\\n\\n:root {\\n --sat: env(safe-area-inset-top);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n if (!cssMapping) {\n return content;\n }\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n return [content].concat([sourceMapping]).join(\"\\n\");\n }\n return [content].join(\"\\n\");\n};","\"use strict\";\n\nmodule.exports = require('./lib/Inflector');\n","'use strict';\n\nvar hasProp = require('./hasProp');\nvar remove = require('./remove');\nvar icPart = require('./icPart');\n\nfunction Inflections() {\n this.plurals = [];\n this.singulars = [];\n this.uncountables = [];\n this.humans = [];\n this.acronyms = {};\n this.acronymRegex = /(?=a)b/;\n}\n\nInflections.getInstance = function(locale) {\n var storage = typeof process !== 'undefined' ? process : global;\n storage.__Inflector_Inflections = storage.__Inflector_Inflections || {};\n storage.__Inflector_Inflections[locale] = storage.__Inflector_Inflections[locale] || new Inflections();\n\n return storage.__Inflector_Inflections[locale];\n};\n\nInflections.prototype.acronym = function(word) {\n this.acronyms[word.toLowerCase()] = word;\n\n var values = [];\n\n for (var key in this.acronyms) {\n if (hasProp(this.acronyms, key)) {\n values.push(this.acronyms[key]);\n }\n }\n\n this.acronymRegex = new RegExp(values.join('|'));\n};\n\nInflections.prototype.plural = function(rule, replacement) {\n if (typeof rule === 'string') {\n remove(this.uncountables, rule);\n }\n\n remove(this.uncountables, replacement);\n this.plurals.unshift([rule, replacement]);\n};\n\nInflections.prototype.singular = function(rule, replacement) {\n if (typeof rule === 'string') {\n remove(this.uncountables, rule);\n }\n\n remove(this.uncountables, replacement);\n this.singulars.unshift([rule, replacement]);\n};\n\nInflections.prototype.irregular = function(singular, plural) {\n remove(this.uncountables, singular);\n remove(this.uncountables, plural);\n\n var s0 = singular[0];\n var sRest = singular.substr(1);\n\n var p0 = plural[0];\n var pRest = plural.substr(1);\n\n if (s0.toUpperCase() === p0.toUpperCase()) {\n this.plural(new RegExp('(' + s0 + ')' + sRest + '$', 'i'), '$1' + pRest);\n this.plural(new RegExp('(' + p0 + ')' + pRest + '$', 'i'), '$1' + pRest);\n\n this.singular(new RegExp('(' + s0 + ')' + sRest + '$', 'i'), '$1' + sRest);\n this.singular(new RegExp('(' + p0 + ')' + pRest + '$', 'i'), '$1' + sRest);\n } else {\n var sRestIC = icPart(sRest);\n var pRestIC = icPart(pRest);\n\n this.plural(new RegExp(s0.toUpperCase() + sRestIC + '$'), p0.toUpperCase() + pRest);\n this.plural(new RegExp(s0.toLowerCase() + sRestIC + '$'), p0.toLowerCase() + pRest);\n this.plural(new RegExp(p0.toUpperCase() + pRestIC + '$'), p0.toUpperCase() + pRest);\n this.plural(new RegExp(p0.toLowerCase() + pRestIC + '$'), p0.toLowerCase() + pRest);\n\n this.singular(new RegExp(s0.toUpperCase() + sRestIC + '$'), s0.toUpperCase() + sRest);\n this.singular(new RegExp(s0.toLowerCase() + sRestIC + '$'), s0.toLowerCase() + sRest);\n this.singular(new RegExp(p0.toUpperCase() + pRestIC + '$'), s0.toUpperCase() + sRest);\n this.singular(new RegExp(p0.toLowerCase() + pRestIC + '$'), s0.toLowerCase() + sRest);\n }\n};\n\nInflections.prototype.uncountable = function() {\n var words = Array.prototype.slice.call(arguments, 0);\n this.uncountables = this.uncountables.concat(words);\n};\n\nInflections.prototype.human = function(rule, replacement) {\n this.humans.unshift([rule, replacement]);\n};\n\nInflections.prototype.clear = function(scope) {\n scope = scope || 'all';\n\n if (scope === 'all') {\n this.plurals = [];\n this.singulars = [];\n this.uncountables = [];\n this.humans = [];\n } else {\n this[scope] = [];\n }\n};\n\nmodule.exports = Inflections;\n","'use strict';\n\nvar Inflections = require('./Inflections');\nvar Transliterator = require('./Transliterator');\nvar Methods = require('./Methods');\nvar defaults = require('./defaults');\nvar isFunc = require('./isFunc');\n\nvar Inflector = Methods;\n\nInflector.inflections = function(locale, fn) {\n if (isFunc(locale)) {\n fn = locale;\n locale = null;\n }\n\n locale = locale || 'en';\n\n if (fn) {\n fn(Inflections.getInstance(locale));\n } else {\n return Inflections.getInstance(locale);\n }\n};\n\nInflector.transliterations = function(locale, fn) {\n if (isFunc(locale)) {\n fn = locale;\n locale = null;\n }\n\n locale = locale || 'en';\n\n if (fn) {\n fn(Transliterator.getInstance(locale));\n } else {\n return Transliterator.getInstance(locale);\n }\n}\n\nfor (var locale in defaults) {\n Inflector.inflections(locale, defaults[locale]);\n}\n\nmodule.exports = Inflector;\n","'use strict';\n\nvar Methods = {\n pluralize: function(word, locale) {\n locale = locale || 'en';\n\n return this._applyInflections(word, this.inflections(locale).plurals);\n },\n\n singularize: function(word, locale) {\n locale = locale || 'en';\n\n return this._applyInflections(word, this.inflections(locale).singulars);\n },\n\n camelize: function(term, uppercaseFirstLetter) {\n if (uppercaseFirstLetter === null || uppercaseFirstLetter === undefined) {\n uppercaseFirstLetter = true;\n }\n\n var result = '' + term, self = this;\n\n if (uppercaseFirstLetter) {\n result = result.replace(/^[a-z\\d]*/, function(a) {\n return self.inflections().acronyms[a] || self.capitalize(a);\n });\n } else {\n result = result.replace(new RegExp('^(?:' + this.inflections().acronymRegex.source + '(?=\\\\b|[A-Z_])|\\\\w)'), function(a) {\n return a.toLowerCase();\n });\n }\n\n result = result.replace(/(?:_|(\\/))([a-z\\d]*)/gi, function(match, a, b, idx, string) {\n a || (a = '');\n return '' + a + (self.inflections().acronyms[b] || self.capitalize(b));\n });\n\n return result;\n },\n\n underscore: function(camelCasedWord) {\n var result = '' + camelCasedWord;\n\n result = result.replace(new RegExp('(?:([A-Za-z\\\\d])|^)(' + this.inflections().acronymRegex.source + ')(?=\\\\b|[^a-z])', 'g'), function(match, $1, $2) {\n return '' + ($1 || '') + ($1 ? '_' : '') + $2.toLowerCase();\n });\n\n result = result.replace(/([A-Z\\d]+)([A-Z][a-z])/g, '$1_$2');\n result = result.replace(/([a-z\\d])([A-Z])/g, '$1_$2');\n result = result.replace(/-/g, '_');\n\n return result.toLowerCase();\n },\n\n humanize: function(lowerCaseAndUnderscoredWord, options) {\n var result = '' + lowerCaseAndUnderscoredWord;\n var humans = this.inflections().humans;\n var human, rule, replacement;\n var self = this;\n\n options = options || {};\n\n if (options.capitalize === null || options.capitalize === undefined) {\n options.capitalize = true;\n }\n\n for (var i = 0, ii = humans.length; i < ii; i++) {\n human = humans[i];\n rule = human[0];\n replacement = human[1];\n\n if (rule.test && rule.test(result) || result.indexOf(rule) > -1) {\n result = result.replace(rule, replacement);\n break;\n }\n }\n\n result = result.replace(/_id$/, '');\n result = result.replace(/_/g, ' ');\n\n result = result.replace(/([a-z\\d]*)/gi, function(match) {\n return self.inflections().acronyms[match] || match.toLowerCase();\n });\n\n if (options.capitalize) {\n result = result.replace(/^\\w/, function(match) {\n return match.toUpperCase();\n });\n }\n\n return result;\n },\n\n capitalize: function(str) {\n var result = str === null || str === undefined ? '' : String(str);\n return result.charAt(0).toUpperCase() + result.slice(1);\n },\n\n titleize: function(word) {\n return this.humanize(this.underscore(word)).replace(/(^|[\\s¿\\/]+)([a-z])/g, function(match, boundary, letter, idx, string) {\n return match.replace(letter, letter.toUpperCase());\n });\n },\n\n tableize: function(className) {\n return this.pluralize(this.underscore(className));\n },\n\n classify: function(tableName) {\n return this.camelize(this.singularize(tableName.replace(/.*\\./g, '')));\n },\n\n dasherize: function(underscoredWord) {\n return underscoredWord.replace(/_/g, '-');\n },\n\n foreignKey: function(className, separateWithUnderscore) {\n if (separateWithUnderscore === null || separateWithUnderscore === undefined) {\n separateWithUnderscore = true;\n }\n\n return this.underscore(className) + (separateWithUnderscore ? '_id' : 'id');\n },\n\n ordinal: function(number) {\n var absNumber = Math.abs(Number(number));\n var mod100 = absNumber % 100;\n\n if (mod100 === 11 || mod100 === 12 || mod100 === 13) {\n return 'th';\n } else {\n switch (absNumber % 10) {\n case 1: return 'st';\n case 2: return 'nd';\n case 3: return 'rd';\n default: return 'th';\n }\n }\n },\n\n ordinalize: function(number) {\n return '' + number + this.ordinal(number);\n },\n\n transliterate: function(string, options) {\n options = options || {};\n\n var locale = options.locale || 'en';\n var replacement = options.replacement || '?';\n\n return this.transliterations(locale).transliterate(string, replacement);\n },\n\n parameterize: function(string, options) {\n options = options || {};\n\n if (options.separator === undefined) {\n options.separator = '-';\n }\n\n if (options.separator === null) {\n options.separator = '';\n }\n\n // replace accented chars with their ascii equivalents\n var result = this.transliterate(string, options);\n\n result = result.replace(/[^a-z0-9\\-_]+/ig, options.separator);\n\n if (options.separator.length) {\n var separatorRegex = new RegExp(options.separator);\n\n // no more than one of the separator in a row\n result = result.replace(new RegExp(separatorRegex.source + '{2,}'), options.separator);\n\n // remove leading/trailing separator\n result = result.replace(new RegExp('^' + separatorRegex.source + '|' + separatorRegex.source + '$', 'i'), '');\n }\n\n return result.toLowerCase();\n },\n\n _applyInflections: function(word, rules) {\n var result = '' + word, rule, regex, replacement;\n\n if (result.length === 0) {\n return result;\n } else {\n var match = result.toLowerCase().match(/\\b\\w+$/);\n\n if (match && this.inflections().uncountables.indexOf(match[0]) > -1) {\n return result;\n } else {\n for (var i = 0, ii = rules.length; i < ii; i++) {\n rule = rules[i];\n\n regex = rule[0];\n replacement = rule[1];\n\n if (result.match(regex)) {\n result = result.replace(regex, replacement);\n break;\n }\n }\n\n return result;\n }\n }\n }\n};\n\nmodule.exports = Methods;\n","'use strict';\n\nvar DEFAULT_APPROXIMATIONS = {\n 'À': 'A', 'Á': 'A', 'Â': 'A', 'Ã': 'A', 'Ä': 'A', 'Å': 'A', 'Æ': 'AE',\n 'Ç': 'C', 'È': 'E', 'É': 'E', 'Ê': 'E', 'Ë': 'E', 'Ì': 'I', 'Í': 'I',\n 'Î': 'I', 'Ï': 'I', 'Ð': 'D', 'Ñ': 'N', 'Ò': 'O', 'Ó': 'O', 'Ô': 'O',\n 'Õ': 'O', 'Ö': 'O', '×': 'x', 'Ø': 'O', 'Ù': 'U', 'Ú': 'U', 'Û': 'U',\n 'Ü': 'U', 'Ý': 'Y', 'Þ': 'Th', 'ß': 'ss', 'à': 'a', 'á': 'a', 'â': 'a',\n 'ã': 'a', 'ä': 'a', 'å': 'a', 'æ': 'ae', 'ç': 'c', 'è': 'e', 'é': 'e',\n 'ê': 'e', 'ë': 'e', 'ì': 'i', 'í': 'i', 'î': 'i', 'ï': 'i', 'ð': 'd',\n 'ñ': 'n', 'ò': 'o', 'ó': 'o', 'ô': 'o', 'õ': 'o', 'ö': 'o', 'ø': 'o',\n 'ù': 'u', 'ú': 'u', 'û': 'u', 'ü': 'u', 'ý': 'y', 'þ': 'th', 'ÿ': 'y',\n 'Ā': 'A', 'ā': 'a', 'Ă': 'A', 'ă': 'a', 'Ą': 'A', 'ą': 'a', 'Ć': 'C',\n 'ć': 'c', 'Ĉ': 'C', 'ĉ': 'c', 'Ċ': 'C', 'ċ': 'c', 'Č': 'C', 'č': 'c',\n 'Ď': 'D', 'ď': 'd', 'Đ': 'D', 'đ': 'd', 'Ē': 'E', 'ē': 'e', 'Ĕ': 'E',\n 'ĕ': 'e', 'Ė': 'E', 'ė': 'e', 'Ę': 'E', 'ę': 'e', 'Ě': 'E', 'ě': 'e',\n 'Ĝ': 'G', 'ĝ': 'g', 'Ğ': 'G', 'ğ': 'g', 'Ġ': 'G', 'ġ': 'g', 'Ģ': 'G',\n 'ģ': 'g', 'Ĥ': 'H', 'ĥ': 'h', 'Ħ': 'H', 'ħ': 'h', 'Ĩ': 'I', 'ĩ': 'i',\n 'Ī': 'I', 'ī': 'i', 'Ĭ': 'I', 'ĭ': 'i', 'Į': 'I', 'į': 'i', 'İ': 'I',\n 'ı': 'i', 'IJ': 'IJ', 'ij': 'ij', 'Ĵ': 'J', 'ĵ': 'j', 'Ķ': 'K', 'ķ': 'k',\n 'ĸ': 'k', 'Ĺ': 'L', 'ĺ': 'l', 'Ļ': 'L', 'ļ': 'l', 'Ľ': 'L', 'ľ': 'l',\n 'Ŀ': 'L', 'ŀ': 'l', 'Ł': 'L', 'ł': 'l', 'Ń': 'N', 'ń': 'n', 'Ņ': 'N',\n 'ņ': 'n', 'Ň': 'N', 'ň': 'n', 'ʼn': '\\'n', 'Ŋ': 'NG', 'ŋ': 'ng',\n 'Ō': 'O', 'ō': 'o', 'Ŏ': 'O', 'ŏ': 'o', 'Ő': 'O', 'ő': 'o', 'Œ': 'OE',\n 'œ': 'oe', 'Ŕ': 'R', 'ŕ': 'r', 'Ŗ': 'R', 'ŗ': 'r', 'Ř': 'R', 'ř': 'r',\n 'Ś': 'S', 'ś': 's', 'Ŝ': 'S', 'ŝ': 's', 'Ş': 'S', 'ş': 's', 'Š': 'S',\n 'š': 's', 'Ţ': 'T', 'ţ': 't', 'Ť': 'T', 'ť': 't', 'Ŧ': 'T', 'ŧ': 't',\n 'Ũ': 'U', 'ũ': 'u', 'Ū': 'U', 'ū': 'u', 'Ŭ': 'U', 'ŭ': 'u', 'Ů': 'U',\n 'ů': 'u', 'Ű': 'U', 'ű': 'u', 'Ų': 'U', 'ų': 'u', 'Ŵ': 'W', 'ŵ': 'w',\n 'Ŷ': 'Y', 'ŷ': 'y', 'Ÿ': 'Y', 'Ź': 'Z', 'ź': 'z', 'Ż': 'Z', 'ż': 'z',\n 'Ž': 'Z', 'ž': 'z'\n};\n\nvar DEFAULT_REPLACEMENT_CHAR = '?';\n\nfunction Transliterator() {\n this.approximations = {};\n\n for (var c in DEFAULT_APPROXIMATIONS) {\n this.approximate(c, DEFAULT_APPROXIMATIONS[c]);\n }\n}\n\nTransliterator.getInstance = function(locale) {\n var storage = typeof process !== 'undefined' ? process : global;\n storage.__Inflector_Transliterator = storage.__Inflector_Transliterator || {};\n storage.__Inflector_Transliterator[locale] = storage.__Inflector_Transliterator[locale] || new Transliterator();\n\n return storage.__Inflector_Transliterator[locale];\n};\n\nTransliterator.prototype.approximate = function(string, replacement) {\n this.approximations[string] = replacement;\n};\n\nTransliterator.prototype.transliterate = function(string, replacement) {\n var self = this;\n\n return string.replace(/[^\\u0000-\\u007f]/g, function(c) {\n return self.approximations[c] || replacement || DEFAULT_REPLACEMENT_CHAR;\n });\n};\n\nmodule.exports = Transliterator;\n","'use strict';\n\nfunction enDefaults(inflect) {\n inflect.plural(/$/, 's');\n inflect.plural(/s$/i, 's');\n inflect.plural(/^(ax|test)is$/i, '$1es');\n inflect.plural(/(octop|vir)us$/i, '$1i');\n inflect.plural(/(octop|vir)i$/i, '$1i');\n inflect.plural(/(alias|status)$/i, '$1es');\n inflect.plural(/(bu)s$/i, '$1ses');\n inflect.plural(/(buffal|tomat)o$/i, '$1oes');\n inflect.plural(/([ti])um$/i, '$1a');\n inflect.plural(/([ti])a$/i, '$1a');\n inflect.plural(/sis$/i, 'ses');\n inflect.plural(/(?:([^f])fe|([lr])f)$/i, '$1$2ves');\n inflect.plural(/(hive)$/i, '$1s');\n inflect.plural(/([^aeiouy]|qu)y$/i, '$1ies');\n inflect.plural(/(x|ch|ss|sh)$/i, '$1es');\n inflect.plural(/(matr|vert|ind)(?:ix|ex)$/i, '$1ices');\n inflect.plural(/^(m|l)ouse$/i, '$1ice');\n inflect.plural(/^(m|l)ice$/i, '$1ice');\n inflect.plural(/^(ox)$/i, '$1en');\n inflect.plural(/^(oxen)$/i, '$1');\n inflect.plural(/(quiz)$/i, '$1zes');\n\n inflect.singular(/s$/i, '');\n inflect.singular(/(ss)$/i, '$1');\n inflect.singular(/(n)ews$/i, '$1ews');\n inflect.singular(/([ti])a$/i, '$1um');\n inflect.singular(/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)(sis|ses)$/i, '$1sis');\n inflect.singular(/(^analy)(sis|ses)$/i, '$1sis');\n inflect.singular(/([^f])ves$/i, '$1fe');\n inflect.singular(/(hive)s$/i, '$1');\n inflect.singular(/(tive)s$/i, '$1');\n inflect.singular(/([lr])ves$/i, '$1f');\n inflect.singular(/([^aeiouy]|qu)ies$/i, '$1y');\n inflect.singular(/(s)eries$/i, '$1eries');\n inflect.singular(/(m)ovies$/i, '$1ovie');\n inflect.singular(/(x|ch|ss|sh)es$/i, '$1');\n inflect.singular(/^(m|l)ice$/i, '$1ouse');\n inflect.singular(/(bus)(es)?$/i, '$1');\n inflect.singular(/(o)es$/i, '$1');\n inflect.singular(/(shoe)s$/i, '$1');\n inflect.singular(/(cris|test)(is|es)$/i, '$1is');\n inflect.singular(/^(a)x[ie]s$/i, '$1xis');\n inflect.singular(/(octop|vir)(us|i)$/i, '$1us');\n inflect.singular(/(alias|status)(es)?$/i, '$1');\n inflect.singular(/^(ox)en/i, '$1');\n inflect.singular(/(vert|ind)ices$/i, '$1ex');\n inflect.singular(/(matr)ices$/i, '$1ix');\n inflect.singular(/(quiz)zes$/i, '$1');\n inflect.singular(/(database)s$/i, '$1');\n\n inflect.irregular('person', 'people');\n inflect.irregular('man', 'men');\n inflect.irregular('child', 'children');\n inflect.irregular('sex', 'sexes');\n inflect.irregular('move', 'moves');\n inflect.irregular('zombie', 'zombies');\n\n inflect.uncountable('equipment', 'information', 'rice', 'money', 'species', 'series', 'fish', 'sheep', 'jeans', 'police');\n}\n\nmodule.exports = {\n en: enDefaults\n};\n","'use strict';\n\nvar hasOwnProp = Object.prototype.hasOwnProperty;\n\nfunction hasProp(obj, key) {\n return hasOwnProp.call(obj, key);\n}\n\nmodule.exports = hasProp;\n","'use strict';\n\nfunction icPart(str) {\n return str.split('').map(function(c) { return '(?:' + [c.toUpperCase(), c.toLowerCase()].join('|') + ')'; }).join('')\n}\n\nmodule.exports = icPart;\n","'use strict';\n\nvar toString = Object.prototype.toString;\n\nfunction isFunc(obj) {\n return toString.call(obj) === '[object Function]';\n}\n\nmodule.exports = isFunc;\n","'use strict';\n\nvar splice = Array.prototype.splice;\n\nfunction remove(arr, elem) {\n for (var i = arr.length - 1; i >= 0; i--) {\n if (arr[i] === elem) {\n splice.call(arr, i, 1);\n }\n }\n}\n\nmodule.exports = remove;\n","module.exports = {\n Serializer: require('./lib/serializer'),\n Deserializer: require('./lib/deserializer'),\n Error: require('./lib/error'),\n};\n","'use strict';\nvar isPlainObject = require('lodash/isPlainObject');\nvar isFunction = require('lodash/isFunction');\nvar _find = require('lodash/find');\nvar _extend = require('lodash/extend');\nvar _transform = require('lodash/transform');\nvar Inflector = require('./inflector');\n\nmodule.exports = function (jsonapi, data, opts) {\n var alreadyIncluded = [];\n\n function isComplexType(obj) {\n return Array.isArray(obj) || isPlainObject(obj);\n }\n\n function getValueForRelationship(relationshipData, included) {\n if (opts && relationshipData && opts[relationshipData.type]) {\n var valueForRelationshipFct = opts[relationshipData.type]\n .valueForRelationship;\n\n return valueForRelationshipFct(relationshipData, included);\n } else {\n return included;\n }\n }\n\n function findIncluded(relationshipData, ancestry) {\n return new Promise(function (resolve) {\n if (!jsonapi.included || !relationshipData) { resolve(null); }\n\n var included = _find(jsonapi.included, {\n id: relationshipData.id,\n type: relationshipData.type\n });\n\n if (included) {\n // To prevent circular references, check if the record type\n // has already been processed in this thread\n if (ancestry.indexOf(included.type) > -1) {\n return Promise\n .all([extractAttributes(included)])\n .then(function (results) {\n var attributes = results[0];\n var relationships = results[1];\n resolve(_extend(attributes, relationships));\n });\n }\n\n return Promise\n .all([extractAttributes(included), extractRelationships(included, ancestry + ':' + included.type + included.id)])\n .then(function (results) {\n var attributes = results[0];\n var relationships = results[1];\n resolve(_extend(attributes, relationships));\n });\n } else {\n return resolve(null);\n }\n });\n }\n\n function keyForAttribute(attribute) {\n if (isPlainObject(attribute)) {\n return _transform(attribute, function (result, value, key) {\n if (isComplexType(value)) {\n result[keyForAttribute(key)] = keyForAttribute(value);\n } else {\n result[keyForAttribute(key)] = value;\n }\n });\n } else if (Array.isArray(attribute)) {\n return attribute.map(function (attr) {\n if (isComplexType(attr)) {\n return keyForAttribute(attr);\n } else {\n return attr;\n }\n });\n } else {\n if (isFunction(opts.keyForAttribute)) {\n return opts.keyForAttribute(attribute);\n } else {\n return Inflector.caserize(attribute, opts);\n }\n }\n }\n\n function extractAttributes(from) {\n var dest = keyForAttribute(from.attributes || {});\n if ('id' in from) { dest[opts.id || 'id'] = from.id; }\n\n if (opts.typeAsAttribute) {\n if ('type' in from) { dest.type = from.type; }\n }\n if ('meta' in from) { dest.meta = keyForAttribute(from.meta || {}) }\n\n return dest;\n }\n\n function extractRelationships(from, ancestry) {\n if (!from.relationships) { return; }\n\n var dest = {};\n\n return Promise\n .all(Object.keys(from.relationships).map(function (key) {\n var relationship = from.relationships[key];\n\n if (relationship.data === null) {\n dest[keyForAttribute(key)] = null;\n } else if (Array.isArray(relationship.data)) {\n return Promise\n .all(relationship.data.map(function (relationshipData) {\n return extractIncludes(relationshipData, ancestry);\n }))\n .then(function (includes) {\n if (includes) { dest[keyForAttribute(key)] = includes; }\n });\n } else {\n return extractIncludes(relationship.data, ancestry)\n .then(function (includes) {\n if (includes) { dest[keyForAttribute(key)] = includes; }\n });\n }\n }))\n .then(function() {\n return dest;\n });\n }\n\n function extractIncludes(relationshipData, ancestry) {\n return findIncluded(relationshipData, ancestry)\n .then(function (included) {\n var valueForRelationship = getValueForRelationship(relationshipData,\n included);\n\n if (valueForRelationship && isFunction(valueForRelationship.then)) {\n return valueForRelationship.then(function (value) {\n return value;\n });\n } else {\n return valueForRelationship;\n }\n });\n }\n\n this.perform = function () {\n return Promise\n .all([extractAttributes(data), extractRelationships(data, data.type + data.id)])\n .then(function (results) {\n var attributes = results[0];\n var relationships = results[1];\n var record = _extend(attributes, relationships);\n\n // Links\n if (jsonapi.links) {\n record.links = jsonapi.links;\n }\n\n // If option is present, transform record\n if (opts && opts.transform) {\n record = opts.transform(record);\n }\n\n return record;\n });\n };\n};\n","'use strict';\nvar isFunction = require('lodash/isFunction');\nvar DeserializerUtils = require('./deserializer-utils');\n\nmodule.exports = function (opts) {\n if (!opts) { opts = {}; }\n\n this.deserialize = function (jsonapi, callback) {\n function collection() {\n return Promise\n .all(jsonapi.data.map(function (d) {\n return new DeserializerUtils(jsonapi, d, opts).perform();\n }))\n .then(function (result) {\n if (isFunction(callback)) {\n callback(null, result);\n }\n\n return result\n });\n }\n\n function resource() {\n return new DeserializerUtils(jsonapi, jsonapi.data, opts)\n .perform()\n .then(function (result) {\n if (isFunction(callback)) {\n callback(null, result);\n }\n\n return result\n });\n }\n\n if (Array.isArray(jsonapi.data)) {\n return collection();\n } else {\n return resource();\n }\n };\n};\n","'use strict';\n\nmodule.exports = function (errors) {\n var jsonapi = {\n errors: []\n };\n\n errors.forEach(function (error) {\n var opts = {};\n\n if (error.id) { opts.id = error.id; }\n if (error.status) { opts.status = error.status; }\n if (error.code) { opts.code = error.code; }\n if (error.title) { opts.title = error.title; }\n if (error.detail) { opts.detail = error.detail; }\n\n if (error.source) {\n opts.source = {};\n\n if (error.source.pointer) {\n opts.source.pointer = error.source.pointer;\n }\n\n if (error.source.parameter) {\n opts.source.parameter = error.source.parameter;\n }\n }\n\n if (error.links) {\n opts.links = { about: error.links.about };\n }\n\n if (error.meta) {\n opts.meta = error.meta;\n }\n\n jsonapi.errors.push(opts);\n });\n\n return jsonapi;\n};\n","'use strict';\nvar ErrorUtils = require('./error-utils');\n\nmodule.exports = function (opts) {\n if (!opts) { opts = []; }\n\n if (Array.isArray(opts)) {\n return new ErrorUtils(opts);\n } else {\n return new ErrorUtils([opts]);\n }\n};\n\n","'use strict';\nvar Inflector = require('inflected');\n\nmodule.exports = {\n caserize: function (attribute, opts) {\n attribute = Inflector.underscore(attribute);\n\n switch (opts.keyForAttribute) {\n case 'dash-case':\n case 'lisp-case':\n case 'spinal-case':\n case 'kebab-case':\n return Inflector.dasherize(attribute);\n case 'underscore_case':\n case 'snake_case':\n return attribute;\n case 'CamelCase':\n return Inflector.camelize(attribute);\n case 'camelCase':\n return Inflector.camelize(attribute, false);\n default:\n return Inflector.dasherize(attribute);\n }\n },\n pluralize: function (type) {\n return Inflector.pluralize(type);\n }\n};\n","'use strict';\nvar isPlainObject = require('lodash/isPlainObject');\nvar isFunction = require('lodash/isFunction');\nvar _merge = require('lodash/merge');\nvar _identity = require('lodash/identity');\nvar _transform = require('lodash/transform');\nvar _mapValues = require('lodash/mapValues');\nvar _mapKeys = require('lodash/mapKeys');\nvar _pick = require('lodash/pick');\nvar _pickBy = require('lodash/pickBy');\nvar _each = require('lodash/each');\nvar _isNil = require('lodash/isNil');\nvar Inflector = require('./inflector');\n\nmodule.exports = function (collectionName, record, payload, opts, includedSet) {\n function isComplexType(obj) {\n return Array.isArray(obj) || isPlainObject(obj);\n }\n\n function transformFunction(result, value, key) {\n if (isComplexType(value)) {\n result[keyForAttribute(key)] = keyForAttribute(value);\n } else {\n result[keyForAttribute(key)] = value;\n }\n }\n\n function attributeFunction(attr) {\n if (isComplexType(attr)) {\n return keyForAttribute(attr);\n } else {\n return attr;\n }\n }\n\n const keyForAttributeFunction = isFunction(opts.keyForAttribute)\n ? opts.keyForAttribute\n : (attribute) => Inflector.caserize(attribute, opts);\n\n function keyForAttribute(attribute) {\n if (isPlainObject(attribute)) {\n return _transform(attribute, transformFunction);\n } else if (Array.isArray(attribute)) {\n return attribute.map(attributeFunction);\n } else {\n return keyForAttributeFunction(attribute);\n }\n }\n\n function getId() {\n return opts.id || 'id';\n }\n\n function getRef(current, item, opts) {\n if (isFunction(opts.ref)) {\n return opts.ref(current, item);\n } else if (opts.ref === true) {\n if (Array.isArray(item)) {\n return item.map(function (val) {\n return String(val);\n });\n } else if (item) {\n return String(item);\n }\n } else if (item && item[opts.ref]){\n return String(item[opts.ref]);\n }\n }\n\n function getType(str, attrVal) {\n var type;\n attrVal = attrVal || {};\n\n if (isFunction(opts.typeForAttribute)) {\n type = opts.typeForAttribute(str, attrVal);\n }\n\n // If the pluralize option is on, typeForAttribute returned undefined or wasn't used\n if ((opts.pluralizeType === undefined || opts.pluralizeType) && type === undefined) {\n type = Inflector.pluralize(str);\n }\n\n if (type === undefined) {\n type = str;\n }\n\n return type;\n }\n\n function getLinks(current, links, dest) {\n return _mapValues(links, function (value) {\n if (isFunction(value)) {\n return value(record, current, dest);\n } else {\n return value;\n }\n });\n }\n\n function getMeta(current, meta) {\n if (isFunction(meta)) {\n return meta(record);\n } else {\n return _mapValues(meta, function (value) {\n if (isFunction(value)) {\n return value(record, current);\n } else {\n return value;\n }\n });\n }\n }\n\n function pickFunction (value, key) {\n return keyForAttribute(key);\n }\n\n function pick(obj, attributes) {\n return _mapKeys(_pick(obj, attributes), pickFunction);\n }\n\n function isCompoundDocumentIncluded(setKey) {\n return includedSet.get(setKey);\n }\n\n function pushToIncluded(payload, item) {\n const setKey = `${item.type}-${item.id}`;\n var included = isCompoundDocumentIncluded(setKey);\n if (included) {\n // Merge relationships\n included.relationships = _merge(included.relationships,\n _pickBy(item.relationships, _identity));\n\n // Merge attributes\n included.attributes = _merge(included.attributes,\n _pickBy(item.attributes, _identity));\n } else {\n if (!payload.included) { payload.included = []; }\n includedSet.set(setKey, item);\n payload.included.push(item);\n }\n }\n\n this.serialize = function (dest, current, attribute, opts) {\n var data = null;\n\n if (opts && opts.ref) {\n if (!dest.relationships) { dest.relationships = {}; }\n\n if (Array.isArray(current[attribute])) {\n data = current[attribute].map((item) => this.serializeRef(item, current, attribute, opts));\n } else {\n data = this.serializeRef(current[attribute], current, attribute,\n opts);\n }\n\n dest.relationships[keyForAttribute(attribute)] = {};\n if (!opts.ignoreRelationshipData) {\n dest.relationships[keyForAttribute(attribute)].data = data;\n }\n\n if (opts.relationshipLinks) {\n var links = getLinks(current[attribute], opts.relationshipLinks, dest);\n if (links.related) {\n dest.relationships[keyForAttribute(attribute)].links = links;\n }\n }\n\n if (opts.relationshipMeta) {\n dest.relationships[keyForAttribute(attribute)].meta =\n getMeta(current[attribute], opts.relationshipMeta);\n }\n } else {\n if (Array.isArray(current[attribute])) {\n if (current[attribute].length && isPlainObject(current[attribute][0])) {\n data = current[attribute].map((item) => this.serializeNested(item, current, attribute, opts));\n } else {\n data = current[attribute];\n }\n\n dest.attributes[keyForAttribute(attribute)] = data;\n } else if (isPlainObject(current[attribute])) {\n data = this.serializeNested(current[attribute], current, attribute, opts);\n dest.attributes[keyForAttribute(attribute)] = data;\n } else {\n dest.attributes[keyForAttribute(attribute)] = current[attribute];\n }\n }\n };\n\n this.serializeRef = function (dest, current, attribute, opts) {\n var id = getRef(current, dest, opts);\n var type = getType(attribute, dest);\n\n var relationships = [];\n var includedAttrs = [];\n\n if (opts.attributes) {\n if (dest) {\n opts.attributes.forEach(function (attr) {\n if (opts[attr] && !dest[attr] && opts[attr].nullIfMissing) {\n dest[attr] = null;\n }\n });\n }\n relationships = opts.attributes.filter(function (attr) {\n return opts[attr];\n });\n\n includedAttrs = opts.attributes.filter(function (attr) {\n return !opts[attr];\n });\n }\n\n var included = { type: type, id: id };\n if (includedAttrs) { included.attributes = pick(dest, includedAttrs); }\n\n const relationShipsFunction = (relationship) => {\n if (dest && (isComplexType(dest[relationship]) || dest[relationship] === null)) {\n this.serialize(included, dest, relationship, opts[relationship]);\n }\n }\n relationships.forEach(relationShipsFunction);\n\n if (includedAttrs.length &&\n (opts.included === undefined || opts.included)) {\n if (opts.includedLinks) {\n included.links = getLinks(dest, opts.includedLinks);\n }\n\n if (typeof id !== 'undefined') { pushToIncluded(payload, included); }\n }\n\n return typeof id !== 'undefined' ? { type: type, id: id } : null;\n };\n\n this.serializeNested = function (dest, current, attribute, opts) {\n var embeds = [];\n var attributes = [];\n\n var ret = {};\n if (opts && opts.attributes) {\n embeds = opts.attributes.filter(function (attr) {\n return opts[attr];\n });\n\n attributes = opts.attributes.filter(function (attr) {\n return !opts[attr];\n });\n\n if (attributes) { ret.attributes = pick(dest, attributes); }\n\n const embedsFunction = (embed) => {\n if (isComplexType(dest[embed])) {\n this.serialize(ret, dest, embed, opts[embed]);\n }\n }\n embeds.forEach(embedsFunction);\n } else {\n ret.attributes = dest;\n }\n\n return ret.attributes;\n };\n\n this.perform = function () {\n if( record === null ){\n return null;\n }\n\n // If option is present, transform record\n if (opts && opts.transform) {\n record = opts.transform(record);\n }\n\n // Top-level data.\n var data = { type: getType(collectionName, record) };\n if (!_isNil(record[getId()])) { data.id = String(record[getId()]); }\n\n // Data links.\n if (opts.dataLinks) {\n data.links = getLinks(record, opts.dataLinks);\n }\n\n // Data meta\n if (opts.dataMeta) {\n data.meta = getMeta(record, opts.dataMeta);\n }\n\n _each(opts.attributes, (attribute) => {\n var splittedAttributes = attribute.split(':');\n\n if (opts[attribute] && !record[attribute] && opts[attribute].nullIfMissing) {\n record[attribute] = null;\n }\n\n if (splittedAttributes[0] in record) {\n if (!data.attributes) { data.attributes = {}; }\n\n var attributeMap = attribute;\n if (splittedAttributes.length > 1) {\n attribute = splittedAttributes[0];\n attributeMap = splittedAttributes[1];\n }\n\n this.serialize(data, record, attribute, opts[attributeMap]);\n }\n });\n\n return data;\n };\n};\n","'use strict';\nvar isFunction = require('lodash/isFunction');\nvar _mapValues = require('lodash/mapValues');\nvar SerializerUtils = require('./serializer-utils');\n\nmodule.exports = function (collectionName, records, opts) {\n this.serialize = function (records) {\n var that = this;\n var payload = {};\n const includedSet = new Map();\n\n function getLinksFunction(value) {\n if (isFunction(value)) {\n return value(records);\n } else {\n return value;\n }\n }\n\n function getLinks(links) {\n return _mapValues(links, getLinksFunction);\n }\n\n function collection() {\n payload.data = [];\n\n records.forEach(function (record) {\n var serializerUtils = new SerializerUtils(that.collectionName, record,\n payload, that.opts, includedSet);\n payload.data.push(serializerUtils.perform());\n });\n\n return payload;\n }\n\n function resource() {\n payload.data = new SerializerUtils(that.collectionName, records, payload,\n that.opts, includedSet).perform(records);\n\n return payload;\n }\n\n if (that.opts.topLevelLinks) {\n payload.links = getLinks(that.opts.topLevelLinks);\n }\n\n if (that.opts.meta) {\n payload.meta = _mapValues(that.opts.meta, function (value) {\n if (isFunction(value)) {\n return value(records);\n } else {\n return value;\n }\n });\n }\n\n if (Array.isArray(records)) {\n return collection(records);\n } else {\n return resource(records);\n }\n };\n\n if (arguments.length === 3) {\n // legacy behavior\n this.collectionName = collectionName;\n this.opts = opts;\n return this.serialize(records);\n } else {\n // treat as a reusable serializer\n this.collectionName = collectionName;\n this.opts = records;\n }\n};\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","var basePickBy = require('./_basePickBy'),\n hasIn = require('./hasIn');\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n}\n\nmodule.exports = basePick;\n","var baseGet = require('./_baseGet'),\n baseSet = require('./_baseSet'),\n castPath = require('./_castPath');\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nmodule.exports = basePickBy;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var identity = require('./identity');\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nmodule.exports = castFunction;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var baseIteratee = require('./_baseIteratee'),\n isArrayLike = require('./isArrayLike'),\n keys = require('./keys');\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nmodule.exports = createFind;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","var flatten = require('./flatten'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var copyObject = require('./_copyObject'),\n createAssigner = require('./_createAssigner'),\n keysIn = require('./keysIn');\n\n/**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\nvar assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n});\n\nmodule.exports = assignIn;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","module.exports = require('./forEach');\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","module.exports = require('./assignIn');\n","var createFind = require('./_createFind'),\n findIndex = require('./findIndex');\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nmodule.exports = find;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIteratee = require('./_baseIteratee'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","var arrayEach = require('./_arrayEach'),\n baseEach = require('./_baseEach'),\n castFunction = require('./_castFunction'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\nmodule.exports = forEach;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n return value == null;\n}\n\nmodule.exports = isNil;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\nfunction mapKeys(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n}\n\nmodule.exports = mapKeys;\n","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nmodule.exports = mapValues;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","var basePick = require('./_basePick'),\n flatRest = require('./_flatRest');\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n});\n\nmodule.exports = pick;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n basePickBy = require('./_basePickBy'),\n getAllKeysIn = require('./_getAllKeysIn');\n\n/**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\nfunction pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = baseIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n}\n\nmodule.exports = pickBy;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var arrayEach = require('./_arrayEach'),\n baseCreate = require('./_baseCreate'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee'),\n getPrototype = require('./_getPrototype'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isTypedArray = require('./isTypedArray');\n\n/**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\nfunction transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = baseIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n}\n\nmodule.exports = transform;\n","\"use strict\";\n\nvar stylesInDOM = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n\n return updater;\n}\n\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n\n stylesInDOM.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n/* istanbul ignore next */\n\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n}\n/* istanbul ignore next */\n\n\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n}\n\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\n\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\n\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n\n var needLayer = typeof obj.layer !== \"undefined\";\n\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n\n css += obj.css;\n\n if (needLayer) {\n css += \"}\";\n }\n\n if (obj.media) {\n css += \"}\";\n }\n\n if (obj.supports) {\n css += \"}\";\n }\n\n var sourceMap = obj.sourceMap;\n\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n options.styleTagTransform(css, styleElement, options.options);\n}\n\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n\n styleElement.parentNode.removeChild(styleElement);\n}\n/* istanbul ignore next */\n\n\nfunction domAPI(options) {\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\n\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n\n styleElement.appendChild(document.createTextNode(css));\n }\n}\n\nmodule.exports = styleTagTransform;","const resolveDirectory = require(\"../public-path\").resolveDirectory;\n\nexports.autoPublicPath = function autoPublicPath(rootDirLevel) {\n if (!rootDirLevel) {\n rootDirLevel = 1;\n }\n\n if (typeof __webpack_public_path__ !== \"undefined\") {\n if (typeof __system_context__ === \"undefined\") {\n throw Error(\n \"systemjs-webpack-interop requires webpack@>=5.0.0-beta.15 and output.libraryTarget set to 'system'\"\n );\n }\n\n if (!__system_context__.meta || !__system_context__.meta.url) {\n console.error(\"__system_context__\", __system_context__);\n throw Error(\n \"systemjs-webpack-interop was provided an unknown SystemJS context. Expected context.meta.url, but none was provided\"\n );\n }\n\n __webpack_public_path__ = resolveDirectory(\n __system_context__.meta.url,\n rootDirLevel\n );\n }\n};\n","exports.setPublicPath = function setPublicPath(\n systemjsModuleName,\n rootDirectoryLevel\n) {\n if (!rootDirectoryLevel) {\n rootDirectoryLevel = 1;\n }\n if (\n typeof systemjsModuleName !== \"string\" ||\n systemjsModuleName.trim().length === 0\n ) {\n throw Error(\n \"systemjs-webpack-interop: setPublicPath(systemjsModuleName) must be called with a non-empty string 'systemjsModuleName'\"\n );\n }\n\n if (\n typeof rootDirectoryLevel !== \"number\" ||\n rootDirectoryLevel <= 0 ||\n isNaN(rootDirectoryLevel) ||\n !isInteger(rootDirectoryLevel)\n ) {\n throw Error(\n \"systemjs-webpack-interop: setPublicPath(systemjsModuleName, rootDirectoryLevel) must be called with a positive integer 'rootDirectoryLevel'\"\n );\n }\n\n var moduleUrl;\n try {\n moduleUrl = window.System.resolve(systemjsModuleName);\n if (!moduleUrl) {\n throw Error();\n }\n } catch (err) {\n throw Error(\n \"systemjs-webpack-interop: There is no such module '\" +\n systemjsModuleName +\n \"' in the SystemJS registry. Did you misspell the name of your module?\"\n );\n }\n\n __webpack_public_path__ = resolveDirectory(moduleUrl, rootDirectoryLevel);\n};\n\nfunction resolveDirectory(urlString, rootDirectoryLevel) {\n // Our friend IE11 doesn't support new URL()\n // https://github.com/single-spa/single-spa/issues/612\n // https://gist.github.com/jlong/2428561\n\n var a = document.createElement(\"a\");\n a.href = urlString;\n\n var pathname = a.pathname[0] === \"/\" ? a.pathname : \"/\" + a.pathname;\n var numDirsProcessed = 0,\n index = pathname.length;\n while (numDirsProcessed !== rootDirectoryLevel && index >= 0) {\n var char = pathname[--index];\n if (char === \"/\") {\n numDirsProcessed++;\n }\n }\n\n if (numDirsProcessed !== rootDirectoryLevel) {\n throw Error(\n \"systemjs-webpack-interop: rootDirectoryLevel (\" +\n rootDirectoryLevel +\n \") is greater than the number of directories (\" +\n numDirsProcessed +\n \") in the URL path \" +\n urlString\n );\n }\n\n var finalPath = pathname.slice(0, index + 1);\n\n return a.protocol + \"//\" + a.host + finalPath;\n}\n\nexports.resolveDirectory = resolveDirectory;\n\n// borrowed from https://github.com/parshap/js-is-integer/blob/master/index.js\nvar isInteger =\n Number.isInteger ||\n function isInteger(val) {\n return typeof val === \"number\" && isFinite(val) && Math.floor(val) === val;\n };\n","module.exports = __WEBPACK_EXTERNAL_MODULE__1496__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.y = __system_context__;","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"\";","__webpack_require__.nc = undefined;","const autoPublicPath = require(\"./auto-public-path\").autoPublicPath;\n\nautoPublicPath(1);\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[8].use[2]!./global.style.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[8].use[2]!./global.style.scss\";\n export default content && content.locals ? content.locals : undefined;\n","function e(e,t){var i={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(i[o]=e[o]);if(null!=e&&\"function\"==typeof Object.getOwnPropertySymbols){var n=0;for(o=Object.getOwnPropertySymbols(e);n0&&n[n.length-1])||6!==a[0]&&2!==a[0])){r=0;continue}if(3===a[0]&&(!n||a[1]>n[0]&&a[1]0?setTimeout(i,t):i(null)}}window.addEventListener(\"storage\",r),e.addToWaiting(r);var s=setTimeout(r,Math.max(0,t-Date.now()))}))];case 1:return i.sent(),[2]}}))}))},e.addToWaiting=function(t){this.removeFromWaiting(t),void 0!==e.waiters&&e.waiters.push(t)},e.removeFromWaiting=function(t){void 0!==e.waiters&&(e.waiters=e.waiters.filter((function(e){return e!==t})))},e.notifyWaiters=function(){void 0!==e.waiters&&e.waiters.slice().forEach((function(e){return e()}))},e.prototype.releaseLock=function(e){return o(this,void 0,void 0,(function(){return a(this,(function(t){switch(t.label){case 0:return[4,this.releaseLock__private__(e)];case 1:return[2,t.sent()]}}))}))},e.prototype.releaseLock__private__=function(t){return o(this,void 0,void 0,(function(){var i,o,r,d;return a(this,(function(a){switch(a.label){case 0:return i=void 0===this.storageHandler?c:this.storageHandler,o=s+\"-\"+t,null===(r=i.getItemSync(o))?[2]:(d=JSON.parse(r)).id!==this.id?[3,2]:[4,n.default().lock(d.iat)];case 1:a.sent(),this.acquiredIatSet.delete(d.iat),i.removeItemSync(o),n.default().unlock(d.iat),e.notifyWaiters(),a.label=2;case 2:return[2]}}))}))},e.lockCorrector=function(t){for(var i=Date.now()-5e3,o=t,n=[],a=0;;){var r=o.keySync(a);if(null===r)break;n.push(r),a++}for(var c=!1,d=0;dDate.now();class d extends Error{constructor(e,t){super(t),this.error=e,this.error_description=t,Object.setPrototypeOf(this,d.prototype)}static fromPayload({error:e,error_description:t}){return new d(e,t)}}class u extends d{constructor(e,t,i,o=null){super(e,t),this.state=i,this.appState=o,Object.setPrototypeOf(this,u.prototype)}}class l extends d{constructor(){super(\"timeout\",\"Timeout\"),Object.setPrototypeOf(this,l.prototype)}}class h extends l{constructor(e){super(),this.popup=e,Object.setPrototypeOf(this,h.prototype)}}class p extends d{constructor(e){super(\"cancelled\",\"Popup closed\"),this.popup=e,Object.setPrototypeOf(this,p.prototype)}}class m extends d{constructor(e,t,i){super(e,t),this.mfa_token=i,Object.setPrototypeOf(this,m.prototype)}}class f extends d{constructor(e,t){super(\"missing_refresh_token\",`Missing Refresh Token (audience: '${g(e,[\"default\"])}', scope: '${g(t)}')`),this.audience=e,this.scope=t,Object.setPrototypeOf(this,f.prototype)}}function g(e,t=[]){return e&&!t.includes(e)?e:\"\"}const w=()=>window.crypto,y=()=>{const e=\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_~.\";let t=\"\";return Array.from(w().getRandomValues(new Uint8Array(43))).forEach((i=>t+=e[i%e.length])),t},k=e=>btoa(e),v=t=>{var{clientId:i}=t,o=e(t,[\"clientId\"]);return new URLSearchParams((e=>Object.keys(e).filter((t=>void 0!==e[t])).reduce(((t,i)=>Object.assign(Object.assign({},t),{[i]:e[i]})),{}))(Object.assign({client_id:i},o))).toString()},b=e=>(e=>decodeURIComponent(atob(e).split(\"\").map((e=>\"%\"+(\"00\"+e.charCodeAt(0).toString(16)).slice(-2))).join(\"\")))(e.replace(/_/g,\"/\").replace(/-/g,\"+\")),_=async(e,t)=>{const i=await fetch(e,t);return{ok:i.ok,json:await i.json()}},I=async(e,t,i)=>{const o=new AbortController;let n;return t.signal=o.signal,Promise.race([_(e,t),new Promise(((e,t)=>{n=setTimeout((()=>{o.abort(),t(new Error(\"Timeout when executing 'fetch'\"))}),i)}))]).finally((()=>{clearTimeout(n)}))},S=async(e,t,i,o,n,a,r)=>{return s={auth:{audience:t,scope:i},timeout:n,fetchUrl:e,fetchOptions:o,useFormData:r},c=a,new Promise((function(e,t){const i=new MessageChannel;i.port1.onmessage=function(o){o.data.error?t(new Error(o.data.error)):e(o.data),i.port1.close()},c.postMessage(s,[i.port2])}));var s,c},O=async(e,t,i,o,n,a,r=1e4)=>n?S(e,t,i,o,r,n,a):I(e,o,r);async function T(t,i){var{baseUrl:o,timeout:n,audience:a,scope:r,auth0Client:c,useFormData:u}=t,l=e(t,[\"baseUrl\",\"timeout\",\"audience\",\"scope\",\"auth0Client\",\"useFormData\"]);const h=u?v(l):JSON.stringify(l);return await async function(t,i,o,n,a,r,s){let c,u=null;for(let e=0;e<3;e++)try{c=await O(t,o,n,a,r,s,i),u=null;break}catch(e){u=e}if(u)throw u;const l=c.json,{error:h,error_description:p}=l,g=e(l,[\"error\",\"error_description\"]),{ok:w}=c;if(!w){const e=p||`HTTP error. Unable to fetch ${t}`;if(\"mfa_required\"===h)throw new m(h,e,g.mfa_token);if(\"missing_refresh_token\"===h)throw new f(o,n);throw new d(h||\"request_error\",e)}return g}(`${o}/oauth/token`,n,a||\"default\",r,{method:\"POST\",body:h,headers:{\"Content-Type\":u?\"application/x-www-form-urlencoded\":\"application/json\",\"Auth0-Client\":btoa(JSON.stringify(c||s))}},i,u)}const j=(...e)=>{return(t=e.filter(Boolean).join(\" \").trim().split(/\\s+/),Array.from(new Set(t))).join(\" \");var t};class C{constructor(e,t=\"@@auth0spajs@@\",i){this.prefix=t,this.suffix=i,this.clientId=e.clientId,this.scope=e.scope,this.audience=e.audience}toKey(){return[this.prefix,this.clientId,this.audience,this.scope,this.suffix].filter(Boolean).join(\"::\")}static fromKey(e){const[t,i,o,n]=e.split(\"::\");return new C({clientId:i,scope:n,audience:o},t)}static fromCacheEntry(e){const{scope:t,audience:i,client_id:o}=e;return new C({scope:t,audience:i,clientId:o})}}class z{set(e,t){localStorage.setItem(e,JSON.stringify(t))}get(e){const t=window.localStorage.getItem(e);if(t)try{return JSON.parse(t)}catch(e){return}}remove(e){localStorage.removeItem(e)}allKeys(){return Object.keys(window.localStorage).filter((e=>e.startsWith(\"@@auth0spajs@@\")))}}class P{constructor(){this.enclosedCache=function(){let e={};return{set(t,i){e[t]=i},get(t){const i=e[t];if(i)return i},remove(t){delete e[t]},allKeys:()=>Object.keys(e)}}()}}class x{constructor(e,t,i){this.cache=e,this.keyManifest=t,this.nowProvider=i||c}async setIdToken(e,t,i){var o;const n=this.getIdTokenCacheKey(e);await this.cache.set(n,{id_token:t,decodedToken:i}),await(null===(o=this.keyManifest)||void 0===o?void 0:o.add(n))}async getIdToken(e){const t=await this.cache.get(this.getIdTokenCacheKey(e.clientId));if(!t&&e.scope&&e.audience){const t=await this.get(e);if(!t)return;if(!t.id_token||!t.decodedToken)return;return{id_token:t.id_token,decodedToken:t.decodedToken}}if(t)return{id_token:t.id_token,decodedToken:t.decodedToken}}async get(e,t=0){var i;let o=await this.cache.get(e.toKey());if(!o){const t=await this.getCacheKeys();if(!t)return;const i=this.matchExistingCacheKey(e,t);i&&(o=await this.cache.get(i))}if(!o)return;const n=await this.nowProvider(),a=Math.floor(n/1e3);return o.expiresAt-t!e||t.includes(e))).reduce((async(e,t)=>{await e,await this.cache.remove(t)}),Promise.resolve()),await(null===(t=this.keyManifest)||void 0===t?void 0:t.clear()))}async wrapCacheEntry(e){const t=await this.nowProvider();return{body:e,expiresAt:Math.floor(t/1e3)+e.expires_in}}async getCacheKeys(){var e;return this.keyManifest?null===(e=await this.keyManifest.get())||void 0===e?void 0:e.keys:this.cache.allKeys?this.cache.allKeys():void 0}getIdTokenCacheKey(e){return new C({clientId:e},\"@@auth0spajs@@\",\"@@user@@\").toKey()}matchExistingCacheKey(e,t){return t.filter((t=>{var i;const o=C.fromKey(t),n=new Set(o.scope&&o.scope.split(\" \")),a=(null===(i=e.scope)||void 0===i?void 0:i.split(\" \"))||[],r=o.scope&&a.reduce(((e,t)=>e&&n.has(t)),!0);return\"@@auth0spajs@@\"===o.prefix&&o.clientId===e.clientId&&o.audience===e.audience&&r}))[0]}}class Z{constructor(e,t,i){this.storage=e,this.clientId=t,this.cookieDomain=i,this.storageKey=`a0.spajs.txs.${this.clientId}`}create(e){this.storage.save(this.storageKey,e,{daysUntilExpire:1,cookieDomain:this.cookieDomain})}get(){return this.storage.get(this.storageKey)}remove(){this.storage.remove(this.storageKey,{cookieDomain:this.cookieDomain})}}const K=e=>\"number\"==typeof e,W=[\"iss\",\"aud\",\"exp\",\"nbf\",\"iat\",\"jti\",\"azp\",\"nonce\",\"auth_time\",\"at_hash\",\"c_hash\",\"acr\",\"amr\",\"sub_jwk\",\"cnf\",\"sip_from_tag\",\"sip_date\",\"sip_callid\",\"sip_cseq_num\",\"sip_via_branch\",\"orig\",\"dest\",\"mky\",\"events\",\"toe\",\"txn\",\"rph\",\"sid\",\"vot\",\"vtm\"],E=e=>{if(!e.id_token)throw new Error(\"ID token is required but missing\");const t=(e=>{const t=e.split(\".\"),[i,o,n]=t;if(3!==t.length||!i||!o||!n)throw new Error(\"ID token could not be decoded\");const a=JSON.parse(b(o)),r={__raw:e},s={};return Object.keys(a).forEach((e=>{r[e]=a[e],W.includes(e)||(s[e]=a[e])})),{encoded:{header:i,payload:o,signature:n},header:JSON.parse(b(i)),claims:r,user:s}})(e.id_token);if(!t.claims.iss)throw new Error(\"Issuer (iss) claim must be a string present in the ID token\");if(t.claims.iss!==e.iss)throw new Error(`Issuer (iss) claim mismatch in the ID token; expected \"${e.iss}\", found \"${t.claims.iss}\"`);if(!t.user.sub)throw new Error(\"Subject (sub) claim must be a string present in the ID token\");if(\"RS256\"!==t.header.alg)throw new Error(`Signature algorithm of \"${t.header.alg}\" is not supported. Expected the ID token to be signed with \"RS256\".`);if(!t.claims.aud||\"string\"!=typeof t.claims.aud&&!Array.isArray(t.claims.aud))throw new Error(\"Audience (aud) claim must be a string or array of strings present in the ID token\");if(Array.isArray(t.claims.aud)){if(!t.claims.aud.includes(e.aud))throw new Error(`Audience (aud) claim mismatch in the ID token; expected \"${e.aud}\" but was not one of \"${t.claims.aud.join(\", \")}\"`);if(t.claims.aud.length>1){if(!t.claims.azp)throw new Error(\"Authorized Party (azp) claim must be a string present in the ID token when Audience (aud) claim has multiple values\");if(t.claims.azp!==e.aud)throw new Error(`Authorized Party (azp) claim mismatch in the ID token; expected \"${e.aud}\", found \"${t.claims.azp}\"`)}}else if(t.claims.aud!==e.aud)throw new Error(`Audience (aud) claim mismatch in the ID token; expected \"${e.aud}\" but found \"${t.claims.aud}\"`);if(e.nonce){if(!t.claims.nonce)throw new Error(\"Nonce (nonce) claim must be a string present in the ID token\");if(t.claims.nonce!==e.nonce)throw new Error(`Nonce (nonce) claim mismatch in the ID token; expected \"${e.nonce}\", found \"${t.claims.nonce}\"`)}if(e.max_age&&!K(t.claims.auth_time))throw new Error(\"Authentication Time (auth_time) claim must be a number present in the ID token when Max Age (max_age) is specified\");if(null==t.claims.exp||!K(t.claims.exp))throw new Error(\"Expiration Time (exp) claim must be a number present in the ID token\");if(!K(t.claims.iat))throw new Error(\"Issued At (iat) claim must be a number present in the ID token\");const i=e.leeway||60,o=new Date(e.now||Date.now()),n=new Date(0);if(n.setUTCSeconds(t.claims.exp+i),o>n)throw new Error(`Expiration Time (exp) claim error in the ID token; current time (${o}) is after expiration time (${n})`);if(null!=t.claims.nbf&&K(t.claims.nbf)){const e=new Date(0);if(e.setUTCSeconds(t.claims.nbf-i),on)throw new Error(`Authentication Time (auth_time) claim in the ID token indicates that too much time has passed since the last end-user authentication. Current time (${o}) is after last auth at ${n}`)}if(e.organization){const i=e.organization.trim();if(i.startsWith(\"org_\")){const e=i;if(!t.claims.org_id)throw new Error(\"Organization ID (org_id) claim must be a string present in the ID token\");if(e!==t.claims.org_id)throw new Error(`Organization ID (org_id) claim mismatch in the ID token; expected \"${e}\", found \"${t.claims.org_id}\"`)}else{const e=i.toLowerCase();if(!t.claims.org_name)throw new Error(\"Organization Name (org_name) claim must be a string present in the ID token\");if(e!==t.claims.org_name)throw new Error(`Organization Name (org_name) claim mismatch in the ID token; expected \"${e}\", found \"${t.claims.org_name}\"`)}}return t};var R=o((function(e,i){var o=t&&t.__assign||function(){return o=Object.assign||function(e){for(var t,i=1,o=arguments.length;i0?await this.cache.set(this.manifestKey,{keys:[...i]}):await this.cache.remove(this.manifestKey)}}get(){return this.cache.get(this.manifestKey)}clear(){return this.cache.remove(this.manifestKey)}createManifestKeyFrom(e){return`@@auth0spajs@@::${e}`}}const $={memory:()=>(new P).enclosedCache,localstorage:()=>new z},q=e=>$[e],Q=t=>{const{openUrl:i,onRedirect:o}=t,n=e(t,[\"openUrl\",\"onRedirect\"]);return Object.assign(Object.assign({},n),{openUrl:!1===i||i?i:o})},ee=new a;class te{constructor(e){let t,i;if(this.userCache=(new P).enclosedCache,this.defaultOptions={authorizationParams:{scope:\"openid profile email\"},useRefreshTokensFallback:!1,useFormData:!0},this._releaseLockOnPageHide=async()=>{await ee.releaseLock(\"auth0.lock.getTokenSilently\"),window.removeEventListener(\"pagehide\",this._releaseLockOnPageHide)},this.options=Object.assign(Object.assign(Object.assign({},this.defaultOptions),e),{authorizationParams:Object.assign(Object.assign({},this.defaultOptions.authorizationParams),e.authorizationParams)}),\"undefined\"!=typeof window&&(()=>{if(!w())throw new Error(\"For security reasons, `window.crypto` is required to run `auth0-spa-js`.\");if(void 0===w().subtle)throw new Error(\"\\n auth0-spa-js must run on a secure origin. See https://github.com/auth0/auth0-spa-js/blob/main/FAQ.md#why-do-i-get-auth0-spa-js-must-run-on-a-secure-origin for more information.\\n \")})(),e.cache&&e.cacheLocation&&console.warn(\"Both `cache` and `cacheLocation` options have been specified in the Auth0Client configuration; ignoring `cacheLocation` and using `cache`.\"),e.cache)i=e.cache;else{if(t=e.cacheLocation||\"memory\",!q(t))throw new Error(`Invalid cache location \"${t}\"`);i=q(t)()}this.httpTimeoutMs=e.httpTimeoutInSeconds?1e3*e.httpTimeoutInSeconds:1e4,this.cookieStorage=!1===e.legacySameSiteCookie?X:N,this.orgHintCookieName=`auth0.${this.options.clientId}.organization_hint`,this.isAuthenticatedCookieName=(e=>`auth0.${e}.is.authenticated`)(this.options.clientId),this.sessionCheckExpiryDays=e.sessionCheckExpiryDays||1;const o=e.useCookiesForTransactions?this.cookieStorage:J;var n;this.scope=j(\"openid\",this.options.authorizationParams.scope,this.options.useRefreshTokens?\"offline_access\":\"\"),this.transactionManager=new Z(o,this.options.clientId,this.options.cookieDomain),this.nowProvider=this.options.nowProvider||c,this.cacheManager=new x(i,i.allKeys?void 0:new B(i,this.options.clientId),this.nowProvider),this.domainUrl=(n=this.options.domain,/^https?:\\/\\//.test(n)?n:`https://${n}`),this.tokenIssuer=((e,t)=>e?e.startsWith(\"https://\")?e:`https://${e}/`:`${t}/`)(this.options.issuer,this.domainUrl),\"undefined\"!=typeof window&&window.Worker&&this.options.useRefreshTokens&&\"memory\"===t&&(this.options.workerUrl?this.worker=new Worker(this.options.workerUrl):this.worker=new M)}_url(e){const t=encodeURIComponent(btoa(JSON.stringify(this.options.auth0Client||s)));return`${this.domainUrl}${e}&auth0Client=${t}`}_authorizeUrl(e){return this._url(`/authorize?${v(e)}`)}async _verifyIdToken(e,t,i){const o=await this.nowProvider();return E({iss:this.tokenIssuer,aud:this.options.clientId,id_token:e,nonce:t,organization:i,leeway:this.options.leeway,max_age:(n=this.options.authorizationParams.max_age,\"string\"!=typeof n?n:parseInt(n,10)||void 0),now:o});var n}_processOrgHint(e){e?this.cookieStorage.save(this.orgHintCookieName,e,{daysUntilExpire:this.sessionCheckExpiryDays,cookieDomain:this.options.cookieDomain}):this.cookieStorage.remove(this.orgHintCookieName,{cookieDomain:this.options.cookieDomain})}async _prepareAuthorizeUrl(e,t,i){const o=k(y()),n=k(y()),a=y(),r=(e=>{const t=new Uint8Array(e);return(e=>{const t={\"+\":\"-\",\"/\":\"_\",\"=\":\"\"};return e.replace(/[+/=]/g,(e=>t[e]))})(window.btoa(String.fromCharCode(...Array.from(t))))})(await(async e=>{const t=w().subtle.digest({name:\"SHA-256\"},(new TextEncoder).encode(e));return await t})(a)),s=((e,t,i,o,n,a,r,s)=>Object.assign(Object.assign(Object.assign({client_id:e.clientId},e.authorizationParams),i),{scope:j(t,i.scope),response_type:\"code\",response_mode:s||\"query\",state:o,nonce:n,redirect_uri:r||e.authorizationParams.redirect_uri,code_challenge:a,code_challenge_method:\"S256\"}))(this.options,this.scope,e,o,n,r,e.redirect_uri||this.options.authorizationParams.redirect_uri||i,null==t?void 0:t.response_mode),c=this._authorizeUrl(s);return{nonce:n,code_verifier:a,scope:s.scope,audience:s.audience||\"default\",redirect_uri:s.redirect_uri,state:o,url:c}}async loginWithPopup(e,t){var i;if(e=e||{},!(t=t||{}).popup&&(t.popup=(e=>{const t=window.screenX+(window.innerWidth-400)/2,i=window.screenY+(window.innerHeight-600)/2;return window.open(e,\"auth0:authorize:popup\",`left=${t},top=${i},width=400,height=600,resizable,scrollbars=yes,status=1`)})(\"\"),!t.popup))throw new Error(\"Unable to open a popup for loginWithPopup - window.open returned `null`\");const o=await this._prepareAuthorizeUrl(e.authorizationParams||{},{response_mode:\"web_message\"},window.location.origin);t.popup.location.href=o.url;const n=await(e=>new Promise(((t,i)=>{let o;const n=setInterval((()=>{e.popup&&e.popup.closed&&(clearInterval(n),clearTimeout(a),window.removeEventListener(\"message\",o,!1),i(new p(e.popup)))}),1e3),a=setTimeout((()=>{clearInterval(n),i(new h(e.popup)),window.removeEventListener(\"message\",o,!1)}),1e3*(e.timeoutInSeconds||60));o=function(r){if(r.data&&\"authorization_response\"===r.data.type){if(clearTimeout(a),clearInterval(n),window.removeEventListener(\"message\",o,!1),e.popup.close(),r.data.response.error)return i(d.fromPayload(r.data.response));t(r.data.response)}},window.addEventListener(\"message\",o)})))(Object.assign(Object.assign({},t),{timeoutInSeconds:t.timeoutInSeconds||this.options.authorizeTimeoutInSeconds||60}));if(o.state!==n.state)throw new d(\"state_mismatch\",\"Invalid state\");const a=(null===(i=e.authorizationParams)||void 0===i?void 0:i.organization)||this.options.authorizationParams.organization;await this._requestToken({audience:o.audience,scope:o.scope,code_verifier:o.code_verifier,grant_type:\"authorization_code\",code:n.code,redirect_uri:o.redirect_uri},{nonceIn:o.nonce,organization:a})}async getUser(){var e;const t=await this._getIdTokenFromCache();return null===(e=null==t?void 0:t.decodedToken)||void 0===e?void 0:e.user}async getIdTokenClaims(){var e;const t=await this._getIdTokenFromCache();return null===(e=null==t?void 0:t.decodedToken)||void 0===e?void 0:e.claims}async loginWithRedirect(t={}){var i;const o=Q(t),{openUrl:n,fragment:a,appState:r}=o,s=e(o,[\"openUrl\",\"fragment\",\"appState\"]),c=(null===(i=s.authorizationParams)||void 0===i?void 0:i.organization)||this.options.authorizationParams.organization,d=await this._prepareAuthorizeUrl(s.authorizationParams||{}),{url:u}=d,l=e(d,[\"url\"]);this.transactionManager.create(Object.assign(Object.assign(Object.assign({},l),{appState:r}),c&&{organization:c}));const h=a?`${u}#${a}`:u;n?await n(h):window.location.assign(h)}async handleRedirectCallback(e=window.location.href){const t=e.split(\"?\").slice(1);if(0===t.length)throw new Error(\"There are no query params available for parsing.\");const{state:i,code:o,error:n,error_description:a}=(e=>{e.indexOf(\"#\")>-1&&(e=e.substring(0,e.indexOf(\"#\")));const t=new URLSearchParams(e);return{state:t.get(\"state\"),code:t.get(\"code\")||void 0,error:t.get(\"error\")||void 0,error_description:t.get(\"error_description\")||void 0}})(t.join(\"\")),r=this.transactionManager.get();if(!r)throw new d(\"missing_transaction\",\"Invalid state\");if(this.transactionManager.remove(),n)throw new u(n,a||n,i,r.appState);if(!r.code_verifier||r.state&&r.state!==i)throw new d(\"state_mismatch\",\"Invalid state\");const s=r.organization,c=r.nonce,l=r.redirect_uri;return await this._requestToken(Object.assign({audience:r.audience,scope:r.scope,code_verifier:r.code_verifier,grant_type:\"authorization_code\",code:o},l?{redirect_uri:l}:{}),{nonceIn:c,organization:s}),{appState:r.appState}}async checkSession(e){if(!this.cookieStorage.get(this.isAuthenticatedCookieName)){if(!this.cookieStorage.get(\"auth0.is.authenticated\"))return;this.cookieStorage.save(this.isAuthenticatedCookieName,!0,{daysUntilExpire:this.sessionCheckExpiryDays,cookieDomain:this.options.cookieDomain}),this.cookieStorage.remove(\"auth0.is.authenticated\")}try{await this.getTokenSilently(e)}catch(e){}}async getTokenSilently(e={}){var t;const i=Object.assign(Object.assign({cacheMode:\"on\"},e),{authorizationParams:Object.assign(Object.assign(Object.assign({},this.options.authorizationParams),e.authorizationParams),{scope:j(this.scope,null===(t=e.authorizationParams)||void 0===t?void 0:t.scope)})}),o=await((e,t)=>{let i=A[t];return i||(i=e().finally((()=>{delete A[t],i=null})),A[t]=i),i})((()=>this._getTokenSilently(i)),`${this.options.clientId}::${i.authorizationParams.audience}::${i.authorizationParams.scope}`);return e.detailedResponse?o:null==o?void 0:o.access_token}async _getTokenSilently(t){const{cacheMode:i}=t,o=e(t,[\"cacheMode\"]);if(\"off\"!==i){const e=await this._getEntryFromCache({scope:o.authorizationParams.scope,audience:o.authorizationParams.audience||\"default\",clientId:this.options.clientId});if(e)return e}if(\"cache-only\"!==i){if(!await(async(e,t=3)=>{for(let i=0;iee.acquireLock(\"auth0.lock.getTokenSilently\",5e3)),10))throw new l;try{if(window.addEventListener(\"pagehide\",this._releaseLockOnPageHide),\"off\"!==i){const e=await this._getEntryFromCache({scope:o.authorizationParams.scope,audience:o.authorizationParams.audience||\"default\",clientId:this.options.clientId});if(e)return e}const e=this.options.useRefreshTokens?await this._getTokenUsingRefreshToken(o):await this._getTokenFromIFrame(o),{id_token:t,access_token:n,oauthTokenScope:a,expires_in:r}=e;return Object.assign(Object.assign({id_token:t,access_token:n},a?{scope:a}:null),{expires_in:r})}finally{await ee.releaseLock(\"auth0.lock.getTokenSilently\"),window.removeEventListener(\"pagehide\",this._releaseLockOnPageHide)}}}async getTokenWithPopup(e={},t={}){var i;const o=Object.assign(Object.assign({},e),{authorizationParams:Object.assign(Object.assign(Object.assign({},this.options.authorizationParams),e.authorizationParams),{scope:j(this.scope,null===(i=e.authorizationParams)||void 0===i?void 0:i.scope)})});t=Object.assign(Object.assign({},r),t),await this.loginWithPopup(o,t);return(await this.cacheManager.get(new C({scope:o.authorizationParams.scope,audience:o.authorizationParams.audience||\"default\",clientId:this.options.clientId}))).access_token}async isAuthenticated(){return!!await this.getUser()}_buildLogoutUrl(t){null!==t.clientId?t.clientId=t.clientId||this.options.clientId:delete t.clientId;const i=t.logoutParams||{},{federated:o}=i,n=e(i,[\"federated\"]),a=o?\"&federated\":\"\";return this._url(`/v2/logout?${v(Object.assign({clientId:t.clientId},n))}`)+a}async logout(t={}){const i=Q(t),{openUrl:o}=i,n=e(i,[\"openUrl\"]);null===t.clientId?await this.cacheManager.clear():await this.cacheManager.clear(t.clientId||this.options.clientId),this.cookieStorage.remove(this.orgHintCookieName,{cookieDomain:this.options.cookieDomain}),this.cookieStorage.remove(this.isAuthenticatedCookieName,{cookieDomain:this.options.cookieDomain}),this.userCache.remove(\"@@user@@\");const a=this._buildLogoutUrl(n);o?await o(a):!1!==o&&window.location.assign(a)}async _getTokenFromIFrame(e){const t=Object.assign(Object.assign({},e.authorizationParams),{prompt:\"none\"}),i=this.cookieStorage.get(this.orgHintCookieName);i&&!t.organization&&(t.organization=i);const{url:o,state:n,nonce:a,code_verifier:r,redirect_uri:s,scope:c,audience:u}=await this._prepareAuthorizeUrl(t,{response_mode:\"web_message\"},window.location.origin);try{if(window.crossOriginIsolated)throw new d(\"login_required\",\"The application is running in a Cross-Origin Isolated context, silently retrieving a token without refresh token is not possible.\");const i=e.timeoutInSeconds||this.options.authorizeTimeoutInSeconds,h=await((e,t,i=60)=>new Promise(((o,n)=>{const a=window.document.createElement(\"iframe\");a.setAttribute(\"width\",\"0\"),a.setAttribute(\"height\",\"0\"),a.style.display=\"none\";const r=()=>{window.document.body.contains(a)&&(window.document.body.removeChild(a),window.removeEventListener(\"message\",s,!1))};let s;const c=setTimeout((()=>{n(new l),r()}),1e3*i);s=function(e){if(e.origin!=t)return;if(!e.data||\"authorization_response\"!==e.data.type)return;const i=e.source;i&&i.close(),e.data.response.error?n(d.fromPayload(e.data.response)):o(e.data.response),clearTimeout(c),window.removeEventListener(\"message\",s,!1),setTimeout(r,2e3)},window.addEventListener(\"message\",s,!1),window.document.body.appendChild(a),a.setAttribute(\"src\",e)})))(o,this.domainUrl,i);if(n!==h.state)throw new d(\"state_mismatch\",\"Invalid state\");const p=await this._requestToken(Object.assign(Object.assign({},e.authorizationParams),{code_verifier:r,code:h.code,grant_type:\"authorization_code\",redirect_uri:s,timeout:e.authorizationParams.timeout||this.httpTimeoutMs}),{nonceIn:a,organization:t.organization});return Object.assign(Object.assign({},p),{scope:c,oauthTokenScope:p.scope,audience:u})}catch(e){throw\"login_required\"===e.error&&this.logout({openUrl:!1}),e}}async _getTokenUsingRefreshToken(e){const t=await this.cacheManager.get(new C({scope:e.authorizationParams.scope,audience:e.authorizationParams.audience||\"default\",clientId:this.options.clientId}));if(!(t&&t.refresh_token||this.worker)){if(this.options.useRefreshTokensFallback)return await this._getTokenFromIFrame(e);throw new f(e.authorizationParams.audience||\"default\",e.authorizationParams.scope)}const i=e.authorizationParams.redirect_uri||this.options.authorizationParams.redirect_uri||window.location.origin,o=\"number\"==typeof e.timeoutInSeconds?1e3*e.timeoutInSeconds:null;try{const n=await this._requestToken(Object.assign(Object.assign(Object.assign({},e.authorizationParams),{grant_type:\"refresh_token\",refresh_token:t&&t.refresh_token,redirect_uri:i}),o&&{timeout:o}));return Object.assign(Object.assign({},n),{scope:e.authorizationParams.scope,oauthTokenScope:n.scope,audience:e.authorizationParams.audience||\"default\"})}catch(t){if((t.message.indexOf(\"Missing Refresh Token\")>-1||t.message&&t.message.indexOf(\"invalid refresh token\")>-1)&&this.options.useRefreshTokensFallback)return await this._getTokenFromIFrame(e);throw t}}async _saveEntryInCache(t){const{id_token:i,decodedToken:o}=t,n=e(t,[\"id_token\",\"decodedToken\"]);this.userCache.set(\"@@user@@\",{id_token:i,decodedToken:o}),await this.cacheManager.setIdToken(this.options.clientId,t.id_token,t.decodedToken),await this.cacheManager.set(n)}async _getIdTokenFromCache(){const e=this.options.authorizationParams.audience||\"default\",t=await this.cacheManager.getIdToken(new C({clientId:this.options.clientId,audience:e,scope:this.scope})),i=this.userCache.get(\"@@user@@\");return t&&t.id_token===(null==i?void 0:i.id_token)?i:(this.userCache.set(\"@@user@@\",t),t)}async _getEntryFromCache({scope:e,audience:t,clientId:i}){const o=await this.cacheManager.get(new C({scope:e,audience:t,clientId:i}),60);if(o&&o.access_token){const{access_token:e,oauthTokenScope:t,expires_in:i}=o,n=await this._getIdTokenFromCache();return n&&Object.assign(Object.assign({id_token:n.id_token,access_token:e},t?{scope:t}:null),{expires_in:i})}}async _requestToken(e,t){const{nonceIn:i,organization:o}=t||{},n=await T(Object.assign({baseUrl:this.domainUrl,client_id:this.options.clientId,auth0Client:this.options.auth0Client,useFormData:this.options.useFormData,timeout:this.httpTimeoutMs},e),this.worker),a=await this._verifyIdToken(n.id_token,i,o);return await this._saveEntryInCache(Object.assign(Object.assign(Object.assign(Object.assign({},n),{decodedToken:a,scope:e.scope,audience:e.audience||\"default\"}),n.scope?{oauthTokenScope:n.scope}:null),{client_id:this.options.clientId})),this.cookieStorage.save(this.isAuthenticatedCookieName,!0,{daysUntilExpire:this.sessionCheckExpiryDays,cookieDomain:this.options.cookieDomain}),this._processOrgHint(o||a.claims.org_id),Object.assign(Object.assign({},n),{decodedToken:a})}}class ie{}async function oe(e){const t=new te(e);return await t.checkSession(),t}export{te as Auth0Client,u as AuthenticationError,C as CacheKey,d as GenericError,P as InMemoryCache,z as LocalStorageCache,m as MfaRequiredError,f as MissingRefreshTokenError,p as PopupCancelledError,h as PopupTimeoutError,l as TimeoutError,ie as User,oe as createAuth0Client};\n//# sourceMappingURL=auth0-spa-js.production.esm.js.map\n","function e(e){this.message=e}e.prototype=new Error,e.prototype.name=\"InvalidCharacterError\";var r=\"undefined\"!=typeof window&&window.atob&&window.atob.bind(window)||function(r){var t=String(r).replace(/=+$/,\"\");if(t.length%4==1)throw new e(\"'atob' failed: The string to be decoded is not correctly encoded.\");for(var n,o,a=0,i=0,c=\"\";o=t.charAt(i++);~o&&(n=a%4?64*n+o:o,a++%4)?c+=String.fromCharCode(255&n>>(-2*a&6)):0)o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(o);return c};function t(e){var t=e.replace(/-/g,\"+\").replace(/_/g,\"/\");switch(t.length%4){case 0:break;case 2:t+=\"==\";break;case 3:t+=\"=\";break;default:throw\"Illegal base64url string!\"}try{return function(e){return decodeURIComponent(r(e).replace(/(.)/g,(function(e,r){var t=r.charCodeAt(0).toString(16).toUpperCase();return t.length<2&&(t=\"0\"+t),\"%\"+t})))}(t)}catch(e){return r(t)}}function n(e){this.message=e}function o(e,r){if(\"string\"!=typeof e)throw new n(\"Invalid token specified\");var o=!0===(r=r||{}).header?0:1;try{return JSON.parse(t(e.split(\".\")[o]))}catch(e){throw new n(\"Invalid token specified: \"+e.message)}}n.prototype=new Error,n.prototype.name=\"InvalidTokenError\";export default o;export{n as InvalidTokenError};\n//# sourceMappingURL=jwt-decode.esm.js.map\n","var EnvironmentEnum;\n(function (EnvironmentEnum) {\n EnvironmentEnum[\"Mocked\"] = \"mocked\";\n EnvironmentEnum[\"Local\"] = \"local\";\n EnvironmentEnum[\"Development\"] = \"development\";\n EnvironmentEnum[\"Test\"] = \"test\";\n EnvironmentEnum[\"Production\"] = \"production\";\n})(EnvironmentEnum || (EnvironmentEnum = {}));\nvar UserPermission;\n(function (UserPermission) {\n UserPermission[\"AdminHrOverview\"] = \"adminhr:overview\";\n UserPermission[\"AdminHrUserCrud\"] = \"adminhr:user_crud\";\n UserPermission[\"AdminHrCompetencies\"] = \"adminhr:competencies\";\n UserPermission[\"AdminHrMetrics\"] = \"adminhr:metrics\";\n UserPermission[\"AdminHrPrivateCoursesCrud\"] = \"adminhr:private_courses_crud\";\n UserPermission[\"AdminHrCertificates\"] = \"adminhr:certificates\";\n UserPermission[\"AdminHrApiCatalog\"] = \"adminhr:api_catalog\";\n UserPermission[\"AdminHrHelpCenter\"] = \"adminhr:help_center\";\n})(UserPermission || (UserPermission = {}));\nvar CustomizationSectionEnum;\n(function (CustomizationSectionEnum) {\n CustomizationSectionEnum[CustomizationSectionEnum[\"Login\"] = 1] = \"Login\";\n CustomizationSectionEnum[CustomizationSectionEnum[\"Header\"] = 2] = \"Header\";\n CustomizationSectionEnum[CustomizationSectionEnum[\"StudyZone\"] = 3] = \"StudyZone\";\n CustomizationSectionEnum[CustomizationSectionEnum[\"UbitsCertificate\"] = 4] = \"UbitsCertificate\";\n CustomizationSectionEnum[CustomizationSectionEnum[\"CustomCertificate\"] = 5] = \"CustomCertificate\";\n})(CustomizationSectionEnum || (CustomizationSectionEnum = {}));\nvar CustomizationTypeEnum;\n(function (CustomizationTypeEnum) {\n CustomizationTypeEnum[CustomizationTypeEnum[\"Logo\"] = 1] = \"Logo\";\n CustomizationTypeEnum[CustomizationTypeEnum[\"Background\"] = 2] = \"Background\";\n CustomizationTypeEnum[CustomizationTypeEnum[\"Title\"] = 3] = \"Title\";\n CustomizationTypeEnum[CustomizationTypeEnum[\"Description\"] = 4] = \"Description\";\n CustomizationTypeEnum[CustomizationTypeEnum[\"Color\"] = 5] = \"Color\";\n CustomizationTypeEnum[CustomizationTypeEnum[\"RepresentativeSignature\"] = 6] = \"RepresentativeSignature\";\n CustomizationTypeEnum[CustomizationTypeEnum[\"RepresentativeName\"] = 7] = \"RepresentativeName\";\n CustomizationTypeEnum[CustomizationTypeEnum[\"RepresentativePosition\"] = 8] = \"RepresentativePosition\";\n CustomizationTypeEnum[CustomizationTypeEnum[\"LogoMobile\"] = 9] = \"LogoMobile\";\n})(CustomizationTypeEnum || (CustomizationTypeEnum = {}));\nvar FeatureFlagEnum;\n(function (FeatureFlagEnum) {\n FeatureFlagEnum[\"AdminHRCustomization\"] = \"adminhr_customization\";\n FeatureFlagEnum[\"NewUlms\"] = \"new_ulms\";\n})(FeatureFlagEnum || (FeatureFlagEnum = {}));\nvar UbitsMaxProductsEnum;\n(function (UbitsMaxProductsEnum) {\n UbitsMaxProductsEnum[\"TED\"] = \"TED\";\n UbitsMaxProductsEnum[\"WOBI\"] = \"WOBI\";\n UbitsMaxProductsEnum[\"PLUG\"] = \"PLUG\";\n UbitsMaxProductsEnum[\"AWS\"] = \"AMAZON\";\n UbitsMaxProductsEnum[\"PODCAST\"] = \"PODCAST\";\n UbitsMaxProductsEnum[\"BOOKIDEAS\"] = \"IDEAS DE LIBROS\";\n})(UbitsMaxProductsEnum || (UbitsMaxProductsEnum = {}));\nvar UbitsMaxCategoryEnum;\n(function (UbitsMaxCategoryEnum) {\n UbitsMaxCategoryEnum[UbitsMaxCategoryEnum[\"UbitsMaxId\"] = 1880] = \"UbitsMaxId\";\n UbitsMaxCategoryEnum[UbitsMaxCategoryEnum[\"WobiId\"] = 1881] = \"WobiId\";\n UbitsMaxCategoryEnum[UbitsMaxCategoryEnum[\"TedId\"] = 1882] = \"TedId\";\n UbitsMaxCategoryEnum[UbitsMaxCategoryEnum[\"PlugId\"] = 1883] = \"PlugId\";\n UbitsMaxCategoryEnum[UbitsMaxCategoryEnum[\"AWSId\"] = 1884] = \"AWSId\";\n UbitsMaxCategoryEnum[UbitsMaxCategoryEnum[\"BookIdeasId\"] = 2548] = \"BookIdeasId\";\n UbitsMaxCategoryEnum[UbitsMaxCategoryEnum[\"PODCASTId\"] = 2444] = \"PODCASTId\";\n})(UbitsMaxCategoryEnum || (UbitsMaxCategoryEnum = {}));\nvar UbitsPlaylistTypesEnum;\n(function (UbitsPlaylistTypesEnum) {\n UbitsPlaylistTypesEnum[\"Student\"] = \"1\";\n UbitsPlaylistTypesEnum[\"Company\"] = \"2\";\n})(UbitsPlaylistTypesEnum || (UbitsPlaylistTypesEnum = {}));\nvar UbitsPlaylistActionsEnum;\n(function (UbitsPlaylistActionsEnum) {\n UbitsPlaylistActionsEnum[\"Manage\"] = \"manage\";\n UbitsPlaylistActionsEnum[\"Create\"] = \"create\";\n UbitsPlaylistActionsEnum[\"AddCourse\"] = \"add-course\";\n UbitsPlaylistActionsEnum[\"CourseList\"] = \"course-list\";\n UbitsPlaylistActionsEnum[\"Default\"] = \"default\";\n})(UbitsPlaylistActionsEnum || (UbitsPlaylistActionsEnum = {}));\nvar SideMenuSectionsEnum;\n(function (SideMenuSectionsEnum) {\n SideMenuSectionsEnum[\"Top\"] = \"top\";\n SideMenuSectionsEnum[\"Middle\"] = \"middle\";\n SideMenuSectionsEnum[\"Bottom\"] = \"bottom\";\n})(SideMenuSectionsEnum || (SideMenuSectionsEnum = {}));\nvar SideMenuPathsEnum;\n(function (SideMenuPathsEnum) {\n SideMenuPathsEnum[\"Home\"] = \"(/|/home)\";\n SideMenuPathsEnum[\"Users\"] = \"/users\";\n SideMenuPathsEnum[\"LearningMap\"] = \"#\";\n SideMenuPathsEnum[\"Metrics\"] = \"/metrics\";\n SideMenuPathsEnum[\"OwnCourses\"] = \"#\";\n SideMenuPathsEnum[\"Certificates\"] = \"/local/certificates_request\";\n SideMenuPathsEnum[\"APIs\"] = \"#\";\n SideMenuPathsEnum[\"HelpCenter\"] = \"/help-center\";\n SideMenuPathsEnum[\"LogOut\"] = \"#/logout\";\n SideMenuPathsEnum[\"Customization\"] = \"/customization\";\n})(SideMenuPathsEnum || (SideMenuPathsEnum = {}));\nvar UbitsStatusCourseStudyZone;\n(function (UbitsStatusCourseStudyZone) {\n UbitsStatusCourseStudyZone[\"All\"] = \"all\";\n UbitsStatusCourseStudyZone[\"Started\"] = \"started\";\n UbitsStatusCourseStudyZone[\"Finished\"] = \"finished\";\n UbitsStatusCourseStudyZone[\"Start\"] = \"start\";\n})(UbitsStatusCourseStudyZone || (UbitsStatusCourseStudyZone = {}));\nvar ContextMoodleEnum;\n(function (ContextMoodleEnum) {\n ContextMoodleEnum[\"Local\"] = \"local\";\n ContextMoodleEnum[\"Course\"] = \"course\";\n ContextMoodleEnum[\"Activities\"] = \"mod\";\n ContextMoodleEnum[\"Grade\"] = \"grade\";\n})(ContextMoodleEnum || (ContextMoodleEnum = {}));\nvar PluginMoodleEnum;\n(function (PluginMoodleEnum) {\n PluginMoodleEnum[\"Empty\"] = \"\";\n PluginMoodleEnum[\"Playlist\"] = \"myplaylist\";\n PluginMoodleEnum[\"AdminCourses\"] = \"admincourses\";\n PluginMoodleEnum[\"AdminPayment\"] = \"adminpayment\";\n PluginMoodleEnum[\"StudentMetrics\"] = \"studentmetrics\";\n PluginMoodleEnum[\"CertificatesRequest\"] = \"certificates_request\";\n PluginMoodleEnum[\"CourseSearch\"] = \"coursesearch\";\n PluginMoodleEnum[\"Programs\"] = \"programas\";\n PluginMoodleEnum[\"TrainingPlan\"] = \"trainingplan\";\n})(PluginMoodleEnum || (PluginMoodleEnum = {}));\nvar RoleTypeEnum;\n(function (RoleTypeEnum) {\n RoleTypeEnum[\"Admin\"] = \"admin\";\n RoleTypeEnum[\"RRHH\"] = \"rrhh\";\n RoleTypeEnum[\"Student\"] = \"student\";\n RoleTypeEnum[\"AdminSetup\"] = \"adminsetup\";\n RoleTypeEnum[\"CustomCourseCreator\"] = \"customcoursecreator\";\n})(RoleTypeEnum || (RoleTypeEnum = {}));\nvar PlanTypeLabelEnum;\n(function (PlanTypeLabelEnum) {\n PlanTypeLabelEnum[\"Standard\"] = \"Standard\";\n PlanTypeLabelEnum[\"UbitsMax\"] = \"Max\";\n})(PlanTypeLabelEnum || (PlanTypeLabelEnum = {}));\nvar PlanTypeEnum;\n(function (PlanTypeEnum) {\n PlanTypeEnum[PlanTypeEnum[\"Demo\"] = 1] = \"Demo\";\n PlanTypeEnum[PlanTypeEnum[\"Alliance\"] = 2] = \"Alliance\";\n PlanTypeEnum[PlanTypeEnum[\"Standard\"] = 3] = \"Standard\";\n PlanTypeEnum[PlanTypeEnum[\"StandardPlug\"] = 4] = \"StandardPlug\";\n PlanTypeEnum[PlanTypeEnum[\"Premium\"] = 5] = \"Premium\";\n PlanTypeEnum[PlanTypeEnum[\"PremiumPlug\"] = 6] = \"PremiumPlug\";\n PlanTypeEnum[PlanTypeEnum[\"UbitsMax\"] = 7] = \"UbitsMax\";\n PlanTypeEnum[PlanTypeEnum[\"UbitsMaxLMS\"] = 8] = \"UbitsMaxLMS\";\n})(PlanTypeEnum || (PlanTypeEnum = {}));\nvar GenderTypeEnum;\n(function (GenderTypeEnum) {\n GenderTypeEnum[\"Female\"] = \"F\";\n GenderTypeEnum[\"IPreferNotToSay\"] = \"I prefer not to say\";\n GenderTypeEnum[\"Male\"] = \"M\";\n GenderTypeEnum[\"Null\"] = \"NULL\";\n GenderTypeEnum[\"Other\"] = \"Other\";\n})(GenderTypeEnum || (GenderTypeEnum = {}));\nvar EducationLevelEnum;\n(function (EducationLevelEnum) {\n EducationLevelEnum[\"Bachelor\"] = \"bachelor\";\n EducationLevelEnum[\"DoctoralProgram\"] = \"doctoral program\";\n EducationLevelEnum[\"ElementarySchool\"] = \"elementary school\";\n EducationLevelEnum[\"HighSchool\"] = \"high school\";\n EducationLevelEnum[\"MastersProgram\"] = \"masters program\";\n EducationLevelEnum[\"NULL\"] = \"NULL\";\n EducationLevelEnum[\"Preschool\"] = \"preschool\";\n EducationLevelEnum[\"University\"] = \"university\";\n})(EducationLevelEnum || (EducationLevelEnum = {}));\nexport { ContextMoodleEnum, CustomizationSectionEnum, CustomizationTypeEnum, EducationLevelEnum, EnvironmentEnum, FeatureFlagEnum, GenderTypeEnum, PlanTypeEnum, PlanTypeLabelEnum, PluginMoodleEnum, RoleTypeEnum, SideMenuPathsEnum, SideMenuSectionsEnum, UbitsMaxCategoryEnum, UbitsMaxProductsEnum, UbitsPlaylistActionsEnum, UbitsPlaylistTypesEnum, UbitsStatusCourseStudyZone, UserPermission };\n//# sourceMappingURL=index.js.map\n","import { createAuth0Client } from '@auth0/auth0-spa-js';\nimport jwtDecode from 'jwt-decode';\nimport { Deserializer } from 'jsonapi-serializer';\nimport { navigateToUrl } from 'single-spa';\nimport * as Sentry from '@sentry/browser';\nimport { PlanTypeEnum, RoleTypeEnum as RoleTypeEnum$1, GenderTypeEnum, EducationLevelEnum, EnvironmentEnum } from '@ubits/library-enums';\n\nvar UserPermission;\n(function (UserPermission) {\n UserPermission[\"AdminHrAccessAllAreas\"] = \"adminhr:access_all_areas\";\n UserPermission[\"AdminHrApiCatalog\"] = \"adminhr:api_catalog\";\n UserPermission[\"AdminHrAssessments\"] = \"assessments:search\";\n UserPermission[\"AdminHrCertificates\"] = \"adminhr:certificates\";\n UserPermission[\"AdminHrCompanyDetail\"] = \"adminhr:company_detail\";\n UserPermission[\"AdminHrCompanySwitch\"] = \"adminhr:company_switch\";\n UserPermission[\"AdminHrCompetencies\"] = \"adminhr:competencies\";\n UserPermission[\"AdminHrHelpCenter\"] = \"adminhr:help_center\";\n UserPermission[\"AdminHrLicensesManagement\"] = \"adminhr:licenses_management\";\n UserPermission[\"AdminHrMetrics\"] = \"adminhr:metrics\";\n UserPermission[\"AdminHrOverview\"] = \"adminhr:overview\";\n UserPermission[\"AdminHrPersonalization\"] = \"adminhr:personalization\";\n UserPermission[\"AdminHrPrivateCoursesCrud\"] = \"adminhr:private_courses_crud\";\n UserPermission[\"AdminHrUserCrud\"] = \"adminhr:user_crud\";\n})(UserPermission || (UserPermission = {}));\nvar RoleTypeEnum;\n(function (RoleTypeEnum) {\n RoleTypeEnum[\"Admin\"] = \"admin\";\n RoleTypeEnum[\"RRHH\"] = \"rrhh\";\n RoleTypeEnum[\"Student\"] = \"student\";\n RoleTypeEnum[\"AdminSetup\"] = \"adminsetup\";\n RoleTypeEnum[\"CustomCourseCreator\"] = \"customcoursecreator\";\n})(RoleTypeEnum || (RoleTypeEnum = {}));\nvar RoleIdEnum;\n(function (RoleIdEnum) {\n RoleIdEnum[\"Admin\"] = \"admin\";\n RoleIdEnum[RoleIdEnum[\"RRHH\"] = 11] = \"RRHH\";\n RoleIdEnum[RoleIdEnum[\"Student\"] = 5] = \"Student\";\n RoleIdEnum[RoleIdEnum[\"AdminSetup\"] = 14] = \"AdminSetup\";\n RoleIdEnum[RoleIdEnum[\"CustomCourseCreator\"] = 12] = \"CustomCourseCreator\";\n})(RoleIdEnum || (RoleIdEnum = {}));\n\nfunction injectProperties(self, init) {\n Object.keys(init).forEach(key => {\n if (Object.keys(self).includes(key))\n self[key] = init[key];\n });\n}\n\nclass Auth0CredentialModel {\n domain = '';\n clientId = '';\n audience = '';\n constructor(init = {}) {\n injectProperties(this, init);\n }\n}\nclass Auth0UserModel {\n name = '';\n givenName = '';\n familyName = '';\n middleName = '';\n nickname = '';\n preferredUsername = '';\n profile = '';\n picture = '';\n website = '';\n email = '';\n emailVerified = false;\n gender = '';\n birthDate = '';\n zoneInfo = '';\n locale = '';\n phoneNumber = '';\n phoneNumberVerified = false;\n address = '';\n updatedAt = '';\n sub = '';\n username = '';\n loginsCount = 0;\n userMetadata = new Auth0UserMetadataModel();\n constructor(init = {}) {\n injectProperties(this, init);\n }\n}\nclass Auth0UserMetadataModel {\n area = '';\n city = '';\n companyId = 0;\n companyName = '';\n country = '';\n lastMetadataUpdate = '';\n mdlCompanyId = 0;\n mdlUserId = 0;\n organizationLevel = '';\n roleAuth0Id = '';\n roleAuth0Name = '';\n roleId = '';\n roleShortname = '';\n userId = '';\n position = '';\n constructor(init = {}) {\n injectProperties(this, init);\n }\n}\n\nclass Auth0Repository {\n uuid = 'auth';\n credentials;\n global = window;\n get auth0() {\n return this.global[this.uuid];\n }\n set auth0(auth) {\n this.global[this.uuid] = auth;\n }\n redirectUri = this.global.location.origin;\n constructor(credentials) {\n this.credentials = credentials;\n }\n async createClient(credentials) {\n this.credentials = credentials;\n this.auth0 = await createAuth0Client({\n domain: this.credentials.domain,\n clientId: this.credentials.clientId,\n authorizationParams: this.getAuthorizationParams(),\n cacheLocation: 'localstorage',\n });\n }\n getAuthorizationParams() {\n return {\n audience: this.credentials.audience,\n 'redirect_uri': this.redirectUri,\n };\n }\n async login(targetUrl = this.global.location.href) {\n const options = {\n authorizationParams: this.getAuthorizationParams(),\n };\n if (targetUrl)\n options.appState = { targetUrl };\n await this.auth0.loginWithRedirect(options);\n }\n async user() {\n const user = (await this.auth0?.getUser()) ?? {};\n const metadata = user['user_metadata'] || {};\n const userMetadata = new Auth0UserMetadataModel({\n area: metadata['area'],\n city: metadata['city'],\n companyId: metadata['company_id'],\n companyName: metadata['company_name'],\n country: metadata['country'],\n lastMetadataUpdate: metadata['last_metadata_update'],\n mdlCompanyId: metadata['mdl_u_company_id'],\n mdlUserId: metadata['mdl_u_user_id'],\n organizationLevel: metadata['organization_level'],\n roleAuth0Id: metadata['role_auth0_id'],\n roleAuth0Name: metadata['role_auth0_name'],\n roleId: metadata['role_id'],\n roleShortname: metadata['role_shortname'],\n userId: metadata['user_id'],\n position: metadata['position'],\n });\n return new Auth0UserModel({\n username: user['username'],\n loginsCount: user['loginsCount'],\n givenName: user['given_name'],\n familyName: user['family_name'],\n nickname: user['nickname'],\n name: user['name'],\n picture: user['picture'],\n updatedAt: user['updated_at'],\n email: user['email'],\n emailVerified: user['email_verified'],\n middleName: user['middle_name'],\n preferredUsername: user['preferred_username'],\n profile: user['profile'],\n website: user['website'],\n gender: user['gender'],\n birthDate: user['birthdate'],\n zoneInfo: user['zoneinfo'],\n locale: user['locale'],\n phoneNumber: user['phone_number'],\n phoneNumberVerified: user['phone_number_verified'],\n address: user['address'],\n sub: user['sub'],\n userMetadata,\n });\n }\n async isAuthenticated() {\n return this.auth0.isAuthenticated();\n }\n async checkSession() {\n await this.auth0.checkSession({\n cacheMode: 'off',\n });\n }\n async accessToken() {\n return this.auth0.getTokenSilently().catch(_ => '');\n }\n async idToken() {\n const token = (await this.auth0?.getIdTokenClaims()) ?? {};\n return token['__raw'] || '';\n }\n async logout(returnTo, onRedirect) {\n const options = {\n // clientId: this.credentials.clientId,\n logoutParams: {\n returnTo: returnTo || this.redirectUri,\n },\n onRedirect,\n };\n await this.auth0?.logout(options);\n }\n async handleRedirectCallback() {\n const home = '/';\n const result = (await this.auth0?.handleRedirectCallback()) || {};\n const targetUrl = result?.appState?.targetUrl || home;\n return targetUrl;\n }\n}\n\nconst auth0Repository = new Auth0Repository(new Auth0CredentialModel());\n\nclass HttpSimpleRepository {\n get url() {\n return '';\n }\n async get(id, args) {\n throw new Error(`Method not implemented. ${id}`);\n }\n async set(item, args) {\n throw new Error(`Method not implemented. ${item}`);\n }\n async update(item, args) {\n throw new Error('Method not implemented.');\n }\n async delete(id, args) {\n throw new Error(`Method not implemented. ${id}`);\n }\n}\n\nclass InterceptorSimpleRepository {\n originRepository;\n interceptor;\n constructor(originRepository, interceptor) {\n this.originRepository = originRepository;\n this.interceptor = interceptor;\n }\n async get(id, args) {\n let item = await this.interceptor.get(id, args);\n if (item)\n return item;\n item = await this.originRepository.get(id, args);\n if (item)\n await this.interceptor.set(item, args);\n return item;\n }\n async set(item, args) {\n const originResponse = await this.originRepository.set(item, args);\n const interceptorResponse = await this.interceptor.set(item, args);\n return { originResponse, interceptorResponse };\n }\n async update(item, args) {\n const originResponse = await this.originRepository.update(item, args);\n const interceptorResponse = await this.interceptor.update(item, args);\n return { originResponse, interceptorResponse };\n }\n async delete(id, args) {\n const originResponse = await this.originRepository.delete(id, args);\n const interceptorResponse = await this.interceptor.delete(id, args);\n return { originResponse, interceptorResponse };\n }\n}\n\nclass MemorySimpleRepository {\n item = null;\n constructor(item = null) {\n this.item = item;\n }\n async get() {\n return this.item;\n }\n async set(item) {\n this.item = item;\n }\n async update(item) {\n this.item = item;\n }\n async delete() {\n this.item = null;\n }\n}\n\nclass SimpleRepository {\n}\n\nconst detectBrowser = () => {\n const navi = navigator.userAgent;\n const browsers = [\n BrowsersEnum.Chrome,\n BrowsersEnum.Firefox,\n BrowsersEnum.Safari,\n BrowsersEnum.Opera,\n BrowsersEnum.Trident,\n BrowsersEnum.MSIE,\n BrowsersEnum.Edge,\n ];\n const usedBrowser = browsers.find(browser => navi.includes(browser));\n if (usedBrowser) {\n return usedBrowser;\n }\n};\nvar BrowsersEnum;\n(function (BrowsersEnum) {\n BrowsersEnum[\"Chrome\"] = \"Chrome\";\n BrowsersEnum[\"Firefox\"] = \"Firefox\";\n BrowsersEnum[\"Safari\"] = \"Safari\";\n BrowsersEnum[\"Opera\"] = \"Opera\";\n BrowsersEnum[\"Trident\"] = \"Trident\";\n BrowsersEnum[\"MSIE\"] = \"Msie\";\n BrowsersEnum[\"Edge\"] = \"Edge\";\n})(BrowsersEnum || (BrowsersEnum = {}));\n\nfunction camelCase(str) {\n return str\n .replace(/[-_]+/g, ' ')\n .replace(/(?:^\\w|[A-Z]|\\b\\w)/g, function (word, index) {\n return index === 0 ? word.toLowerCase() : word.toUpperCase();\n })\n .replace(/\\s+/g, '');\n}\n\nasync function clearData() {\n await clearStorage();\n await deleteCaches();\n await deleteAllCookies();\n}\nasync function clearStorage() {\n localStorage.clear();\n sessionStorage.clear();\n}\nasync function deleteCaches() {\n for (const key of await caches.keys()) {\n await caches.delete(key);\n }\n}\nasync function deleteAllCookies() {\n const cookieString = document.cookie;\n const cookies = cookieString.split(';');\n cookies.forEach(function (cookie) {\n const [name, _] = cookie.split('=');\n const cookieName = name.trim();\n document.cookie = cookieName + '=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';\n });\n}\nasync function deleteIndexedDB() {\n try {\n const indexedDB = await window.indexedDB.databases();\n indexedDB.forEach(db => window.indexedDB.deleteDatabase(db.name));\n }\n catch (error) {\n console.error(error);\n }\n}\n\nfunction dataLayerDispatch(target, tagName, data) {\n const detail = { tagName, data };\n target.dispatchEvent(new CustomEvent('ubitsDataLayer', { detail, bubbles: true }));\n}\n\nvar MonthFormatTypeEnum;\n(function (MonthFormatTypeEnum) {\n MonthFormatTypeEnum[MonthFormatTypeEnum[\"Short\"] = 0] = \"Short\";\n MonthFormatTypeEnum[MonthFormatTypeEnum[\"Long\"] = 1] = \"Long\";\n})(MonthFormatTypeEnum || (MonthFormatTypeEnum = {}));\n\nconst months = {\n [MonthFormatTypeEnum.Long]: [\n 'Enero',\n 'Febrero',\n 'Marzo',\n 'Abril',\n 'Mayo',\n 'Junio',\n 'Julio',\n 'Agosto',\n 'Septiembre',\n 'Octubre',\n 'Noviembre',\n 'Diciembre',\n ],\n [MonthFormatTypeEnum.Short]: [\n 'Ene',\n 'Feb',\n 'Mar',\n 'Abr',\n 'May',\n 'Jun',\n 'Jul',\n 'Ago',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dic',\n ],\n};\n\n/**\n * Returns the name of the month in the specified format.\n *\n * @param month The month number (1 for January, 2 for February, etc.).\n * @param formatType The month format type: MonthFormatTypeEnum.Short for short format,\n * MonthFormatTypeEnum.Long for long format.\n * @returns The name of the month in the specified format.\n */\nconst monthFormat = (month, formatType = MonthFormatTypeEnum.Short) => {\n return months[formatType][month - 1];\n};\n/**\n * Returns the date in UTC format: 0000.\n *\n * @param timestamp The timestamp number in milliseconds.\n * @returns The name of the month in the specified format.\n */\nconst getUTCDateFormat = (timestamp, format = 'dd/mm/yyyy') => {\n // Asegurarse de que el timestamp esté en milisegundos\n if (timestamp.toString().length < 13) {\n timestamp *= 1000;\n }\n const date = new Date(timestamp);\n return format\n .replace('dd', `${date.getUTCDate()}`.padStart(2, '0'))\n .replace('mm', `${date.getUTCMonth() + 1}`.padStart(2, '0'))\n .replace('MMMM', monthFormat(date.getUTCMonth() + 1, MonthFormatTypeEnum.Long))\n .replace('MM', monthFormat(date.getUTCMonth() + 1))\n .replace('yyyy', `${date.getUTCFullYear()}`);\n};\n/**\n * Returns the date in Local format.\n *\n * @param timestamp The timestamp number in milliseconds.\n * @returns The name of the month in the specified format.\n */\nconst getDateFormat = (timestamp, format = 'dd/mm/yyyy') => {\n // Asegurarse de que el timestamp esté en milisegundos\n if (timestamp.toString().length < 13) {\n timestamp *= 1000;\n }\n const date = new Date(timestamp);\n return format\n .replace('dd', `${date.getDate()}`.padStart(2, '0'))\n .replace('mm', `${date.getMonth() + 1}`.padStart(2, '0'))\n .replace('MMMM', monthFormat(date.getMonth() + 1, MonthFormatTypeEnum.Long))\n .replace('MM', monthFormat(date.getMonth() + 1))\n .replace('yyyy', `${date.getFullYear()}`);\n};\n\nfunction ubitsDispatchEvent(event) {\n document.dispatchEvent(event);\n}\n\nfunction utf8ToB64(value) {\n return window.btoa(unescape(encodeURIComponent(value)));\n}\nfunction b64ToUtf8(value) {\n return decodeURIComponent(escape(window.atob(value)));\n}\n\nfunction normalizeString(value) {\n if (typeof value !== 'string')\n return value;\n return value.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n}\n\nvar SortEnum;\n(function (SortEnum) {\n SortEnum[\"ASC\"] = \"ASC\";\n SortEnum[\"DESC\"] = \"DESC\";\n})(SortEnum || (SortEnum = {}));\nvar FilterOperatorEnum;\n(function (FilterOperatorEnum) {\n FilterOperatorEnum[\"EqualTo\"] = \"==\";\n FilterOperatorEnum[\"NotEqualTo\"] = \"!=\";\n FilterOperatorEnum[\"GreaterThan\"] = \">\";\n FilterOperatorEnum[\"GreaterThanOrEqualTo\"] = \">=\";\n FilterOperatorEnum[\"LessThan\"] = \"<\";\n FilterOperatorEnum[\"LessThanOrEqualTo\"] = \"<=\";\n FilterOperatorEnum[\"ILike\"] = \"iLike\";\n FilterOperatorEnum[\"Includes\"] = \"includes\";\n FilterOperatorEnum[\"ContainsWord\"] = \"containsWord\";\n})(FilterOperatorEnum || (FilterOperatorEnum = {}));\nvar FilterLogicalOperatorEnum;\n(function (FilterLogicalOperatorEnum) {\n FilterLogicalOperatorEnum[\"AND\"] = \"&&\";\n FilterLogicalOperatorEnum[\"OR\"] = \"||\";\n})(FilterLogicalOperatorEnum || (FilterLogicalOperatorEnum = {}));\n\nfunction filterObject(logicalOperator, items, args) {\n if (!args || !items)\n return items || [];\n const currentArgs = getValidArgs(args);\n return items.filter(item => {\n const validations = validateItemValues(currentArgs, item);\n return validateByLogicalOperator(currentArgs, validations, logicalOperator);\n });\n}\nfunction getValidArgs(args) {\n const currentArgs = {};\n for (const key of Object.keys(args)) {\n const { value } = args[key];\n if (value !== null && value !== undefined && Boolean(`${value}`.trim())) {\n currentArgs[key] = args[key];\n }\n }\n return currentArgs;\n}\nfunction deserializeData(value) {\n return JSON.parse(JSON.stringify(value));\n}\nfunction validateItemValues(args, item) {\n const validations = {};\n Object.keys(args).forEach((key) => {\n const operator = args[key].operator;\n const value1 = normalizeString(deserializeData(item?.[key] ?? ''));\n const value2 = normalizeString(deserializeData(args[key]?.value ?? ''));\n let isValid = false;\n if (Object.keys(item).includes(key))\n isValid = compareValues(value1, operator, value2);\n validations[key] = isValid;\n });\n return validations;\n}\nfunction validateByLogicalOperator(args, validations, logicalOperator) {\n switch (logicalOperator) {\n case FilterLogicalOperatorEnum.AND:\n return validateByLogicalOperatorAnd(validations);\n case FilterLogicalOperatorEnum.OR:\n return validateByLogicalOperatorOr(args, validations);\n }\n}\nfunction validateByLogicalOperatorAnd(validations) {\n return Object.values(validations).every(Boolean);\n}\nfunction validateByLogicalOperatorOr(args, validations) {\n if (!Object.keys(args).length)\n return true;\n const primaryKeys = [];\n const secondaryKeys = [];\n for (const key of Object.keys(args)) {\n const { primary } = args[key];\n const validation = validations[key];\n if (primary) {\n primaryKeys.push(validation);\n }\n else {\n secondaryKeys.push(validation);\n }\n }\n if (primaryKeys.length && secondaryKeys.length) {\n return !!primaryKeys.includes(false) && secondaryKeys.includes(true);\n }\n if (primaryKeys.length && !secondaryKeys.length) {\n return !!primaryKeys.includes(false);\n }\n return secondaryKeys.includes(true);\n}\nfunction compareValues(value1, operator, value2) {\n switch (operator) {\n case FilterOperatorEnum.EqualTo:\n return Boolean(value1 == value2);\n case FilterOperatorEnum.NotEqualTo:\n return Boolean(value1 != value2);\n case FilterOperatorEnum.GreaterThan:\n return Boolean(value1 > value2);\n case FilterOperatorEnum.GreaterThanOrEqualTo:\n return Boolean(value1 >= value2);\n case FilterOperatorEnum.LessThan:\n return Boolean(value1 < value2);\n case FilterOperatorEnum.LessThanOrEqualTo:\n return Boolean(value1 <= value2);\n case FilterOperatorEnum.ILike:\n return iLikeOperator(value1, value2);\n case FilterOperatorEnum.ContainsWord:\n return containsWordOperator(value1, value2);\n case FilterOperatorEnum.Includes:\n return includesOperator(value1, value2);\n default:\n return false;\n }\n}\nfunction iLikeOperator(value1, value2) {\n const currentValue = String(value1).toLocaleLowerCase().trim();\n const search = String(value2).toLocaleLowerCase().trim();\n const regex = new RegExp(search, 'i');\n const filter = regex.test(currentValue);\n return filter;\n}\nfunction containsWordOperator(value1, value2) {\n const currentValue = value1.toLowerCase().trim();\n const words2 = value2.toLowerCase().trim().split(' ');\n const words1 = currentValue.split(' ');\n return words1.some(word1 => words2.some(word2 => word1.includes(word2)));\n}\nfunction includesOperator(value1, value2) {\n if (Array.isArray(value1)) {\n return value1.some(item => value2.includes(item));\n }\n else {\n return value2.includes(value1);\n }\n}\n\nfunction sortObjects(key, items, sort) {\n if (!items || items.length === 0)\n return [];\n items = items.sort((a, b) => {\n if (Number.isInteger(a[key]) && Number.isInteger(b[key])) {\n return a[key] - b[key];\n }\n else {\n const fa = `${a[key]}`.trim().toLowerCase();\n const fb = `${b[key]}`.trim().toLowerCase();\n if (fa < fb)\n return -1;\n if (fa > fb)\n return 1;\n return 0;\n }\n });\n if (sort === SortEnum.DESC)\n items = items.reverse();\n return items;\n}\n\nfunction searchObjects(filter, items) {\n const getArgsFilterSearch = (filter) => {\n return filter ? filter.args : null;\n };\n const args = getArgsFilterSearch(filter?.args ? filter : null);\n const order = filter ? filter.order : null;\n const logicalOperator = filter?.logicalOperator\n ? filter.logicalOperator\n : FilterLogicalOperatorEnum.AND;\n const data = [];\n items.forEach(item => data.push(item));\n let currentItems = args ? filterObject(logicalOperator, data, args) : data;\n if (order) {\n const key = filter.order.key;\n const sort = filter.order.sort;\n currentItems = sortObjects(key, currentItems, sort);\n }\n currentItems = sliceData(filter, currentItems);\n return Promise.resolve(currentItems || []);\n}\nfunction sliceData(filter, data) {\n data = data || [];\n if (!filter?.page)\n return data;\n const start = filter.page.start;\n const end = filter.page.end;\n if (start >= 0 && end >= start) {\n return data.slice(start, end);\n }\n return data;\n}\n\nfunction httpOrderParse(order) {\n if (!order)\n return '';\n const sort = order.sort === SortEnum.ASC ? '+' : '-';\n const key = (order.key || '').trim();\n return `${sort}${key}`;\n}\n\nfunction httpArgsParse(args, order, page) {\n const currentArgs = [];\n if (order) {\n args['sort'] = httpOrderParse(order);\n }\n if (page) {\n args['page'] = page?.pageIndex;\n args['page_size'] = page?.pageSize;\n }\n Object.keys(args).forEach(key => {\n if (args[key] !== null && args[key] !== undefined && `${args[key]}`.trim().length) {\n currentArgs.push(`${key}=${args[key]}`);\n }\n });\n return currentArgs.length ? `?${currentArgs.join('&')}` : '';\n}\n\nclass EnvManager {\n static instance;\n env = {};\n // Singleton para mantener una única instancia en toda la aplicación\n constructor() {\n // Intentar cargar del window si ya existen variables previamente seteadas\n if (window && window['__ENV__']) {\n this.env = { ...window['__ENV__'] };\n }\n }\n // Obtener la instancia única\n static getInstance() {\n if (!EnvManager.instance) {\n EnvManager.instance = new EnvManager();\n }\n return EnvManager.instance;\n }\n // Método para obtener una variable de entorno\n get(key) {\n return this.env[key?.trim()];\n }\n // Método para establecer o actualizar variables de entorno\n set(variables) {\n this.env = { ...this.env, ...variables };\n window['__ENV__'] = this.env; // Mantener sincronizado con window si es necesario\n }\n // Método para obtener todas las variables\n getAll() {\n return { ...this.env };\n }\n}\n// Exportar una instancia única\nconst envManager = EnvManager.getInstance();\n\nfunction switchCases(expression, cases) {\n return cases[expression] || cases?.['default'];\n}\n\nasync function dispatchResponse(response) {\n const status = response ? response.status : null;\n ubitsDispatchEvent(new CustomEvent('responseStatusCode', {\n detail: { status, response },\n bubbles: true,\n }));\n}\n\nvar HTTPResponseStatusCodesEnums;\n(function (HTTPResponseStatusCodesEnums) {\n // Informational responses (100–199)\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"Continue\"] = 100] = \"Continue\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"SwitchingProtocols\"] = 101] = \"SwitchingProtocols\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"Processing\"] = 102] = \"Processing\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"EarlyHints\"] = 103] = \"EarlyHints\";\n // Successful responses (200–299)\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"OK\"] = 200] = \"OK\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"Created\"] = 201] = \"Created\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"Accepted\"] = 202] = \"Accepted\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"NonAuthoritativeInformation\"] = 203] = \"NonAuthoritativeInformation\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"NoContent\"] = 204] = \"NoContent\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"ResetContent\"] = 205] = \"ResetContent\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"PartialContent\"] = 206] = \"PartialContent\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"MultiStatus7\"] = 207] = \"MultiStatus7\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"MultiStatus8\"] = 208] = \"MultiStatus8\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"IMUsed\"] = 226] = \"IMUsed\";\n // Redirection messages (300–399)\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"MultipleChoice\"] = 300] = \"MultipleChoice\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"MovedPermanently\"] = 301] = \"MovedPermanently\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"Found\"] = 302] = \"Found\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"SeeOther\"] = 303] = \"SeeOther\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"NotModified\"] = 304] = \"NotModified\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"UseProxy\"] = 305] = \"UseProxy\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"Unused\"] = 306] = \"Unused\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"TemporaryRedirect\"] = 307] = \"TemporaryRedirect\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"PermanentRedirect\"] = 308] = \"PermanentRedirect\";\n // Client error responses (400–499)\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"BadRequest\"] = 400] = \"BadRequest\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"Unauthorized\"] = 401] = \"Unauthorized\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"PaymentRequired\"] = 402] = \"PaymentRequired\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"Forbidden\"] = 403] = \"Forbidden\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"NotFound\"] = 404] = \"NotFound\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"MethodNotAllowed\"] = 405] = \"MethodNotAllowed\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"NotAcceptable\"] = 406] = \"NotAcceptable\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"ProxyAuthenticationRequired\"] = 407] = \"ProxyAuthenticationRequired\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"RequestTimeout\"] = 408] = \"RequestTimeout\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"Conflict\"] = 409] = \"Conflict\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"Gone\"] = 410] = \"Gone\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"LengthRequired\"] = 411] = \"LengthRequired\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"PreconditionFailed\"] = 412] = \"PreconditionFailed\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"PayloadTooLarge\"] = 413] = \"PayloadTooLarge\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"UriTooLong\"] = 414] = \"UriTooLong\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"UnsupportedMediaType\"] = 415] = \"UnsupportedMediaType\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"RequestedRangeNotSatisfiable\"] = 416] = \"RequestedRangeNotSatisfiable\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"ExpectationFailed\"] = 417] = \"ExpectationFailed\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"IMATeapot\"] = 418] = \"IMATeapot\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"MisdirectedRequest\"] = 421] = \"MisdirectedRequest\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"UnprocessableEntity\"] = 422] = \"UnprocessableEntity\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"Locked\"] = 423] = \"Locked\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"FailedDependency\"] = 424] = \"FailedDependency\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"UpgradeRequired\"] = 426] = \"UpgradeRequired\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"PreconditionRequired\"] = 428] = \"PreconditionRequired\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"TooManyRequests\"] = 429] = \"TooManyRequests\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"RequestHeaderFieldsTooLarge\"] = 431] = \"RequestHeaderFieldsTooLarge\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"UnavailableForLegalReasons\"] = 451] = \"UnavailableForLegalReasons\";\n // Server error responses (500–599)\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"InternalServerError\"] = 500] = \"InternalServerError\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"NotImplemented\"] = 501] = \"NotImplemented\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"BadGateway\"] = 502] = \"BadGateway\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"ServiceUnavailable\"] = 503] = \"ServiceUnavailable\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"GatewayTimeout\"] = 504] = \"GatewayTimeout\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"HttpVersionNotSupported\"] = 505] = \"HttpVersionNotSupported\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"VariantAlsoNegotiates\"] = 506] = \"VariantAlsoNegotiates\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"InsufficientStorage\"] = 507] = \"InsufficientStorage\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"LoopDetected\"] = 508] = \"LoopDetected\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"NotExtended\"] = 510] = \"NotExtended\";\n HTTPResponseStatusCodesEnums[HTTPResponseStatusCodesEnums[\"NetworkAuthenticationRequired\"] = 511] = \"NetworkAuthenticationRequired\";\n})(HTTPResponseStatusCodesEnums || (HTTPResponseStatusCodesEnums = {}));\n\nasync function httpFetch(request) {\n let response;\n try {\n response = await fetch(request);\n if (response.ok) {\n return response;\n }\n else {\n throw new Error(response.status.toString(), { cause: response }); // Lanzar un error con el código de estado HTTP\n }\n }\n catch (error) {\n let errorMessage = '';\n errorMessage = switchCases(error.message, {\n [HTTPResponseStatusCodesEnums.BadRequest]: 'Error 400: Bad request.',\n [HTTPResponseStatusCodesEnums.NotFound]: 'Error 404: Resource not found.',\n [HTTPResponseStatusCodesEnums.Unauthorized]: 'Error 401: Unauthorized.',\n [HTTPResponseStatusCodesEnums.InternalServerError]: 'Error 500: Internal server error.',\n 'default': `Error ${error.message} in request.`,\n });\n error['detail'] = await error?.cause?.json();\n if (envManager.get('ENV') !== 'production')\n console.error(errorMessage, '\\nError cause: ', error?.cause, '\\nError detail: ', error['detail']);\n throw error; // Lanzar un error con el código de estado HTTP\n }\n finally {\n dispatchResponse(response);\n }\n}\nasync function GET(url, args = { isJson: true, idToken: false }) {\n const headers = new Headers();\n await appendHeaderAuthorization(headers, args);\n const init = { method: 'GET', headers: headers };\n const request = new Request(url, init);\n const fetch = () => httpFetch(request).catch(err => {\n throw err;\n });\n let result = await fetch();\n if (args['isJson'])\n result = await result.json();\n return result;\n}\nasync function POST(url, body, args) {\n const headers = new Headers({ 'Content-Type': 'application/json' });\n await appendHeaderAuthorization(headers, args);\n const init = { method: 'POST', headers: headers, body: JSON.stringify(body) };\n const request = new Request(url, init);\n const response = await httpFetch(request);\n return response;\n}\nasync function PUT(url, body, args) {\n const headers = new Headers({ 'Accept': 'application/json', 'Content-Type': 'application/json' });\n await appendHeaderAuthorization(headers, args);\n const init = {\n method: 'PUT',\n headers: headers,\n body: JSON.stringify(body),\n };\n const request = new Request(url, init);\n const response = await httpFetch(request);\n return response;\n}\nasync function PATCH(url, body, args) {\n const headers = new Headers({ 'Accept': 'application/json', 'Content-Type': 'application/json' });\n await appendHeaderAuthorization(headers, args);\n const init = {\n method: 'PATCH',\n headers: headers,\n body: JSON.stringify(body),\n };\n const request = new Request(url, init);\n const response = await httpFetch(request);\n return response;\n}\nasync function DELETE(url, body, args) {\n const headers = new Headers({ 'Accept': 'application/json', 'Content-Type': 'application/json' });\n await appendHeaderAuthorization(headers, args);\n const init = {\n method: 'DELETE',\n headers: headers,\n };\n if (body)\n init['body'] = JSON.stringify(body);\n const request = new Request(url, init);\n const response = await httpFetch(request);\n return response;\n}\nasync function appendHeaderAuthorization(headers, args) {\n if (!(await authInformer.isAuthenticated()))\n return;\n headers.append('Authorization', `Bearer ${await authInformer.accessToken()}`);\n if (!args)\n return;\n if (args['idToken'])\n headers.append('id_token', `${await authInformer.idToken()}`);\n if (args['timeZone'])\n headers.append('timezone', Intl.DateTimeFormat().resolvedOptions().timeZone || 'America/Bogota');\n}\nconst httpRequest = { GET, POST, PUT, PATCH, DELETE };\n\nasync function deserializerJsonApi(options, data) {\n const deserializer = new Deserializer(options);\n const dataset = await deserializer.deserialize(data);\n return dataset;\n}\nconst JsonApi = { deserializer: deserializerJsonApi };\n\nfunction showLoading(props = { showHeader: true }) {\n if (window['showLoading'])\n window['showLoading']({ ...props, show: true });\n}\nfunction hideLoading() {\n if (window['hideLoading'])\n window['hideLoading']();\n}\n\nfunction ubitsMemoize(fn) {\n const cache = new Map();\n return function (...args) {\n const key = JSON.stringify(args);\n if (cache.has(key)) {\n return cache.get(key);\n }\n const result = fn.apply(this, args);\n cache.set(key, result);\n return result;\n };\n}\n\nfunction openTab(url) {\n window.open(url).focus();\n}\nfunction openInNewTab(url) {\n window.open(url, '_blank').focus();\n}\n\nconst dispatchPlaylist = (detail) => {\n ubitsDispatchEvent(new CustomEvent('openPlaylist', {\n bubbles: true,\n detail: {\n action: detail.action,\n playlistItem: detail?.playlistItem,\n called: detail?.called,\n typePlaylist: detail?.typePlaylist,\n tabPlaylist: detail?.tabPlaylist,\n },\n }));\n};\n\nfunction moodleRouter(context, plugin, queryParams = '') {\n const moodleUrl = plugin\n ? `/lms/${context}/${plugin}${queryParams}`\n : `/lms/${context}${queryParams}`;\n navigateToUrl(moodleUrl);\n}\nfunction navigate(url) {\n navigateToUrl(url);\n}\n\nfunction initSentry(browserOptions) {\n return Sentry.init(browserOptions);\n}\n\nfunction urlSearchParams() {\n const newURL = window.location.href.split('?');\n return new URLSearchParams(newURL.length && newURL[1] ? newURL[1] : '');\n}\n\nconst uuid = () => 'sxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n});\n\nconst ubitsStorageChangeEvent = 'ubitsStorageChange';\n\nclass Strategy {\n storageService;\n constructor(storageService) {\n this.storageService = storageService;\n }\n}\nclass WebStorageUnencryptedDataStrategy extends Strategy {\n get length() {\n return this.storageService.length;\n }\n key(index) {\n return this.storageService.key(index);\n }\n async getItem(key) {\n const value = this.storageService.getItem(key);\n if (!value)\n return null;\n return JSON.parse(value);\n }\n async setItem(key, value) {\n this.storageService.setItem(key, JSON.stringify(value || ''));\n }\n async removeItem(key) {\n this.storageService.removeItem(key);\n }\n}\nclass WebStorageContext extends Strategy {\n strategy;\n constructor(storageService) {\n super(storageService);\n this.createStrategy();\n }\n createStrategy() {\n // if (process.env.ENV === 'development') {\n this.strategy = new WebStorageUnencryptedDataStrategy(this.storageService);\n // } else {\n // this.strategy = new WebStorageEncodedDateStrategy(this.storageService)\n // }\n }\n get length() {\n return this.strategy.length;\n }\n key(index) {\n return this.strategy.key(index);\n }\n async getItem(key) {\n return this.strategy.getItem(key);\n }\n async setItem(key, value) {\n await this.strategy.setItem(key, value);\n this.dispatchChangeEvent(key, value);\n }\n async removeItem(key) {\n await this.strategy.removeItem(key);\n this.dispatchChangeEvent(key, null);\n }\n dispatchChangeEvent(key, value) {\n document.dispatchEvent(new CustomEvent(ubitsStorageChangeEvent, { detail: { key, value } }));\n }\n}\n\nclass WebStorageSimpleRepository {\n reference;\n webStorageContext;\n get key() {\n return this.reference;\n }\n constructor(reference, storageService) {\n this.webStorageContext = new WebStorageContext(storageService);\n this.reference = reference;\n }\n async get(id) {\n return this.webStorageContext.getItem(this.key);\n }\n async set(item) {\n await this.webStorageContext.setItem(this.key, item);\n }\n async update(item) {\n await this.set(item);\n }\n async delete(id) {\n await this.webStorageContext.removeItem(this.key);\n }\n}\n\nclass AccessTokenStorageRepository extends WebStorageSimpleRepository {\n}\n\nconst accessTokenRepository = new AccessTokenStorageRepository('auth', localStorage);\n\nclass AccessTokenInformer {\n async accessToken() {\n const token = await accessTokenRepository.get();\n return token || '';\n }\n async decodeToken() {\n const token = await this.accessToken();\n return token ? jwtDecode(token) : {};\n }\n async tokenIsValid() {\n const tokenExpirationBufferSeconds = 60;\n const decodeToken = await this.decodeToken();\n const exp = decodeToken.exp || 0;\n const now = Math.floor(Date.now() / 1000);\n const diff = exp - now;\n return diff > tokenExpirationBufferSeconds;\n }\n}\nconst accessTokenInformer = new AccessTokenInformer();\n\nclass AccessTokenManager {\n async setAccessToken(token) {\n await accessTokenRepository.set(token);\n }\n}\nconst accessTokenManager = new AccessTokenManager();\n\nclass UserApkStorageRepository extends WebStorageSimpleRepository {\n}\nclass TokenApkStorageRepository extends WebStorageSimpleRepository {\n}\n\nclass ApkManager {\n credentials;\n constructor(credentials) {\n this.credentials = credentials;\n }\n async initializeApk(credentials) {\n this.credentials = credentials;\n const url = new URL(window.location.href.replace('#/', ''));\n const { searchParams } = url;\n const accessToken = searchParams.get('apk_access_token') ?? '';\n const idToken = searchParams.get('apk_id_token') ?? '';\n await this.login(accessToken, idToken);\n }\n async login(accessToken, idToken) {\n await this.setAccessToken(accessToken);\n await this.setTokenApk(accessToken);\n await this.setUserApk(idToken);\n }\n async setAccessToken(accessToken) {\n if (!accessToken)\n return;\n await accessTokenManager.setAccessToken(accessToken);\n }\n async setTokenApk(accessToken) {\n if (!accessToken)\n return;\n const { scope, iat, exp } = jwtDecode(accessToken);\n const storedObject = {\n expiresAt: exp,\n body: {\n 'access_token': accessToken,\n 'scope': scope,\n 'expires_in': (exp ?? 0) - (iat ?? 0),\n 'token_type': 'Bearer',\n 'audience': this.credentials.audience,\n 'oauthTokenScope': scope,\n 'client_id': this.credentials.clientId,\n },\n };\n const localStorageKey = `@@auth0spajs@@::${this.credentials.clientId}::${this.credentials.audience}::${scope}`;\n const repository = new TokenApkStorageRepository(localStorageKey, localStorage);\n await repository.set(storedObject);\n }\n async setUserApk(idToken) {\n if (!idToken)\n return;\n const decodedToken = jwtDecode(idToken);\n const [header, payload, signature] = idToken.split('.');\n const userObject = {\n 'id_token': idToken,\n 'decodedToken': {\n 'encoded': {\n header,\n payload,\n signature,\n },\n 'header': JSON.parse(window.atob(header)),\n 'claims': { '__raw': idToken, ...decodedToken },\n 'user': decodedToken,\n },\n };\n const localStorageKey = `@@auth0spajs@@::${this.credentials.clientId}::@@user@@`;\n const repository = new UserApkStorageRepository(localStorageKey, localStorage);\n await repository.set(userObject);\n }\n}\n\nclass ApkCredentialModel {\n clientId = '';\n audience = '';\n constructor(init = {}) {\n injectProperties(this, init);\n }\n}\n\nconst apkManager = new ApkManager(new ApkCredentialModel());\n\nclass Auth0Informer {\n async user() {\n return auth0Repository.user();\n }\n async isAuthenticated() {\n const isAuthenticated = await auth0Repository.isAuthenticated();\n return isAuthenticated;\n }\n async accessToken() {\n if (await this.tokenIsValid())\n return accessTokenInformer.accessToken();\n const token = await auth0Repository.accessToken();\n await accessTokenManager.setAccessToken(token);\n return token;\n }\n async decodeToken() {\n return accessTokenInformer.decodeToken();\n }\n async tokenIsValid() {\n return accessTokenInformer.tokenIsValid();\n }\n async idToken() {\n return auth0Repository.idToken();\n }\n async handleRedirectCallback() {\n return auth0Repository.handleRedirectCallback();\n }\n async getPermissions() {\n const permissions = [];\n function pushPermissionOnce(permissionCandidate) {\n const userPermissionLike = permissionCandidate;\n if (Object.values(UserPermission).includes(userPermissionLike) &&\n !permissions.includes(userPermissionLike)) {\n permissions.push(userPermissionLike);\n }\n }\n const decodedAccessToken = await this.decodeToken();\n const permissionCandidates = (decodedAccessToken.permissions ?? []).concat(decodedAccessToken.scope?.split(' ') ?? []);\n permissionCandidates.forEach((permissionCandidate) => pushPermissionOnce(permissionCandidate));\n return permissions;\n }\n}\nconst auth0Informer = new Auth0Informer();\n\nclass Auth0Manager {\n async createClient(credentials) {\n await auth0Repository.createClient(credentials);\n }\n async initializeApk(credentials) {\n await apkManager.initializeApk(credentials);\n const isAuthenticated = await auth0Repository.isAuthenticated();\n const tokenIsValid = await accessTokenInformer.tokenIsValid();\n if (isAuthenticated && !tokenIsValid)\n await this.checkSession();\n }\n async login(targetUrl) {\n await auth0Repository.login(targetUrl);\n }\n async checkSession() {\n await auth0Repository.checkSession();\n const token = await auth0Repository.accessToken();\n await accessTokenManager.setAccessToken(token);\n }\n async requestAccessToken() {\n const token = await accessTokenInformer.accessToken();\n const tokenIsValid = await accessTokenInformer.tokenIsValid();\n if (token && tokenIsValid)\n return token;\n await this.checkSession();\n return accessTokenInformer.accessToken();\n }\n async logout(returnTo, onRedirect) {\n await auth0Repository.logout(returnTo, onRedirect);\n }\n}\nconst auth0Manager = new Auth0Manager();\n\nclass AuthInformer {\n async user() {\n return auth0Informer.user();\n }\n async isAuthenticated() {\n return auth0Informer.isAuthenticated();\n }\n async accessToken() {\n return auth0Informer.accessToken();\n }\n async idToken() {\n return auth0Informer.idToken();\n }\n async getPermissions() {\n return auth0Informer.getPermissions();\n }\n async accessTokenExpirationDate() {\n if (!(await auth0Informer.tokenIsValid()))\n return new Date();\n const decodeToken = await auth0Informer.decodeToken();\n return new Date(new Date(0).setUTCSeconds(decodeToken?.exp));\n }\n async accessTokenExpirationTimestamp() {\n return (await this.accessTokenExpirationDate()).getTime();\n }\n}\nconst authInformer = new AuthInformer();\n\nclass OriginPageMemoryRepository extends MemorySimpleRepository {\n}\nclass OriginPageStorageRepository extends WebStorageSimpleRepository {\n}\n\nconst originPageRepository = window?.localStorage\n ? new OriginPageStorageRepository('originPage', localStorage)\n : new OriginPageMemoryRepository();\n\nclass OriginPageInformer {\n originPageID = 'origin';\n async url() {\n const originPage = await originPageRepository.get(this.originPageID);\n if (!originPage)\n return '';\n const url = originPage.url;\n await originPageRepository.delete(this.originPageID);\n return Boolean(url) && url !== '/' ? url : '';\n }\n}\nconst originPageInformer = new OriginPageInformer();\n\nclass OriginPageModel {\n id = '';\n url = '';\n constructor(init = {}) {\n injectProperties(this, init);\n this.url = this.url || '/';\n }\n}\n\nclass OriginPageManager {\n originPageID = 'origin';\n async clear() {\n await originPageRepository.delete(this.originPageID);\n }\n async load(url) {\n this.clear();\n if (!url || url === '/')\n return;\n const originPage = new OriginPageModel({ id: this.originPageID, url });\n await originPageRepository.set(originPage);\n }\n}\nconst originPageManager = new OriginPageManager();\n\nvar AuthBroadcastChannelEnum;\n(function (AuthBroadcastChannelEnum) {\n AuthBroadcastChannelEnum[\"Logout\"] = \"logout\";\n})(AuthBroadcastChannelEnum || (AuthBroadcastChannelEnum = {}));\n\nclass AuthBroadcastChannel {\n broadcastChannel;\n subscribe() {\n this.broadcastChannel = new BroadcastChannel('ubitsBroadcastChannel');\n this.broadcastChannel.onmessage = this.onBroadcastChannelMessage.bind(this);\n }\n unSubscribe() {\n this.broadcastChannel.onmessage = null;\n this.broadcastChannel.close();\n this.broadcastChannel = null;\n }\n dispatchAction(action, args) {\n this.broadcastChannel.postMessage({ action, args });\n }\n async onBroadcastChannelMessage(event) {\n const action = event.data.action;\n const args = event.data.args;\n if (action === AuthBroadcastChannelEnum.Logout && args?.url) {\n await this.onLogoutMessage();\n }\n }\n async onLogoutMessage() {\n const landingPage = envManager.get('LANDING_URL')?.toString();\n window.location.replace(landingPage);\n }\n}\nconst authBroadcastChannel = new AuthBroadcastChannel();\n\nclass AuthMoodleRepository {\n async logout(username) {\n if (!username)\n return;\n const url = `${envManager.get('LMS_URL')}/auth/oidc/logout.php?username=${username}`;\n await fetch(url).then(async (res) => {\n console.info('Logout Lms Success', res);\n });\n }\n}\nconst authMoodleRepository = new AuthMoodleRepository();\n\nclass AuthManager {\n async initializeApp() {\n authBroadcastChannel.subscribe();\n const credentials = new Auth0CredentialModel({\n domain: envManager.get('AUTH0_DOMAIN')?.toString(),\n clientId: envManager.get('AUTH0_CLIENT_ID')?.toString(),\n audience: envManager.get('AUTH0_AUDIENCE')?.toString(),\n });\n await auth0Manager.createClient(credentials);\n await auth0Manager.initializeApk(credentials);\n if (await auth0Informer.isAuthenticated()) {\n await this.handleAuthenticatedUser();\n return;\n }\n if (this.shouldParseRedirectResult()) {\n await this.handleRedirectCallback();\n return;\n }\n await this.login();\n }\n async handleAuthenticatedUser() {\n await auth0Manager.requestAccessToken();\n const url = window.location.hash;\n await this.replaceState(url);\n }\n async handleRedirectCallback() {\n const url = await auth0Informer.handleRedirectCallback();\n await this.replaceState(url);\n }\n shouldParseRedirectResult() {\n const query = window.location.search;\n return query.includes('code=') && query.includes('state=');\n }\n async replaceState(url) {\n await originPageManager.load(url);\n window.history.replaceState({}, document.title, url);\n }\n async login() {\n await clearData();\n const targetUrl = window.location.href;\n await auth0Manager.login(targetUrl);\n }\n async checkSession() {\n await auth0Manager.checkSession();\n }\n async logout(redirectTo = '') {\n redirectTo = redirectTo || envManager.get('LMS_URL')?.toString();\n const user = await auth0Informer.user();\n await clearData();\n if (user)\n await authMoodleRepository.logout(user?.username);\n await auth0Manager.logout(redirectTo, this.onLogoutCallback.bind(this));\n }\n async onLogoutCallback(url) {\n authBroadcastChannel.dispatchAction(AuthBroadcastChannelEnum.Logout, { url });\n ubitsDispatchEvent(new CustomEvent('logout'));\n window.location.replace(url);\n }\n}\nconst authManager = new AuthManager();\n\nclass AuthUserModel extends Auth0UserModel {\n}\n\nconst userData = {\n userName: 'ubits@ubits.co',\n email: 'ubits@ubits.co',\n emailVerified: true,\n familyName: 'ubits',\n givenName: 'ubits',\n name: 'ubits',\n nickname: 'ubits',\n picture: '',\n sub: 'sub',\n updatedAt: 'updatedAt',\n loginsCount: 0,\n companyId: 0,\n mdlCompanyId: 0,\n};\n\n/* Info de Moodle */\nclass SubscriptionModel {\n id = '';\n userId = '';\n userName = '';\n role = RoleTypeEnum.Student;\n location = '';\n lastName = '';\n firstName = '';\n birthDate = '';\n learningId = '';\n email = '';\n policyAgreed = false;\n fullName = '';\n subscriptionType = '';\n timeCreated = '';\n subscriptionStartDate = '';\n subscriptionEndDate = '';\n subscriptionIsActive = true;\n planType = PlanTypeEnum.Demo;\n planName = '';\n gender = null;\n linkedInUrl = '';\n educationLevel = null;\n companyId = '';\n companyName = '';\n companyAreaName = '';\n companyPosition = '';\n featuresMigrate = {};\n constructor(init = {}) {\n injectProperties(this, init);\n this.id = this.userName;\n this.userId = this.learningId;\n this.fullName = `${this.firstName} ${this.lastName}`;\n }\n}\n\nconst subscriptionData = new SubscriptionModel({\n id: userData.userName,\n userId: userData.userName,\n learningId: userData.userName,\n userName: userData.userName,\n planType: PlanTypeEnum.Demo,\n planName: 'Demo',\n email: userData.email,\n birthDate: '2003-07-03',\n role: RoleTypeEnum$1.Student,\n location: 'location',\n policyAgreed: true,\n firstName: 'Ubits',\n lastName: 'Dev',\n companyAreaName: 'pruebas',\n subscriptionType: 'Vigencia 30',\n subscriptionStartDate: '2020-01-01',\n subscriptionEndDate: '2020-01-31',\n subscriptionIsActive: true,\n gender: GenderTypeEnum.Female,\n linkedInUrl: 'ubits@ubits.co',\n educationLevel: EducationLevelEnum.University,\n});\n\nconst coBrandingData = {\n id: subscriptionData.userId,\n title: 'Bienvenidos a los cursos de nuestra empresas',\n titleLogo: 'https://lms.dev.ubitslearning.com/theme/edumy/pix/u-ubits1.png',\n description: `\r\n Te presentamos a continuación los cursos desarrollados para tu formación en la empresa.\r\n Esperamos que los disfrutes\r\n `,\n descriptionLogo: 'https://lms.dev.ubitslearning.com/theme/edumy/pix/u-ubits1.png',\n};\n\n/* Info Auth0 */\nclass UserModel {\n id = '';\n userName = '';\n email = '';\n emailVerified = false;\n familyName = '';\n givenName = '';\n name = '';\n nickname = '';\n picture = '';\n sub = '';\n updatedAt = '';\n loginsCount = 0;\n companyId = 0;\n companyName = '';\n position = '';\n area = '';\n city = '';\n country = '';\n lastMetadataUpdate = '';\n mdlCompanyId = 0;\n mdlUserId = 0;\n organizationLevel = '';\n roleAuth0Id = '';\n roleAuth0Name = '';\n roleId = RoleIdEnum.Student;\n roleShortname = RoleTypeEnum.Student;\n _permissions = [];\n constructor(init = {}) {\n injectProperties(this, init);\n const regex = new RegExp(/\\#@#/g);\n this.userName = (this.userName || '').replace(regex, '@');\n this.nickname = (this.nickname || '').replace(regex, '@');\n this.companyId = Number(this.companyId);\n this.mdlCompanyId = Number(this.mdlCompanyId);\n }\n /**\n * Set user permissions\n *\n * @returns UserModel\n * */\n setPermissions(userPermissions) {\n if (userPermissions.length === 0) {\n // FIXME: set all permissions by default for backward compatibility except adminhr:company_switch\n userPermissions = Object.values(UserPermission).filter(permission => permission != UserPermission.AdminHrCompanySwitch);\n }\n this._permissions = userPermissions;\n return this;\n }\n /**\n * The user has at least one permission\n *\n * @param ...userPermission UserPermission\n *\n * @returns boolean\n * */\n hasPermission(...userPermission) {\n return userPermission.some(item => this._permissions.includes(item));\n }\n /**\n * The user has all permissions\n *\n * @param ...userPermission UserPermission\n *\n * @returns boolean\n * */\n hasPermissions(...userPermission) {\n return userPermission.every(item => this._permissions.includes(item));\n }\n}\n\nclass UserInformer {\n async get() {\n const user = await authInformer.user();\n if (!user)\n return null;\n return new UserModel({\n id: user.userMetadata.userId,\n email: user.email,\n emailVerified: user.emailVerified,\n familyName: user.familyName,\n givenName: user.givenName,\n name: user.name,\n nickname: user.nickname,\n picture: user.picture,\n sub: user.sub,\n updatedAt: user.updatedAt,\n userName: user.username,\n loginsCount: user.loginsCount,\n companyId: user.userMetadata?.companyId,\n companyName: user.userMetadata?.companyName,\n mdlCompanyId: user.userMetadata?.mdlCompanyId || user.userMetadata?.companyId,\n area: user.userMetadata.area,\n city: user.userMetadata.city,\n country: user.userMetadata.country,\n lastMetadataUpdate: user.userMetadata.lastMetadataUpdate,\n mdlUserId: user.userMetadata.mdlUserId,\n organizationLevel: user.userMetadata.organizationLevel,\n roleAuth0Id: user.userMetadata.roleAuth0Id,\n roleAuth0Name: user.userMetadata.roleAuth0Name,\n roleId: user.userMetadata.roleId,\n roleShortname: user.userMetadata.roleShortname,\n position: user.userMetadata.position,\n }).setPermissions((await authInformer.getPermissions()));\n }\n async userName() {\n const user = await this.get();\n return user?.userName || '';\n }\n async userEmail() {\n const user = await this.get();\n return user?.email || '';\n }\n async loginsCount() {\n const user = await this.get();\n return user?.loginsCount || 0;\n }\n}\nconst userInformer = new UserInformer();\n\nclass UserManager {\n async loadData() {\n //\n }\n}\nconst userManager = new UserManager();\n\nconst providerFactory = (providers) => {\n const currentEnv = envManager.get('ENV');\n const providerKey = Object.keys(providers).find(key => key === currentEnv) || EnvironmentEnum.Development;\n const provider = providers[providerKey];\n return provider;\n};\n\nclass StrategyProvider {\n providers;\n constructor(providers = {}) {\n this.providers = providers;\n }\n get strategy() {\n return this.buildStrategy().then((key) => this.providers[key] ?? null);\n }\n getDefaultProviderKey() {\n const currentEnv = envManager.get('ENV');\n const provider = Object.keys(this.providers).find(key => key === currentEnv);\n return provider || EnvironmentEnum.Development;\n }\n async mainStrategy(callbackName, args) {\n const provider = await this.strategy;\n if (provider[callbackName])\n return provider[callbackName](args);\n }\n async buildStrategy() {\n const defaultKey = this.getDefaultProviderKey();\n return defaultKey || Object.keys(this.providers || {})[0] || null;\n }\n}\n\nclass StrategySimpleRepository extends StrategyProvider {\n async get(id) {\n return this.mainStrategy('get', id);\n }\n async set(item) {\n return this.mainStrategy('set', item);\n }\n async update(item) {\n return this.mainStrategy('update', item);\n }\n async delete(id) {\n return this.mainStrategy('delete', id);\n }\n}\n\nclass StrategyRepository extends StrategySimpleRepository {\n async count(filter) {\n return this.mainStrategy('count', filter);\n }\n async search(filter) {\n return this.mainStrategy('search', filter);\n }\n async searchPaginator(filter) {\n return this.mainStrategy('searchPaginator', filter);\n }\n inputFormat(data) {\n return data;\n }\n outputFormat(data) {\n return data;\n }\n}\n\nclass HttpRepository {\n get url() {\n return '';\n }\n async get(id, args) {\n throw new Error(`Method not implemented`);\n }\n async set(value, args) {\n throw new Error(`Method not implemented`);\n }\n async update(value, args) {\n throw new Error(`Method not implemented`);\n }\n async delete(value, args) {\n throw new Error(`Method not implemented`);\n }\n async count(filter, args) {\n throw new Error(`Method not implemented`);\n }\n async search(filter, args) {\n throw new Error(`Method not implemented`);\n }\n async searchPaginator(filter, args) {\n throw new Error(`Method not implemented`);\n }\n inputFormat(data) {\n return data;\n }\n outputFormat(data) {\n return data;\n }\n}\n\nclass InterceptorRepository {\n originRepository;\n interceptor;\n constructor(originRepository, interceptor) {\n this.originRepository = originRepository;\n this.interceptor = interceptor;\n }\n async get(id, args) {\n let item = await this.interceptor.get(id, args);\n if (item)\n return item;\n item = await this.originRepository.get(id, args);\n await this.interceptor.set(item, args);\n return item;\n }\n async set(value, args) {\n const originResponse = await this.originRepository.set(value, args);\n const interceptorResponse = await this.interceptor.set(value, args);\n return { originResponse, interceptorResponse };\n }\n async update(value, args) {\n const originResponse = await this.originRepository.update(value, args);\n const interceptorResponse = await this.interceptor.update(value, args);\n return { originResponse, interceptorResponse };\n }\n async delete(value, args) {\n const originResponse = await this.originRepository.delete(value, args);\n const interceptorResponse = await this.interceptor.delete(value, args);\n return { originResponse, interceptorResponse };\n }\n async count(filter, args) {\n const items = await this.search(filter, args);\n return items.length;\n }\n async search(filter, args) {\n let items = await this.interceptor.search(filter, args);\n if (items?.length)\n return items;\n items = await this.originRepository.search(filter, args);\n await this.interceptor.set(items, args);\n return searchObjects(filter, items);\n }\n async searchPaginator(filter, args) {\n const data = (await this.search(filter, args)) || [];\n const countFilter = JSON.parse(JSON.stringify(filter)) || {};\n delete countFilter['page'];\n const count = (await this.count(countFilter, args)) || 0;\n return { data, count };\n }\n inputFormat(data, args) {\n throw new Error('Method not implemented.');\n }\n outputFormat(data, args) {\n throw new Error('Method not implemented.');\n }\n}\n\nclass MemoryRepository {\n items = new Map();\n constructor(items = []) {\n for (const item of items)\n this.set(item).then();\n }\n async get(id) {\n const item = this.items.get(id) || {};\n return Promise.resolve(this.inputFormat(item));\n }\n async set(value) {\n if (!value)\n return;\n const items = Array.isArray(value) ? value : [value];\n for (const item of items) {\n item['id'] = item['id'] || uuid();\n this.items.set(item['id'], item);\n }\n }\n async update(value) {\n await this.set(value);\n }\n async delete(value) {\n if (!value)\n return;\n const ids = Array.isArray(value) ? value : [value];\n for (const item of ids) {\n if (typeof item === 'string') {\n this.items.delete(item);\n }\n else if (typeof item === 'object' && item['id']) {\n this.items.delete(item['id']);\n }\n }\n }\n async count(filter) {\n const data = (await this.search(filter)) || [];\n return Promise.resolve(data.length);\n }\n async search(filter) {\n const args = this.getArgsFilterSearch(filter?.args ? filter : null);\n const order = filter ? filter.order : null;\n const logicalOperator = filter?.logicalOperator\n ? filter.logicalOperator\n : FilterLogicalOperatorEnum.AND;\n const data = [];\n this.items.forEach(item => data.push(this.inputFormat(item)));\n let currentItems = args ? filterObject(logicalOperator, data, args) : data;\n if (order) {\n const key = filter.order.key;\n const sort = filter.order.sort;\n currentItems = sortObjects(key, currentItems, sort);\n }\n currentItems = this.sliceData(filter, currentItems);\n return Promise.resolve(currentItems || []);\n }\n getArgsFilterSearch(filter) {\n return filter ? filter.args : null;\n }\n async searchPaginator(filter) {\n const data = (await this.search(filter)) || [];\n const countFilter = JSON.parse(JSON.stringify(filter)) || {};\n delete countFilter['page'];\n const count = (await this.count(countFilter)) || 0;\n return { data, count };\n }\n inputFormat(data) {\n return data;\n }\n outputFormat(data) {\n return data;\n }\n sliceData(filter, data) {\n data = data || [];\n if (!filter?.page)\n return data;\n const start = filter.page.start;\n const end = filter.page.end;\n if (start >= 0 && end >= start) {\n return data.slice(start, end);\n }\n return data;\n }\n}\n\nclass Repository {\n}\n\nclass WebStorageRepository {\n reference;\n webStorageContext;\n constructor(reference, storageService) {\n this.reference = reference;\n this.webStorageContext = new WebStorageContext(storageService);\n }\n getKeyId(id) {\n return `${this.reference}/${id}`;\n }\n async get(id) {\n return this.webStorageContext.getItem(this.getKeyId(id));\n }\n async set(value) {\n if (!value)\n return;\n const items = Array.isArray(value) ? value : [value];\n for (const item of items) {\n item['id'] = item['id'] || uuid();\n const elementKey = this.getKeyId(item['id']);\n await this.webStorageContext.setItem(elementKey, item);\n }\n }\n async update(value) {\n await this.set(value);\n }\n async delete(value) {\n if (!value)\n return;\n const ids = Array.isArray(value) ? value : [value];\n for (const item of ids) {\n if (typeof item === 'string') {\n await this.webStorageContext.removeItem(this.getKeyId(item));\n }\n else if (typeof item === 'object' && item['id']) {\n await this.webStorageContext.removeItem(this.getKeyId(item['id']));\n }\n }\n }\n async count(filter) {\n const data = await this.search(filter);\n return data.length;\n }\n async search(filter) {\n const args = filter ? filter.args : {};\n const items = [];\n const logicalOperator = filter?.logicalOperator\n ? filter.logicalOperator\n : FilterLogicalOperatorEnum.AND;\n for (let index = 0; index < this.webStorageContext.length; index++) {\n const key = this.webStorageContext.key(index) || '';\n if (key.indexOf(`${this.reference}/`) === 0) {\n const item = await this.webStorageContext.getItem(key);\n items.push(item);\n }\n }\n return Promise.resolve(filterObject(logicalOperator, items, args));\n }\n async searchPaginator(filter) {\n const data = (await this.search(filter)) || [];\n const countFilter = JSON.parse(JSON.stringify(filter)) || {};\n delete countFilter['page'];\n const count = (await this.count(countFilter)) || 0;\n return { data, count };\n }\n inputFormat(data) {\n return data;\n }\n outputFormat(data) {\n return data;\n }\n}\n\nclass CoBrandingModel {\n id = '';\n title = '';\n titleLogo = '';\n description = '';\n descriptionLogo = '';\n constructor(init = {}) {\n injectProperties(this, init);\n this.descriptionLogo =\n this.descriptionLogo || `${envManager.get('GLOBAL_ASSETS_DOMAIN')}/img/ubits/ubits.png`;\n }\n}\n\nclass CoBrandingMemoryRepository extends MemorySimpleRepository {\n}\nclass CoBrandingHttpRepository extends HttpSimpleRepository {\n get url() {\n return `${envManager.get('GLOBAL_API_GATEWAY')}/users/self/company-branding/training-plan`;\n }\n async get(userName) {\n const currentUrl = `${this.url}?user_name=${userName}`;\n const data = (await httpRequest.GET(currentUrl)) || [];\n const headerTitle = data.find(item => item['name_field'] === 'header_title') || {};\n const headerDescription = data.find(item => item['name_field'] === 'header_description') || {};\n return new CoBrandingModel({\n id: userName,\n title: headerTitle['description'] || '',\n titleLogo: headerTitle['url_image'] || '',\n description: headerDescription['description'] || '',\n descriptionLogo: headerDescription['url_image'] || '',\n });\n }\n}\nclass CoBrandingStorageRepository extends WebStorageRepository {\n}\n\nconst coBrandingOriginRepository = providerFactory({\n [EnvironmentEnum.Production]: new CoBrandingHttpRepository(),\n [EnvironmentEnum.Test]: new CoBrandingHttpRepository(),\n [EnvironmentEnum.Development]: new CoBrandingHttpRepository(),\n [EnvironmentEnum.Local]: new CoBrandingHttpRepository(),\n [EnvironmentEnum.Mocked]: new CoBrandingMemoryRepository(coBrandingData),\n});\nconst coBrandingStorageInterceptorRepository = window?.localStorage\n ? new CoBrandingStorageRepository('coBranding', localStorage)\n : new CoBrandingMemoryRepository();\nconst coBrandingRepository = new InterceptorSimpleRepository(coBrandingOriginRepository, coBrandingStorageInterceptorRepository);\n\nclass CoBrandingInformer {\n async get() {\n const id = await userInformer.userName();\n return coBrandingRepository.get(id);\n }\n}\nconst coBrandingInformer = new CoBrandingInformer();\n\nconst contactData = {\n phone: '+573162777677',\n personalEmail: 'dayanna.baronr@gmail.com',\n address: 'cra 5 nro 8-10',\n country: 'CO',\n city: 'Ibagué',\n businessEmail: 'dbaron@ubits.co',\n username: 'dbaron@ubits.co',\n id: 'dbaron@ubits.co',\n};\n\nclass ContactModel {\n id = '';\n address = '';\n country = '';\n city = '';\n phone = '';\n personalEmail = '';\n businessEmail = '';\n username = '';\n constructor(init = {}) {\n injectProperties(this, init);\n this.id = this.username;\n this.country = this.country.toUpperCase();\n }\n}\n\nclass ContactMemoryRepository extends MemorySimpleRepository {\n}\nclass ContactHttpRepository extends HttpSimpleRepository {\n get url() {\n return `${envManager.get('GLOBAL_API_GATEWAY')}/users/self/contact-details`;\n }\n async get(userName) {\n const endpoint = `${this.url}?user_name=${userName}`;\n const data = await httpRequest.GET(endpoint);\n return new ContactModel({\n id: userName,\n username: userName,\n personalEmail: data['personal_email'],\n businessEmail: data['business_email'],\n phone: data['phone'],\n city: data['city'],\n address: data['address'],\n country: data['country'],\n });\n }\n async set(data) {\n const currentUrl = `${this.url}?user_name=${data.username}`;\n const body = {\n 'personal_email': data['personalEmail'],\n 'business_email': data['businessEmail'],\n 'phone': data['phone'],\n 'city': data['city'],\n 'address': data['address'],\n 'country': data['country'],\n };\n await httpRequest.PUT(currentUrl, body);\n }\n async update(data) {\n const currentUrl = `${this.url}`;\n const body = {\n 'personal_email': data['personalEmail'],\n 'phone': data['phone'],\n 'user_name': data['username'],\n };\n await httpRequest.PATCH(currentUrl, body);\n }\n}\nclass ContactWebStorageRepository extends WebStorageRepository {\n}\n\nconst contactOriginRepository = providerFactory({\n [EnvironmentEnum.Production]: new ContactHttpRepository(),\n [EnvironmentEnum.Test]: new ContactHttpRepository(),\n [EnvironmentEnum.Development]: new ContactHttpRepository(),\n [EnvironmentEnum.Local]: new ContactHttpRepository(),\n [EnvironmentEnum.Mocked]: new ContactMemoryRepository(contactData),\n});\nconst contactInterceptorRepository = window?.localStorage\n ? new ContactWebStorageRepository('contact', localStorage)\n : new ContactMemoryRepository();\nconst contactRepository = new InterceptorSimpleRepository(contactOriginRepository, contactInterceptorRepository);\n\nclass ContactInformer {\n async get() {\n const id = await userInformer.userName();\n return contactRepository.get(id);\n }\n async isUpdateRequired() {\n const contactData = await this.get();\n return contactData?.personalEmail === '' || contactData?.phone === '';\n }\n}\nconst contactInformer = new ContactInformer();\n\nclass ContactManager {\n async set(data) {\n await contactRepository.set(data);\n }\n async updateRequired(data) {\n const id = await userInformer.userName();\n data.username = id;\n await contactRepository.update(data);\n }\n}\nconst contactManager = new ContactManager();\n\nclass FeatureFlagsModel {\n id = null;\n active = false;\n constructor(init = {}) {\n injectProperties(this, init);\n }\n}\n\nclass FeatureFlagsMemoryRepository extends MemoryRepository {\n}\nclass FeatureFlagsStorageRepository extends WebStorageRepository {\n}\n\nconst featureFlagsRepository = window?.localStorage\n ? new FeatureFlagsStorageRepository('featureFlags', localStorage)\n : new FeatureFlagsMemoryRepository();\n\nclass FeatureFlagsInformer {\n async get(id) {\n const featureFlags = await featureFlagsRepository.get(id);\n return featureFlags || new FeatureFlagsModel({ id });\n }\n}\nconst featureFlagsInformer = new FeatureFlagsInformer();\n\nclass FeatureFlagsManager {\n async set(item) {\n return featureFlagsRepository.set(item);\n }\n}\nconst featureFlagsManager = new FeatureFlagsManager();\n\nclass SubscriptionSimpleMemoryRepository extends MemorySimpleRepository {\n}\nclass SubscriptionHttpSimpleRepository extends HttpSimpleRepository {\n get url() {\n return `${envManager.get('GLOBAL_API_GATEWAY')}/users/self/subscription-details`;\n }\n async get(id) {\n const currentUrl = `${this.url}?user_name=${id}`;\n const options = { isJson: true, idToken: true };\n const data = await httpRequest.GET(currentUrl, options).catch(_ => {\n return null;\n });\n if (!data)\n return null;\n return new SubscriptionModel({\n birthDate: data['birthdate'],\n educationLevel: data['education_level'],\n email: data['email'],\n firstName: data['first_name'],\n fullName: data['full_name'],\n gender: data['gender'],\n lastName: data['last_name'],\n learningId: data['learning_id'],\n linkedInUrl: data['linkedin_url'],\n location: data['location'],\n planName: data['plan_name'],\n planType: data['plan_id'],\n policyAgreed: data['policy_agreed'],\n role: data['role'],\n subscriptionEndDate: data['subscription_end_date'],\n subscriptionIsActive: data['subscription_is_active'],\n subscriptionStartDate: data['subscription_start_date'],\n subscriptionType: data['subscription_type'],\n timeCreated: data['time_created'],\n userName: data['username'],\n companyId: data['company_id'],\n companyName: data['company_name'],\n companyAreaName: data['company_area_name'],\n companyPosition: data['company_position'],\n featuresMigrate: data['features_migrate'] || {},\n });\n }\n async set(data) {\n const currentUrl = `${this.url}/users/self`;\n const body = {\n 'user_name': data.userName,\n 'first_name': data.firstName,\n 'last_name': data.lastName,\n 'birthdate': data.birthDate,\n 'linkedin_url': data.linkedInUrl,\n 'gender': data.gender,\n 'education_level': data.educationLevel,\n 'email': data.email,\n };\n await httpRequest.PUT(currentUrl, body);\n }\n}\nclass SubscriptionStorageSimpleRepository extends WebStorageSimpleRepository {\n}\n\nconst subscriptionMemorySimpleRepository = new SubscriptionSimpleMemoryRepository(subscriptionData);\nconst subscriptionOriginRepository = providerFactory({\n [EnvironmentEnum.Production]: new SubscriptionHttpSimpleRepository(),\n [EnvironmentEnum.Test]: new SubscriptionHttpSimpleRepository(),\n [EnvironmentEnum.Development]: new SubscriptionHttpSimpleRepository(),\n [EnvironmentEnum.Local]: new SubscriptionHttpSimpleRepository(),\n [EnvironmentEnum.Mocked]: subscriptionMemorySimpleRepository,\n});\nconst storageSimpleRepository = window?.localStorage\n ? new SubscriptionStorageSimpleRepository('subscription', localStorage)\n : new SubscriptionSimpleMemoryRepository();\nconst subscriptionInterceptorSimpleRepository = providerFactory({\n [EnvironmentEnum.Production]: storageSimpleRepository,\n [EnvironmentEnum.Test]: storageSimpleRepository,\n [EnvironmentEnum.Development]: storageSimpleRepository,\n [EnvironmentEnum.Local]: storageSimpleRepository,\n [EnvironmentEnum.Mocked]: subscriptionMemorySimpleRepository,\n});\nconst subscriptionRepository = new InterceptorSimpleRepository(subscriptionOriginRepository, subscriptionInterceptorSimpleRepository);\n\nclass SubscriptionInformer {\n async get() {\n const isAuthenticated = await authInformer.isAuthenticated();\n if (!isAuthenticated)\n return new SubscriptionModel();\n try {\n const id = await userInformer.userName();\n const subscription = await subscriptionRepository.get(id);\n if (!Boolean(subscription?.id)) {\n return this.getBaseSubscription();\n }\n await this.loadFeatureFlags(subscription);\n return subscription;\n }\n catch (error) {\n return this.getBaseSubscription();\n }\n }\n async getBaseSubscription() {\n const user = await userInformer.get();\n const subscription = new SubscriptionModel({\n userName: user.userName,\n role: user.roleShortname,\n lastName: user.familyName,\n firstName: user.givenName,\n learningId: String(user.mdlUserId),\n email: user.email,\n fullName: user.name,\n companyId: String(user.companyId),\n companyAreaName: user.area,\n companyName: user.companyName,\n companyPosition: user.position,\n });\n return subscription;\n }\n async loadFeatureFlags(subscription) {\n const { featuresMigrate } = subscription;\n if (!featuresMigrate || !Object.keys(featuresMigrate).length)\n return;\n for (const [key, value] of Object.entries(featuresMigrate)) {\n if (key) {\n const featureFlag = new FeatureFlagsModel({\n id: key,\n active: Boolean(value),\n });\n await featureFlagsManager.set(featureFlag);\n }\n }\n }\n async userId() {\n const subscription = await this.get();\n return subscription.userId;\n }\n async companyId() {\n const subscription = await this.get();\n return subscription.companyId;\n }\n async companyName() {\n const subscription = await this.get();\n return subscription.companyName;\n }\n async planType() {\n const subscription = await this.get();\n return subscription.planType;\n }\n async isActive() {\n const subscription = await this.get();\n return subscription.subscriptionIsActive;\n }\n async role() {\n const subscription = await this.get();\n return subscription.role;\n }\n}\nconst subscriptionInformer = new SubscriptionInformer();\n\nclass SubscriptionManager {\n async set(data) {\n await subscriptionRepository.set(data);\n }\n async clearStorageSubscription() {\n const id = await userInformer.userName();\n await subscriptionRepository.delete(id);\n }\n async loadData() {\n //\n }\n}\nconst subscriptionManager = new SubscriptionManager();\n\nconst customizationData = [];\n\nclass CustomizationModel {\n id = '';\n companyId = '';\n section = '';\n sectionId = '';\n value = {};\n constructor(init = {}) {\n injectProperties(this, init);\n this.id = this.section;\n }\n}\nclass CustomizationValue {\n id = '';\n key = '';\n type = '';\n typeId = '';\n migrate = false;\n visible = false;\n src = '';\n value = '';\n constructor(init = {}) {\n injectProperties(this, init);\n }\n}\n\nclass CustomizationMemoryRepository extends MemoryRepository {\n}\nclass CustomizationHttpRepository extends HttpRepository {\n get url() {\n return `${envManager.get('GLOBAL_API_GATEWAY_BACKOFFICE')}/v1/backoffice/companies`;\n }\n async search(filter, args) {\n const companyId = filter?.args?.companyId?.value;\n const url = `${this.url}/${companyId}/customizations`;\n const response = await httpRequest.GET(url).catch(() => []);\n const customizations = [];\n response.forEach(item => {\n item.companyId = companyId;\n return this.addCustomization(this.inputFormat(item), customizations);\n });\n return customizations;\n }\n async set(customization) {\n const { sectionId, companyId, value } = customization;\n const values = Object.keys(value).map(key => value[key]);\n const files = this.getFiles(values);\n const loadRequest = files.length\n ? await this.loadImage(companyId, sectionId, files)\n : [];\n loadRequest.forEach(item => {\n const customValue = values.find(value => value.key === item.key);\n customValue.value = item.value;\n customValue.typeId = item.typeId;\n });\n const url = `${this.url}/${companyId}/customizations`;\n const body = values.map(value => this.outputFormatCustomizationValue(sectionId, value));\n await httpRequest.PUT(url, body).catch(() => []);\n return this.getAllCustomizations(companyId);\n }\n async delete(customization, args) {\n const { keyValue } = args;\n const value = customization.value[keyValue];\n if (!value)\n return;\n const body = {\n 'id': value.id,\n 'section': {\n 'id': customization.sectionId,\n },\n 'type': {\n 'id': value.typeId,\n },\n 'value': value.value,\n };\n const companyId = customization.companyId;\n const url = `${this.url}/${companyId}/customizations`;\n await httpRequest.DELETE(url, body);\n return this.getAllCustomizations(companyId);\n }\n async getAllCustomizations(companyId) {\n const filter = {\n args: {\n companyId: { operator: FilterOperatorEnum.EqualTo, value: companyId },\n },\n };\n return this.search(filter);\n }\n getFiles(values) {\n const getFileExtension = (fileName, value) => {\n const splitString = value.split(',');\n const mimeType = splitString[0].split(':')[1].split(';')[0];\n const extension = mimeType.split('/')[1];\n return `${fileName}.${extension}`;\n };\n return values\n .filter(item => item.src && item.src.includes('base64'))\n .map((value) => {\n const fileName = getFileExtension(value.key.toLowerCase(), value.src);\n const base64Data = value.src;\n return {\n 'name': fileName,\n 'type': {\n 'id': value.typeId,\n },\n 'resource': base64Data,\n };\n });\n }\n async loadImage(companyId, sectionId, files) {\n const bodyFiles = {\n 'section': {\n 'id': sectionId,\n },\n 'files': files,\n };\n const urlImages = `${this.url}/${companyId}/customizations/images`;\n const defaultData = { files: [] };\n const response = await httpRequest.PUT(urlImages, bodyFiles).catch(() => defaultData);\n const responseFiles = (await response.json()) || defaultData;\n const items = responseFiles['files'] || [];\n return items.map((item) => ({\n key: item['type']['name'],\n typeId: item['type']['id'],\n value: item['name'],\n }));\n }\n inputFormat(data) {\n const section = data['section'];\n const type = data['type'];\n return new CustomizationModel({\n companyId: data['companyId'],\n section: section['name'],\n sectionId: section['id'],\n value: {\n [type['name']]: {\n id: data['id'],\n key: type['name'],\n type: type['resource_type'],\n typeId: type['id'],\n migrate: data['migrate'],\n visible: section['visible'],\n value: data['value'] || '',\n src: data['path'] || '',\n },\n },\n });\n }\n outputFormatCustomizationValue(sectionId, item) {\n const data = {\n section: {\n id: sectionId,\n },\n type: {\n id: item.typeId,\n },\n value: item.value,\n };\n if (item?.id)\n data['id'] = item.id;\n return data;\n }\n addCustomization(customization, customizations) {\n const currentCustomization = customizations.find(item => item.id === customization.id);\n if (currentCustomization) {\n currentCustomization.value = { ...currentCustomization.value, ...customization.value };\n }\n else {\n customizations.push(customization);\n }\n }\n}\nclass CustomizationStorageRepository extends WebStorageRepository {\n}\n\nconst customizationOriginRepository = providerFactory({\n [EnvironmentEnum.Production]: new CustomizationHttpRepository(),\n [EnvironmentEnum.Test]: new CustomizationHttpRepository(),\n [EnvironmentEnum.Development]: new CustomizationHttpRepository(),\n [EnvironmentEnum.Local]: new CustomizationHttpRepository(),\n [EnvironmentEnum.Mocked]: new CustomizationMemoryRepository(customizationData),\n});\nconst customizationStorageInterceptorRepository = window?.localStorage\n ? new CustomizationStorageRepository('customization', localStorage)\n : new CustomizationMemoryRepository();\nconst customizationRepository = new InterceptorRepository(customizationOriginRepository, customizationStorageInterceptorRepository);\n\nclass CustomizationInformer {\n async getById(id, companyId) {\n companyId = companyId || (await subscriptionInformer.companyId());\n const filter = {\n args: {\n id: { operator: FilterOperatorEnum.EqualTo, value: id },\n companyId: { operator: FilterOperatorEnum.EqualTo, value: companyId },\n },\n };\n const items = await customizationRepository.search(filter);\n return items.length ? items[0] : null;\n }\n async search(companyId) {\n companyId = companyId || (await subscriptionInformer.companyId());\n const filter = {\n args: { companyId: { operator: FilterOperatorEnum.EqualTo, value: companyId } },\n };\n return customizationRepository.search(filter);\n }\n}\nconst customizationInformer = new CustomizationInformer();\n\nclass CustomizationManager {\n async setValues(customization, values) {\n if (!customization?.companyId || !customization?.sectionId)\n return;\n const currentValue = {};\n values.forEach(item => (currentValue[item.key] = item));\n customization.value = currentValue;\n const { originResponse } = await customizationRepository.set(customization);\n await this.updateCustomizations(originResponse);\n }\n async deleteValue(customization, keyValue) {\n const { originResponse } = await customizationRepository.delete(customization, { keyValue });\n await this.updateCustomizations(originResponse);\n }\n async updateCustomizations(items) {\n const currentItems = await customizationStorageInterceptorRepository.search();\n await customizationStorageInterceptorRepository.delete(currentItems);\n await customizationStorageInterceptorRepository\n .set(items)\n .finally(() => this.dispatchCustomizationEvent());\n }\n dispatchCustomizationEvent() {\n ubitsDispatchEvent(new CustomEvent('updateCustomization', { bubbles: true }));\n }\n}\nconst customizationManager = new CustomizationManager();\n\nclass OnboardingModel {\n id = '';\n userId = '';\n onboardingIsSkipped = false;\n onboardingSkippedUpdatedAt = '';\n userName = '';\n constructor(init = {}) {\n injectProperties(this, init);\n this.userId = this.id;\n }\n}\n\nconst onboardingData = new OnboardingModel({\n id: userData.userName,\n onboardingIsSkipped: true,\n onboardingSkippedUpdatedAt: '2003-07-03',\n userName: userData.userName,\n});\n\nclass OnboardingMemoryRepository extends MemorySimpleRepository {\n}\nclass OnboardingHttpRepository extends HttpSimpleRepository {\n get url() {\n return `${envManager.get('GLOBAL_API_GATEWAY')}/core/preferences/users/self`;\n }\n async get(id) {\n const currentUrl = `${this.url}?user_name=${id}`;\n let data = {};\n try {\n data = this.inputFormat({ ...(await httpRequest.GET(currentUrl)), id });\n }\n catch (error) {\n console.error(error);\n }\n return new OnboardingModel(data);\n }\n inputFormat(data) {\n return new OnboardingModel({\n id: data['id'],\n onboardingIsSkipped: data['onboarding_is_skipped'],\n onboardingSkippedUpdatedAt: data['onboarding_skipped_updated_at'],\n });\n }\n async set(data) {\n const currentUrl = `${this.url}`;\n await httpRequest.PATCH(currentUrl, {\n 'user_name': data.id,\n 'onboarding_is_skipped': data.onboardingIsSkipped,\n });\n }\n async delete(id) {\n throw new Error('Method not implemented.');\n }\n}\nclass OnboardingStorageRepository extends WebStorageSimpleRepository {\n}\n\nconst onboardingOriginRepository = providerFactory({\n [EnvironmentEnum.Production]: new OnboardingHttpRepository(),\n [EnvironmentEnum.Test]: new OnboardingHttpRepository(),\n [EnvironmentEnum.Development]: new OnboardingHttpRepository(),\n [EnvironmentEnum.Local]: new OnboardingHttpRepository(),\n [EnvironmentEnum.Mocked]: new OnboardingMemoryRepository(onboardingData),\n});\nconst onboardingInterceptorRepository = window?.localStorage\n ? new OnboardingStorageRepository('onboarding', localStorage)\n : new OnboardingMemoryRepository();\nconst onboardingRepository = new InterceptorSimpleRepository(onboardingOriginRepository, onboardingInterceptorRepository);\n\nclass OnboardingInformer {\n async get() {\n const id = await userInformer.userName();\n return onboardingRepository.get(id);\n }\n}\nconst onboardingInformer = new OnboardingInformer();\n\nclass OnboardingManager {\n async set(data) {\n data['id'] = await userInformer.userName();\n data = new OnboardingModel(data);\n await onboardingRepository.set(data);\n window.location.reload();\n }\n async loadData() {\n const id = await userInformer.userName();\n await onboardingRepository.get(id);\n await this.dispatchUpdateOnboarding();\n }\n async dispatchUpdateOnboarding() {\n const id = await userInformer.userName();\n const data = await onboardingRepository.get(id);\n ubitsDispatchEvent(new CustomEvent('updateOnboarding', { detail: data, bubbles: true }));\n }\n}\nconst onboardingManager = new OnboardingManager();\n\nclass PreferenceCompanyModel {\n id = '';\n companyId = '';\n partnership = false;\n homePage = '';\n onboarding = false;\n constructor(init = {}) {\n injectProperties(this, init);\n this.companyId = this.id;\n this.homePage = this.updateHomePage(this.homePage);\n }\n updateHomePage(url) {\n const currentUrl = url || '';\n return currentUrl.replace('/?', '?').replace('/#/', '/');\n }\n}\n\nconst preferenceCompanyData = new PreferenceCompanyModel({\n id: subscriptionData.companyId,\n partnership: true,\n});\n\nclass PreferenceCompanyMemoryRepository extends MemorySimpleRepository {\n}\nclass PreferenceCompanyHttpRepository extends HttpSimpleRepository {\n get url() {\n return `${envManager.get('GLOBAL_API_GATEWAY')}/core/preferences/companies`;\n }\n async get(id) {\n const currentUrl = `${this.url}/${id}`;\n let result = null;\n let data = { id };\n try {\n result = await httpRequest.GET(currentUrl);\n if (result) {\n data = this.inputFormat({ ...result, id });\n }\n }\n catch (error) {\n data = { id };\n }\n return new PreferenceCompanyModel(data);\n }\n inputFormat(data) {\n return new PreferenceCompanyModel({\n id: data['id'],\n partnership: data['partnership'] ? JSON.parse(data['partnership']) : false,\n homePage: data['url_after_login'],\n onboarding: data['onboarding'] === undefined ? true : JSON.parse(data['onboarding']),\n });\n }\n async set(data) {\n const currentUrl = `${this.url}/${data.id}`;\n await httpRequest.PUT(currentUrl, {\n 'partnership': `${data.partnership}`,\n });\n }\n async delete(id) {\n throw new Error('Method not implemented.');\n }\n}\nclass PreferenceCompanyStorageRepository extends WebStorageSimpleRepository {\n}\n\nconst preferenceCompanyOriginRepository = providerFactory({\n [EnvironmentEnum.Production]: new PreferenceCompanyHttpRepository(),\n [EnvironmentEnum.Test]: new PreferenceCompanyHttpRepository(),\n [EnvironmentEnum.Development]: new PreferenceCompanyHttpRepository(),\n [EnvironmentEnum.Local]: new PreferenceCompanyHttpRepository(),\n [EnvironmentEnum.Mocked]: new PreferenceCompanyMemoryRepository(preferenceCompanyData),\n});\nconst preferenceCompanyStorageInterceptorRepository = window?.localStorage\n ? new PreferenceCompanyStorageRepository('preferenceCompany', localStorage)\n : new PreferenceCompanyMemoryRepository();\nconst preferenceCompanyRepository = new InterceptorSimpleRepository(preferenceCompanyOriginRepository, preferenceCompanyStorageInterceptorRepository);\n\nclass PreferenceCompanyInformer {\n async get() {\n const id = await subscriptionInformer.companyId();\n return preferenceCompanyRepository.get(id);\n }\n async getHomePage() {\n const { homePage } = await this.get();\n return homePage || '';\n }\n}\nconst preferenceCompanyInformer = new PreferenceCompanyInformer();\n\nclass PreferenceCompanyManager {\n async set(data) {\n data['id'] = await subscriptionInformer.companyId();\n data = new PreferenceCompanyModel(data);\n await preferenceCompanyRepository.set(data);\n window.location.reload();\n }\n async loadData() {\n const id = await subscriptionInformer.companyId();\n if (!id)\n return;\n await preferenceCompanyRepository.get(id);\n }\n}\nconst preferenceCompanyManager = new PreferenceCompanyManager();\n\nvar PreferenceUserThemeEnum;\n(function (PreferenceUserThemeEnum) {\n PreferenceUserThemeEnum[\"Dark\"] = \"dark\";\n PreferenceUserThemeEnum[\"Light\"] = \"light\";\n})(PreferenceUserThemeEnum || (PreferenceUserThemeEnum = {}));\n\nclass PreferenceUserModel {\n id = '';\n userId = '';\n theme = PreferenceUserThemeEnum.Light;\n constructor(init = {}) {\n injectProperties(this, init);\n this.userId = this.id;\n }\n}\n\nconst preferenceUserData = new PreferenceUserModel({\n id: userData.userName,\n theme: PreferenceUserThemeEnum.Light,\n});\n\nclass PreferenceUserMemoryRepository extends MemorySimpleRepository {\n}\nclass PreferenceUserHttpRepository extends HttpSimpleRepository {\n get url() {\n return `${envManager.get('GLOBAL_API_GATEWAY')}/core/preferences/users/self`;\n }\n async get(id) {\n const currentUrl = `${this.url}?user_name=${id}`;\n let data = {};\n try {\n data = this.inputFormat({ ...(await httpRequest.GET(currentUrl)), id });\n }\n catch (error) {\n console.error(error);\n }\n return new PreferenceUserModel(data);\n }\n inputFormat(data) {\n return new PreferenceUserModel({\n id: data['id'],\n theme: data['dark_mode'] === true ? PreferenceUserThemeEnum.Dark : PreferenceUserThemeEnum.Light,\n });\n }\n async set(data) {\n const currentUrl = `${this.url}?user_name=${data.id}`;\n await httpRequest.PUT(currentUrl, {\n 'dark_mode': data.theme === PreferenceUserThemeEnum.Dark,\n });\n }\n async delete(id) {\n throw new Error('Method not implemented.');\n }\n}\nclass PreferenceUserStorageRepository extends WebStorageSimpleRepository {\n}\n\nconst preferenceUserOriginRepository = providerFactory({\n [EnvironmentEnum.Production]: new PreferenceUserHttpRepository(),\n [EnvironmentEnum.Test]: new PreferenceUserHttpRepository(),\n [EnvironmentEnum.Development]: new PreferenceUserHttpRepository(),\n [EnvironmentEnum.Local]: new PreferenceUserHttpRepository(),\n [EnvironmentEnum.Mocked]: new PreferenceUserMemoryRepository(preferenceUserData),\n});\nconst preferenceUserStorageInterceptorRepository = window?.localStorage\n ? new PreferenceUserStorageRepository('preferenceUser', localStorage)\n : new PreferenceUserMemoryRepository();\nconst preferenceUserRepository = new InterceptorSimpleRepository(preferenceUserOriginRepository, preferenceUserStorageInterceptorRepository);\n\nclass PreferenceUserInformer {\n async get() {\n const id = await userInformer.userName();\n return preferenceUserRepository.get(id);\n }\n}\nconst preferenceUserInformer = new PreferenceUserInformer();\n\nclass PreferenceUserManager {\n async set(data) {\n data['id'] = await userInformer.userName();\n data = new PreferenceUserModel(data);\n await preferenceUserRepository.set(data);\n window.location.reload();\n }\n async loadData() {\n await this.dispatchUpdatePreferenceUser();\n }\n async dispatchUpdatePreferenceUser() {\n const id = await userInformer.userName();\n const data = await preferenceUserRepository.get(id);\n ubitsDispatchEvent(new CustomEvent('updatePreferenceUser', { detail: data, bubbles: true }));\n }\n}\nconst preferenceUserManager = new PreferenceUserManager();\n\nclass ProfilePictureModel {\n id = '';\n image = '';\n userName = '';\n constructor(init = {}) {\n injectProperties(this, init);\n this.id = this.userName;\n }\n}\n\nconst profilePictureData = new ProfilePictureModel({\n userName: userData.userName,\n image: 'https://picsum.photos/500',\n});\n\nclass ProfilePictureMemoryRepository extends MemorySimpleRepository {\n}\nclass ProfilePictureHttpRepository extends HttpSimpleRepository {\n get url() {\n return `${envManager.get('GLOBAL_API_GATEWAY')}/users/self/profile-picture`;\n }\n async get(userName) {\n const currentUrl = `${this.url}?user_name=${userName}`;\n const data = (await httpRequest.GET(currentUrl)) || [];\n const currentDate = data && data[0] ? data[0] : {};\n return new ProfilePictureModel({ image: currentDate['URL'], userName });\n }\n async set(item) {\n const currentUrl = `${this.url}?user_name=${item.userName}`;\n await httpRequest.POST(currentUrl, { 'user_image': item.image });\n }\n async delete(id) {\n throw new Error('Method not implemented.');\n }\n}\nclass ProfilePictureStorageRepository extends WebStorageSimpleRepository {\n}\n\nconst profilePictureOriginRepository = providerFactory({\n [EnvironmentEnum.Production]: new ProfilePictureHttpRepository(),\n [EnvironmentEnum.Test]: new ProfilePictureHttpRepository(),\n [EnvironmentEnum.Development]: new ProfilePictureHttpRepository(),\n [EnvironmentEnum.Local]: new ProfilePictureHttpRepository(),\n [EnvironmentEnum.Mocked]: new ProfilePictureMemoryRepository(profilePictureData),\n});\nconst profilePictureStorageInterceptorRepository = window?.localStorage\n ? new ProfilePictureStorageRepository('profilePicture', localStorage)\n : new ProfilePictureMemoryRepository();\nconst profilePictureRepository = new InterceptorSimpleRepository(profilePictureOriginRepository, profilePictureStorageInterceptorRepository);\n\nclass ProfilePictureInformer {\n async get() {\n const id = await userInformer.userName();\n return profilePictureRepository.get(id);\n }\n}\nconst profilePictureInformer = new ProfilePictureInformer();\n\nclass ProfilePictureManager {\n async set(data) {\n data = new ProfilePictureModel(data);\n await profilePictureRepository.set(data);\n ubitsDispatchEvent(new CustomEvent('setProfilePicture', {\n detail: data,\n bubbles: true,\n }));\n }\n}\nconst profilePictureManager = new ProfilePictureManager();\n\nclass TermsAndConditionsModel {\n id = '';\n status = false;\n currentVersionId = 0;\n policyVersionCreated = '';\n acceptanceDate = '';\n isFirstPolicyAcceptance = false;\n constructor(init = {}) {\n injectProperties(this, init);\n }\n}\n\nconst termsAndConditionsData = new TermsAndConditionsModel({\n id: userData.userName,\n status: true,\n currentVersionId: 1,\n policyVersionCreated: '2021-07-09t03:10:25',\n acceptanceDate: '2021-07-09T0:59:14',\n isFirstPolicyAcceptance: false,\n});\n\nclass TermsAndConditionsMemoryRepository extends MemorySimpleRepository {\n}\nclass TermsAndConditionsHttpRepository extends HttpSimpleRepository {\n get url() {\n return `${envManager.get('GLOBAL_API_GATEWAY')}/users/self/terms-and-conditions`;\n }\n async get(id) {\n const currentUrl = `${this.url}?user_name=${id}`;\n const data = (await httpRequest.GET(currentUrl)) || {};\n return new TermsAndConditionsModel({\n id,\n status: data['status'],\n currentVersionId: data['current_version_id'],\n policyVersionCreated: data['policy_version_created'],\n acceptanceDate: data['acceptance_date'],\n isFirstPolicyAcceptance: data['is_first_policy_acceptance'],\n });\n }\n async set(data) {\n const body = { 'user_name': data.id };\n await httpRequest.POST(this.url, body);\n }\n}\n\nconst termsAndConditionsRepository = providerFactory({\n [EnvironmentEnum.Production]: new TermsAndConditionsHttpRepository(),\n [EnvironmentEnum.Test]: new TermsAndConditionsHttpRepository(),\n [EnvironmentEnum.Development]: new TermsAndConditionsHttpRepository(),\n [EnvironmentEnum.Local]: new TermsAndConditionsHttpRepository(),\n [EnvironmentEnum.Mocked]: new TermsAndConditionsMemoryRepository(termsAndConditionsData),\n});\n\nclass TermsAndConditionsInformer {\n async get() {\n const id = await userInformer.userName();\n return termsAndConditionsRepository.get(id);\n }\n}\nconst termsAndConditionsInformer = new TermsAndConditionsInformer();\n\nclass TermsAndConditionsManager {\n async update() {\n const id = await userInformer.userName();\n const termsAndConditions = new TermsAndConditionsModel({ id });\n await termsAndConditionsRepository.set(termsAndConditions);\n }\n}\nconst termsAndConditionsManager = new TermsAndConditionsManager();\n\nexport { AuthUserModel, BrowsersEnum, CoBrandingModel, ContactModel, CustomizationModel, CustomizationValue, FeatureFlagsModel, FilterLogicalOperatorEnum, FilterOperatorEnum, HttpRepository, HttpSimpleRepository, InterceptorRepository, InterceptorSimpleRepository, JsonApi, MemoryRepository, MemorySimpleRepository, MonthFormatTypeEnum, OnboardingModel, OriginPageModel, PreferenceCompanyModel, PreferenceUserModel, PreferenceUserThemeEnum, ProfilePictureModel, Repository, RoleIdEnum, RoleTypeEnum, SimpleRepository, SortEnum, StrategyRepository, StrategySimpleRepository, SubscriptionModel, TermsAndConditionsModel, UserModel, UserPermission, WebStorageContext, WebStorageRepository, WebStorageSimpleRepository, authInformer, authManager, b64ToUtf8, camelCase, clearData, clearStorage, coBrandingData, coBrandingInformer, contactData, contactInformer, contactManager, customizationInformer, customizationManager, dataLayerDispatch, deleteAllCookies, deleteCaches, deleteIndexedDB, detectBrowser, dispatchPlaylist, envManager, featureFlagsInformer, featureFlagsManager, filterObject, getDateFormat, getUTCDateFormat, hideLoading, httpArgsParse, httpFetch, httpOrderParse, httpRequest, initSentry, injectProperties, monthFormat, months, moodleRouter, navigate, normalizeString, onboardingData, onboardingInformer, onboardingManager, openInNewTab, openTab, originPageInformer, originPageManager, preferenceCompanyData, preferenceCompanyInformer, preferenceCompanyManager, preferenceUserData, preferenceUserInformer, preferenceUserManager, profilePictureData, profilePictureInformer, profilePictureManager, providerFactory, searchObjects, showLoading, sortObjects, subscriptionData, subscriptionInformer, subscriptionManager, switchCases, termsAndConditionsData, termsAndConditionsInformer, termsAndConditionsManager, ubitsDispatchEvent, ubitsMemoize, ubitsStorageChangeEvent, urlSearchParams, userData, userInformer, userManager, utf8ToB64, uuid };\n//# sourceMappingURL=index.js.map\n","import { RegisterApplicationConfig } from 'single-spa'\n\nexport const recordApplication: RegisterApplicationConfig[] = [\n {\n name: '@ubits-mf/manager',\n app: () => System.import('@ubits-mf/manager'),\n activeWhen: [''],\n customProps: {\n localModules: process.env.ISLOCAL && [],\n },\n },\n]\n","const domain = process.env.ASSETS_DOMAIN\nconst origin = window.location.origin\n\nexport const resources = [\n { domain, resource: 'fontawesome/css/all.min.css', id: 'icon-library' },\n { domain, resource: 'fonts/ubits-fonts.css', id: 'fonts-library' },\n { domain, resource: 'fonts/ubits-fonts-v2.css', id: 'fonts-library' },\n { domain, resource: 'styles/css/ubits-styles.min.css' },\n { domain, resource: 'styles/css/ubits-styles-v2.min.css' },\n { domain: origin, resource: 'assets/favicon.png', relation: 'icon' },\n { domain: origin, resource: 'assets/manifest.json', relation: 'manifest' },\n]\n","import { RouterRecordModel } from './router.model'\n\nexport const routerList: RouterRecordModel = {\n adminHRCertificates: { url: '/admin-hr/local/certificates_request' },\n adminHRCustomization: { url: '/admin-hr/customization' },\n adminHRCompany: { url: '/admin-hr' },\n adminHRHelpCenter: { url: '/admin-hr/help-center' },\n adminHRHome: { title: 'AdminHR', url: '/admin-hr/home' },\n adminHRMetrics: { title: 'AdminHR', url: '/admin-hr/metrics' },\n adminHRUsers: { title: 'AdminHR | Users', url: '/admin-hr/users' },\n adminHR: { title: 'AdminHR', url: '/admin-hr' },\n catalog: { title: 'Catalogo', url: '/catalog' },\n search: { title: 'Catalogo', url: '/search' },\n contentAuthoring: { title: 'Content Authoring', url: '/ulms' },\n homeLearning: { title: 'Learning', url: '/home/learning' },\n homePlaylist: { title: 'Playlist', url: '/home/learning/playlist' },\n homeProgram: { title: 'Programa', url: '/home/program' },\n homeCertificate: { title: 'Certificado', url: '/home/certificate' },\n homeCompetence: { title: 'Competencia', url: '/home/competence' },\n homeStudyZone: { title: 'Zona de estudio', url: '/home/study-zone' },\n homeUbitsMax: { title: 'Ubits Max', url: '/home/ubits-max' },\n lmsCourse: { title: 'Curso', url: '/lms/course' },\n lmsStudentMetrics: { title: 'Métricas', url: '/lms/local/studentmetrics' },\n lmsCreator: { title: 'Creación de contenido', url: '/creator' },\n lmsLearner: { title: 'Cursos de mi empresa', url: '/learner' },\n lmsUniversity: { title: 'Cursos de mi empresa', url: '/university' },\n logout: { url: '/logout' },\n profile: { title: 'Perfil', url: '/profile' },\n assessments360: { title: 'Talent 360', url: '/talent/360' },\n objectives: { title: 'Objetivos', url: '/talent/goals' },\n organizationChart: { title: 'Organigrama', url: '/organization-chart' },\n surveys: { title: 'Encuestas', url: '/surveys' },\n portal: { title: 'Portal Colaborador', url: '/portal' },\n history: { title: 'Mi historial', url: '/learn/contents/history' },\n permissions: { title: 'Permisos', url: '/access-control' },\n}\n","import { subscriptionInformer } from '@ubits/library-core'\n\nexport function appcuesService() {\n window['AppcuesSettings'] = {\n enableURLDetection: true,\n }\n\n const script = document.createElement('script')\n script.src = 'https://fast.appcues.com/84494.js'\n script.onload = () => loadAppcues().then()\n document.head.appendChild(script)\n}\n\nexport function updateAppcuesPage() {\n const appcues = window['Appcues']\n if (appcues?.page) appcues?.page()\n}\n\nasync function loadAppcues() {\n const appcues = window['Appcues']\n if (!appcues) return\n\n const info = await subscriptionInformer.get()\n const userId = parseInt(info['userId'])\n appcues.identify(userId, {\n 'created_at': info.subscriptionStartDate,\n 'role': info.role,\n 'first_name': info.firstName,\n 'company_name': info.companyName,\n 'email': info.email,\n })\n\n updateAppcuesPage()\n}\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}","import _typeof from \"./typeof.js\";\nexport default function toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default 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}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import { TrackGoogleTagManager } from '@ubits/library-events-track'\n\nexport const dataLayer = new TrackGoogleTagManager(process.env['GTM_KEY'])\n","class Track {\n}\n\nclass TrackGoogleTagManager {\n windowGlobal = window;\n documentGlobal = document;\n dataLayer = [];\n key;\n customDataLayer;\n constructor(key, customDataLayer) {\n this.key = key ?? null;\n this.customDataLayer = customDataLayer ?? 'dataLayer';\n if (this.windowGlobal[this.customDataLayer]) {\n this.dataLayer = this.windowGlobal[this.customDataLayer];\n }\n else {\n this.dataLayer = this.windowGlobal[this.customDataLayer] = [];\n }\n if (this.key) {\n this.insertGoogleTagManagerCode();\n this.insertGoogleTagManagerNoScript();\n }\n }\n emit(data) {\n this.dataLayer.push(data);\n }\n insertGoogleTagManagerCode() {\n this.emit({ event: 'gtm.js', 'gtm.start': new Date().getTime() });\n const id = `id=${this.key}`;\n const dataLayer = this.customDataLayer !== 'dataLayer' ? `&l=${this.customDataLayer}` : '';\n const src = `https://www.googletagmanager.com/gtm.js?${id}${dataLayer}`;\n if (this.findScriptBySrc(src))\n return;\n const scriptTag = 'script';\n const currentScript = this.documentGlobal.createElement(scriptTag);\n currentScript.async = true;\n currentScript.src = src;\n this.documentGlobal.head?.appendChild(currentScript);\n }\n insertGoogleTagManagerNoScript() {\n const src = `https://www.googletagmanager.com/ns.html?id=${this.key}`;\n if (this.findIframeBySrc(src))\n return;\n const noscriptElement = this.documentGlobal.createElement('noscript');\n const iframeElement = this.documentGlobal.createElement('iframe');\n iframeElement.src = src;\n iframeElement.height = '0';\n iframeElement.width = '0';\n iframeElement.style.display = 'none';\n iframeElement.style.visibility = 'hidden';\n noscriptElement.appendChild(iframeElement);\n this.documentGlobal.body.appendChild(noscriptElement);\n }\n findScriptBySrc(src) {\n const scripts = document.querySelectorAll('script');\n return Array.from(scripts).some(script => script.src.includes(src));\n }\n findIframeBySrc(src) {\n const iFrames = document.querySelectorAll('iframe');\n return Array.from(iFrames).some(iframe => iframe.src.includes(src));\n }\n}\n\nexport { Track, TrackGoogleTagManager };\n//# sourceMappingURL=index.js.map\n","import { authInformer, subscriptionInformer, SubscriptionModel } from '@ubits/library-core'\nimport { dataLayer } from './data-layer.track'\n\ntype DataLayerDirectiveModelType = Record\n\nexport class DataLayerDirective {\n private name: string = ''\n private model: DataLayerDirectiveModelType = {}\n\n private userId: string = ''\n private companyId: string = ''\n private countryId: string = ''\n private screenName: string = ''\n private timeStamp: number = 0\n\n constructor({ name, model }: { name: string; model: DataLayerDirectiveModelType }) {\n this.name = name\n this.model = model\n }\n\n async dispatch() {\n const dataLayer = this.getDataLayer()\n if (!dataLayer) return\n const value: any = await this.getValue()\n if (!value.userId) return\n\n const detail = {\n event: value.name,\n eventModel: value,\n }\n\n dataLayer.emit(detail)\n }\n\n async getValue() {\n await this.loadDefaultData()\n\n return {\n name: this.name,\n ...this.model,\n userId: this.userId,\n companyId: this.companyId,\n countryId: this.countryId,\n screenName: this.screenName,\n timeStamp: this.timeStamp,\n }\n }\n\n private async loadDefaultData() {\n const subscription: SubscriptionModel = await subscriptionInformer.get()\n\n const user = await authInformer.user()\n const countryId = user.userMetadata.country\n\n this.userId = subscription.userName\n this.companyId = subscription.companyId\n this.countryId = countryId\n this.screenName = document.title\n this.timeStamp = Date.now()\n }\n\n private getDataLayer() {\n return dataLayer\n }\n}\n","import { dataLayerDirective } from './data-layer.provider'\n\nexport function dataLayerService() {\n popstateEvent()\n dispatchCurrentPageEvent()\n subscribeGlobalEvent()\n}\n\nfunction dispatchDataLayer(internalEventName: string, data: any) {\n const dataLayer = dataLayerDirective(internalEventName, data)\n dataLayer?.dispatch().then()\n}\n\nfunction dispatchCurrentPageEvent() {\n const internalEventName = 'page-viewed'\n const data = { 'hash': location }\n dispatchDataLayer(internalEventName, data)\n}\n\nfunction popstateEvent() {\n let location: string = null\n\n window.addEventListener('popstate', () => {\n const currentLocation: string = window.location.href\n if (location === currentLocation) return\n location = currentLocation\n dispatchCurrentPageEvent()\n })\n}\n\nfunction subscribeGlobalEvent() {\n document.addEventListener('ubitsDataLayer', (event: CustomEvent) => {\n const detail: { tagName?: string; componentKey?: string; data: any } = event.detail\n const tagName = detail?.tagName || detail?.componentKey\n const data = detail?.data || {}\n if (tagName) dispatchDataLayer(tagName, data)\n })\n}\n","import { DataLayerDirective } from './data-layer.directive'\n\nexport function dataLayerDirective(tagName: string, data: any): DataLayerDirective {\n tagName = tagName?.trim()?.toLocaleLowerCase()\n\n switch (tagName) {\n case 'page-viewed':\n return new DataLayerDirective({\n name: 'page-viewed',\n model: { hash: window.location.href },\n })\n case 'ubits-tab-view':\n return new DataLayerDirective({\n name: 'tab-viewed',\n model: { tabName: data['header'] },\n })\n case 'ubits-content-card':\n return new DataLayerDirective({\n name: 'card-clicked',\n model: {\n cardType: 'ubits-content-card',\n contentId: data['id'],\n contentType: data['contentTypeText'],\n contentTitle: data['title'],\n },\n })\n case 'ubits-promo-card':\n return new DataLayerDirective({\n name: 'card-clicked',\n model: {\n cardType: 'ubits-promo-card',\n contentId: data['id'],\n contentType: data['subtitle'],\n contentTitle: data['title'],\n },\n })\n case 'ubits-talent-card':\n return new DataLayerDirective({\n name: 'card-clicked',\n model: {\n cardType: 'ubits-talent-card',\n contentId: data['id'],\n contentType: data['label'],\n contentTitle: data['titleCard'],\n },\n })\n case 'modal-buy-license':\n return new DataLayerDirective({\n name: 'buy-license',\n model: data,\n })\n case 'modal-renew-license':\n return new DataLayerDirective({\n name: 'renew-license',\n model: data,\n })\n case 'estudiante-learning-modal-responder-axs':\n return new DataLayerDirective({\n name: 'estudiante-learning-modal-responder-axs',\n model: data,\n })\n case 'estudiante-learning-snackbar-responder-axs':\n return new DataLayerDirective({\n name: 'estudiante-learning-snackbar-responder-axs',\n model: data,\n })\n case 'header-search':\n case 'catalog-search-with-result':\n case 'catalog-search-without-result':\n case 'catalog-content-selected':\n case 'jelper-ui-opened':\n case 'jelper-ui-closed':\n case 'jelper-message-sent':\n case 'jelper-message-received':\n case 'jelper-message-selected':\n default:\n return new DataLayerDirective({\n name: tagName,\n model: data,\n })\n }\n}\n","import { preferenceCompanyInformer, subscriptionInformer } from '@ubits/library-core'\nimport { RoleTypeEnum } from '@ubits/library-enums'\nimport { routerList } from '../router/router.list'\n\nconst defaultHomePage = routerList['homeLearning']\nconst defaultAdminPage = routerList['adminHRCompany']\n\nexport async function isCustomCourseCreator(): Promise {\n const role: RoleTypeEnum = await subscriptionInformer.role()\n return role === RoleTypeEnum.CustomCourseCreator\n}\n\nexport async function isAdminSetup(): Promise {\n const role: RoleTypeEnum = await subscriptionInformer.role()\n return role === RoleTypeEnum.AdminSetup\n}\n\nexport async function getHomepage(): Promise {\n const isAdmin = await isAdminSetup()\n return isAdmin ? defaultAdminPage.url : defaultHomePage.url\n}\n\nexport async function getCompanyPage(): Promise {\n return preferenceCompanyInformer.getHomePage()\n}\n","/* eslint-disable no-bitwise */\n\nconst decodeCache = {}\n\nfunction getDecodeCache (exclude) {\n let cache = decodeCache[exclude]\n if (cache) { return cache }\n\n cache = decodeCache[exclude] = []\n\n for (let i = 0; i < 128; i++) {\n const ch = String.fromCharCode(i)\n cache.push(ch)\n }\n\n for (let i = 0; i < exclude.length; i++) {\n const ch = exclude.charCodeAt(i)\n cache[ch] = '%' + ('0' + ch.toString(16).toUpperCase()).slice(-2)\n }\n\n return cache\n}\n\n// Decode percent-encoded string.\n//\nfunction decode (string, exclude) {\n if (typeof exclude !== 'string') {\n exclude = decode.defaultChars\n }\n\n const cache = getDecodeCache(exclude)\n\n return string.replace(/(%[a-f0-9]{2})+/gi, function (seq) {\n let result = ''\n\n for (let i = 0, l = seq.length; i < l; i += 3) {\n const b1 = parseInt(seq.slice(i + 1, i + 3), 16)\n\n if (b1 < 0x80) {\n result += cache[b1]\n continue\n }\n\n if ((b1 & 0xE0) === 0xC0 && (i + 3 < l)) {\n // 110xxxxx 10xxxxxx\n const b2 = parseInt(seq.slice(i + 4, i + 6), 16)\n\n if ((b2 & 0xC0) === 0x80) {\n const chr = ((b1 << 6) & 0x7C0) | (b2 & 0x3F)\n\n if (chr < 0x80) {\n result += '\\ufffd\\ufffd'\n } else {\n result += String.fromCharCode(chr)\n }\n\n i += 3\n continue\n }\n }\n\n if ((b1 & 0xF0) === 0xE0 && (i + 6 < l)) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n const b2 = parseInt(seq.slice(i + 4, i + 6), 16)\n const b3 = parseInt(seq.slice(i + 7, i + 9), 16)\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n const chr = ((b1 << 12) & 0xF000) | ((b2 << 6) & 0xFC0) | (b3 & 0x3F)\n\n if (chr < 0x800 || (chr >= 0xD800 && chr <= 0xDFFF)) {\n result += '\\ufffd\\ufffd\\ufffd'\n } else {\n result += String.fromCharCode(chr)\n }\n\n i += 6\n continue\n }\n }\n\n if ((b1 & 0xF8) === 0xF0 && (i + 9 < l)) {\n // 111110xx 10xxxxxx 10xxxxxx 10xxxxxx\n const b2 = parseInt(seq.slice(i + 4, i + 6), 16)\n const b3 = parseInt(seq.slice(i + 7, i + 9), 16)\n const b4 = parseInt(seq.slice(i + 10, i + 12), 16)\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80 && (b4 & 0xC0) === 0x80) {\n let chr = ((b1 << 18) & 0x1C0000) | ((b2 << 12) & 0x3F000) | ((b3 << 6) & 0xFC0) | (b4 & 0x3F)\n\n if (chr < 0x10000 || chr > 0x10FFFF) {\n result += '\\ufffd\\ufffd\\ufffd\\ufffd'\n } else {\n chr -= 0x10000\n result += String.fromCharCode(0xD800 + (chr >> 10), 0xDC00 + (chr & 0x3FF))\n }\n\n i += 9\n continue\n }\n }\n\n result += '\\ufffd'\n }\n\n return result\n })\n}\n\ndecode.defaultChars = ';/?:@&=+$,#'\ndecode.componentChars = ''\n\nexport default decode\n","const encodeCache = {}\n\n// Create a lookup array where anything but characters in `chars` string\n// and alphanumeric chars is percent-encoded.\n//\nfunction getEncodeCache (exclude) {\n let cache = encodeCache[exclude]\n if (cache) { return cache }\n\n cache = encodeCache[exclude] = []\n\n for (let i = 0; i < 128; i++) {\n const ch = String.fromCharCode(i)\n\n if (/^[0-9a-z]$/i.test(ch)) {\n // always allow unencoded alphanumeric characters\n cache.push(ch)\n } else {\n cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2))\n }\n }\n\n for (let i = 0; i < exclude.length; i++) {\n cache[exclude.charCodeAt(i)] = exclude[i]\n }\n\n return cache\n}\n\n// Encode unsafe characters with percent-encoding, skipping already\n// encoded sequences.\n//\n// - string - string to encode\n// - exclude - list of characters to ignore (in addition to a-zA-Z0-9)\n// - keepEscaped - don't encode '%' in a correct escape sequence (default: true)\n//\nfunction encode (string, exclude, keepEscaped) {\n if (typeof exclude !== 'string') {\n // encode(string, keepEscaped)\n keepEscaped = exclude\n exclude = encode.defaultChars\n }\n\n if (typeof keepEscaped === 'undefined') {\n keepEscaped = true\n }\n\n const cache = getEncodeCache(exclude)\n let result = ''\n\n for (let i = 0, l = string.length; i < l; i++) {\n const code = string.charCodeAt(i)\n\n if (keepEscaped && code === 0x25 /* % */ && i + 2 < l) {\n if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {\n result += string.slice(i, i + 3)\n i += 2\n continue\n }\n }\n\n if (code < 128) {\n result += cache[code]\n continue\n }\n\n if (code >= 0xD800 && code <= 0xDFFF) {\n if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {\n const nextCode = string.charCodeAt(i + 1)\n if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {\n result += encodeURIComponent(string[i] + string[i + 1])\n i++\n continue\n }\n }\n result += '%EF%BF%BD'\n continue\n }\n\n result += encodeURIComponent(string[i])\n }\n\n return result\n}\n\nencode.defaultChars = \";/?:@&=+$,-_.!~*'()#\"\nencode.componentChars = \"-_.!~*'()\"\n\nexport default encode\n","export default function format (url) {\n let result = ''\n\n result += url.protocol || ''\n result += url.slashes ? '//' : ''\n result += url.auth ? url.auth + '@' : ''\n\n if (url.hostname && url.hostname.indexOf(':') !== -1) {\n // ipv6 address\n result += '[' + url.hostname + ']'\n } else {\n result += url.hostname || ''\n }\n\n result += url.port ? ':' + url.port : ''\n result += url.pathname || ''\n result += url.search || ''\n result += url.hash || ''\n\n return result\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n//\n// Changes from joyent/node:\n//\n// 1. No leading slash in paths,\n// e.g. in `url.parse('http://foo?bar')` pathname is ``, not `/`\n//\n// 2. Backslashes are not replaced with slashes,\n// so `http:\\\\example.org\\` is treated like a relative path\n//\n// 3. Trailing colon is treated like a part of the path,\n// i.e. in `http://example.org:foo` pathname is `:foo`\n//\n// 4. Nothing is URL-encoded in the resulting object,\n// (in joyent/node some chars in auth and paths are encoded)\n//\n// 5. `url.parse()` does not have `parseQueryString` argument\n//\n// 6. Removed extraneous result properties: `host`, `path`, `query`, etc.,\n// which can be constructed using other parts of the url.\n//\n\nfunction Url () {\n this.protocol = null\n this.slashes = null\n this.auth = null\n this.port = null\n this.hostname = null\n this.hash = null\n this.search = null\n this.pathname = null\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nconst protocolPattern = /^([a-z0-9.+-]+:)/i\nconst portPattern = /:[0-9]*$/\n\n// Special case for a simple path URL\n/* eslint-disable-next-line no-useless-escape */\nconst simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/\n\n// RFC 2396: characters reserved for delimiting URLs.\n// We actually just auto-escape these.\nconst delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t']\n\n// RFC 2396: characters not allowed for various reasons.\nconst unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims)\n\n// Allowed by RFCs, but cause of XSS attacks. Always escape these.\nconst autoEscape = ['\\''].concat(unwise)\n// Characters that are never ever allowed in a hostname.\n// Note that any invalid chars are also handled, but these\n// are the ones that are *expected* to be seen, so we fast-path\n// them.\nconst nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape)\nconst hostEndingChars = ['/', '?', '#']\nconst hostnameMaxLen = 255\nconst hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/\nconst hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/\n// protocols that can allow \"unsafe\" and \"unwise\" chars.\n// protocols that never have a hostname.\nconst hostlessProtocol = {\n javascript: true,\n 'javascript:': true\n}\n// protocols that always contain a // bit.\nconst slashedProtocol = {\n http: true,\n https: true,\n ftp: true,\n gopher: true,\n file: true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n}\n\nfunction urlParse (url, slashesDenoteHost) {\n if (url && url instanceof Url) return url\n\n const u = new Url()\n u.parse(url, slashesDenoteHost)\n return u\n}\n\nUrl.prototype.parse = function (url, slashesDenoteHost) {\n let lowerProto, hec, slashes\n let rest = url\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim()\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n const simplePath = simplePathPattern.exec(rest)\n if (simplePath) {\n this.pathname = simplePath[1]\n if (simplePath[2]) {\n this.search = simplePath[2]\n }\n return this\n }\n }\n\n let proto = protocolPattern.exec(rest)\n if (proto) {\n proto = proto[0]\n lowerProto = proto.toLowerCase()\n this.protocol = proto\n rest = rest.substr(proto.length)\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n /* eslint-disable-next-line no-useless-escape */\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n slashes = rest.substr(0, 2) === '//'\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2)\n this.slashes = true\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n let hostEnd = -1\n for (let i = 0; i < hostEndingChars.length; i++) {\n hec = rest.indexOf(hostEndingChars[i])\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n hostEnd = hec\n }\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n let auth, atSign\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@')\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd)\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign)\n rest = rest.slice(atSign + 1)\n this.auth = auth\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1\n for (let i = 0; i < nonHostChars.length; i++) {\n hec = rest.indexOf(nonHostChars[i])\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n hostEnd = hec\n }\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1) {\n hostEnd = rest.length\n }\n\n if (rest[hostEnd - 1] === ':') { hostEnd-- }\n const host = rest.slice(0, hostEnd)\n rest = rest.slice(hostEnd)\n\n // pull out port.\n this.parseHost(host)\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || ''\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n const ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']'\n\n // validate a little.\n if (!ipv6Hostname) {\n const hostparts = this.hostname.split(/\\./)\n for (let i = 0, l = hostparts.length; i < l; i++) {\n const part = hostparts[i]\n if (!part) { continue }\n if (!part.match(hostnamePartPattern)) {\n let newpart = ''\n for (let j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x'\n } else {\n newpart += part[j]\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n const validParts = hostparts.slice(0, i)\n const notHost = hostparts.slice(i + 1)\n const bit = part.match(hostnamePartStart)\n if (bit) {\n validParts.push(bit[1])\n notHost.unshift(bit[2])\n }\n if (notHost.length) {\n rest = notHost.join('.') + rest\n }\n this.hostname = validParts.join('.')\n break\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = ''\n }\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2)\n }\n }\n\n // chop off from the tail first.\n const hash = rest.indexOf('#')\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash)\n rest = rest.slice(0, hash)\n }\n const qm = rest.indexOf('?')\n if (qm !== -1) {\n this.search = rest.substr(qm)\n rest = rest.slice(0, qm)\n }\n if (rest) { this.pathname = rest }\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = ''\n }\n\n return this\n}\n\nUrl.prototype.parseHost = function (host) {\n let port = portPattern.exec(host)\n if (port) {\n port = port[0]\n if (port !== ':') {\n this.port = port.substr(1)\n }\n host = host.substr(0, host.length - port.length)\n }\n if (host) { this.hostname = host }\n}\n\nexport default urlParse\n","export default /[!-#%-\\*,-\\/:;\\?@\\[-\\]_\\{\\}\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061D-\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1B7D\\u1B7E\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52-\\u2E5D\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD803[\\uDEAD\\uDF55-\\uDF59\\uDF86-\\uDF89]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDC4B-\\uDC4F\\uDC5A\\uDC5B\\uDC5D\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDE60-\\uDE6C\\uDEB9\\uDF3C-\\uDF3E]|\\uD806[\\uDC3B\\uDD44-\\uDD46\\uDDE2\\uDE3F-\\uDE46\\uDE9A-\\uDE9C\\uDE9E-\\uDEA2\\uDF00-\\uDF09]|\\uD807[\\uDC41-\\uDC45\\uDC70\\uDC71\\uDEF7\\uDEF8\\uDF43-\\uDF4F\\uDFFF]|\\uD809[\\uDC70-\\uDC74]|\\uD80B[\\uDFF1\\uDFF2]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD81B[\\uDE97-\\uDE9A\\uDFE2]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]|\\uD83A[\\uDD5E\\uDD5F]/","export default /[\\0-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/","export default /[\\0-\\x1F\\x7F-\\x9F]/","export default /[\\xAD\\u0600-\\u0605\\u061C\\u06DD\\u070F\\u0890\\u0891\\u08E2\\u180E\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u2066-\\u206F\\uFEFF\\uFFF9-\\uFFFB]|\\uD804[\\uDCBD\\uDCCD]|\\uD80D[\\uDC30-\\uDC3F]|\\uD82F[\\uDCA0-\\uDCA3]|\\uD834[\\uDD73-\\uDD7A]|\\uDB40[\\uDC01\\uDC20-\\uDC7F]/","export default /[ \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]/","// Generated using scripts/write-decode-map.ts\nexport default new Uint16Array(\n// prettier-ignore\n\"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-html.js.map","// Generated using scripts/write-decode-map.ts\nexport default new Uint16Array(\n// prettier-ignore\n\"\\u0200aglq\\t\\x15\\x18\\x1b\\u026d\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403et;\\u403cuot;\\u4022\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-xml.js.map","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n [0, 65533],\n // C1 Unicode control character reference replacements\n [128, 8364],\n [130, 8218],\n [131, 402],\n [132, 8222],\n [133, 8230],\n [134, 8224],\n [135, 8225],\n [136, 710],\n [137, 8240],\n [138, 352],\n [139, 8249],\n [140, 338],\n [142, 381],\n [145, 8216],\n [146, 8217],\n [147, 8220],\n [148, 8221],\n [149, 8226],\n [150, 8211],\n [151, 8212],\n [152, 732],\n [153, 8482],\n [154, 353],\n [155, 8250],\n [156, 339],\n [158, 382],\n [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n let output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint) {\n var _a;\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return 0xfffd;\n }\n return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport default function decodeCodePoint(codePoint) {\n return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode_codepoint.js.map","import htmlDecodeTree from \"./generated/decode-data-html.js\";\nimport xmlDecodeTree from \"./generated/decode-data-xml.js\";\nimport decodeCodePoint, { replaceCodePoint, fromCodePoint, } from \"./decode_codepoint.js\";\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree, xmlDecodeTree, decodeCodePoint };\nexport { replaceCodePoint, fromCodePoint } from \"./decode_codepoint.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 0b100000;\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nexport var DecodingMode;\n(function (DecodingMode) {\n /** Entities in text nodes that can end with any character. */\n DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */\n DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */\n DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n constructor(\n /** The tree used to decode entities. */\n decodeTree, \n /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */\n emitCodePoint, \n /** An object that is used to produce errors. */\n errors) {\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */\n this.state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n this.consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */\n this.result = 0;\n /** The current index in the decode tree. */\n this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */\n this.excess = 1;\n /** The mode in which the decoder is operating. */\n this.decodeMode = DecodingMode.Strict;\n }\n /** Resets the instance to make it reusable. */\n startEntity(decodeMode) {\n this.decodeMode = decodeMode;\n this.state = EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n }\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param string The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n write(str, offset) {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (str.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(str, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(str, offset);\n }\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(str, offset);\n }\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(str, offset);\n }\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(str, offset);\n }\n case EntityDecoderState.NamedEntity: {\n return this.stateNamedEntity(str, offset);\n }\n }\n }\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericStart(str, offset) {\n if (offset >= str.length) {\n return -1;\n }\n if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(str, offset + 1);\n }\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(str, offset);\n }\n addToNumericResult(str, start, end, base) {\n if (start !== end) {\n const digitCount = end - start;\n this.result =\n this.result * Math.pow(base, digitCount) +\n parseInt(str.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n }\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericHex(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const char = str.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 16);\n return -1;\n }\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericDecimal(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const char = str.charCodeAt(offset);\n if (isNumber(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 10);\n return -1;\n }\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */\n emitNumericEntity(lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n }\n else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n }\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNamedEntity(str, offset) {\n const { decodeTree } = this;\n let current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n for (; offset < str.length; offset++, this.excess++) {\n const char = str.charCodeAt(offset);\n this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) {\n return this.result === 0 ||\n // If we are parsing an attribute\n (this.decodeMode === DecodingMode.Attribute &&\n // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 ||\n // And there should be no invalid characters.\n isEntityInAttributeInvalidEnd(char)))\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === CharCodes.SEMI) {\n return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n }\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== DecodingMode.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n return -1;\n }\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */\n emitNotTerminatedNamedEntity() {\n var _a;\n const { result, decodeTree } = this;\n const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\n }\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */\n emitNamedEntityData(result, valueLength, consumed) {\n const { decodeTree } = this;\n this.emitCodePoint(valueLength === 1\n ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n : decodeTree[result + 1], consumed);\n if (valueLength === 3) {\n // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n }\n return consumed;\n }\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */\n end() {\n var _a;\n switch (this.state) {\n case EntityDecoderState.NamedEntity: {\n // Emit a named entity if we have one.\n return this.result !== 0 &&\n (this.decodeMode !== DecodingMode.Attribute ||\n this.result === this.treeIndex)\n ? this.emitNotTerminatedNamedEntity()\n : 0;\n }\n // Otherwise, emit a numeric entity if we have one.\n case EntityDecoderState.NumericDecimal: {\n return this.emitNumericEntity(0, 2);\n }\n case EntityDecoderState.NumericHex: {\n return this.emitNumericEntity(0, 3);\n }\n case EntityDecoderState.NumericStart: {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n case EntityDecoderState.EntityStart: {\n // Return 0 if we have no entity.\n return 0;\n }\n }\n }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n let ret = \"\";\n const decoder = new EntityDecoder(decodeTree, (str) => (ret += fromCodePoint(str)));\n return function decodeWithTrie(str, decodeMode) {\n let lastIndex = 0;\n let offset = 0;\n while ((offset = str.indexOf(\"&\", offset)) >= 0) {\n ret += str.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n const len = decoder.write(str, \n // Skip the \"&\"\n offset + 1);\n if (len < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + len;\n // If `len` is 0, skip the current `&` and continue.\n offset = len === 0 ? lastIndex + 1 : lastIndex;\n }\n const result = ret + str.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n ret = \"\";\n return result;\n };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(decodeTree, current, nodeIdx, char) {\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;\n }\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n const value = char - jumpOffset;\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIdx + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n let lo = nodeIdx;\n let hi = lo + branchCount - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const midVal = decodeTree[mid];\n if (midVal < char) {\n lo = mid + 1;\n }\n else if (midVal > char) {\n hi = mid - 1;\n }\n else {\n return decodeTree[mid + branchCount];\n }\n }\n return -1;\n}\nconst htmlDecoder = getDecoder(htmlDecodeTree);\nconst xmlDecoder = getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string.\n *\n * @param str The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(str, mode = DecodingMode.Legacy) {\n return htmlDecoder(str, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(str) {\n return htmlDecoder(str, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(str) {\n return htmlDecoder(str, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(str) {\n return xmlDecoder(str, DecodingMode.Strict);\n}\n//# sourceMappingURL=decode.js.map","// Generated using scripts/write-encode-map.ts\nfunction restoreDiff(arr) {\n for (let i = 1; i < arr.length; i++) {\n arr[i][0] += arr[i - 1][0] + 1;\n }\n return arr;\n}\n// prettier-ignore\nexport default new Map(/* #__PURE__ */ restoreDiff([[9, \" \"], [0, \" \"], [22, \"!\"], [0, \""\"], [0, \"#\"], [0, \"$\"], [0, \"%\"], [0, \"&\"], [0, \"'\"], [0, \"(\"], [0, \")\"], [0, \"*\"], [0, \"+\"], [0, \",\"], [1, \".\"], [0, \"/\"], [10, \":\"], [0, \";\"], [0, { v: \"<\", n: 8402, o: \"<⃒\" }], [0, { v: \"=\", n: 8421, o: \"=⃥\" }], [0, { v: \">\", n: 8402, o: \">⃒\" }], [0, \"?\"], [0, \"@\"], [26, \"[\"], [0, \"\\"], [0, \"]\"], [0, \"^\"], [0, \"_\"], [0, \"`\"], [5, { n: 106, o: \"fj\" }], [20, \"{\"], [0, \"|\"], [0, \"}\"], [34, \" \"], [0, \"¡\"], [0, \"¢\"], [0, \"£\"], [0, \"¤\"], [0, \"¥\"], [0, \"¦\"], [0, \"§\"], [0, \"¨\"], [0, \"©\"], [0, \"ª\"], [0, \"«\"], [0, \"¬\"], [0, \"­\"], [0, \"®\"], [0, \"¯\"], [0, \"°\"], [0, \"±\"], [0, \"²\"], [0, \"³\"], [0, \"´\"], [0, \"µ\"], [0, \"¶\"], [0, \"·\"], [0, \"¸\"], [0, \"¹\"], [0, \"º\"], [0, \"»\"], [0, \"¼\"], [0, \"½\"], [0, \"¾\"], [0, \"¿\"], [0, \"À\"], [0, \"Á\"], [0, \"Â\"], [0, \"Ã\"], [0, \"Ä\"], [0, \"Å\"], [0, \"Æ\"], [0, \"Ç\"], [0, \"È\"], [0, \"É\"], [0, \"Ê\"], [0, \"Ë\"], [0, \"Ì\"], [0, \"Í\"], [0, \"Î\"], [0, \"Ï\"], [0, \"Ð\"], [0, \"Ñ\"], [0, \"Ò\"], [0, \"Ó\"], [0, \"Ô\"], [0, \"Õ\"], [0, \"Ö\"], [0, \"×\"], [0, \"Ø\"], [0, \"Ù\"], [0, \"Ú\"], [0, \"Û\"], [0, \"Ü\"], [0, \"Ý\"], [0, \"Þ\"], [0, \"ß\"], [0, \"à\"], [0, \"á\"], [0, \"â\"], [0, \"ã\"], [0, \"ä\"], [0, \"å\"], [0, \"æ\"], [0, \"ç\"], [0, \"è\"], [0, \"é\"], [0, \"ê\"], [0, \"ë\"], [0, \"ì\"], [0, \"í\"], [0, \"î\"], [0, \"ï\"], [0, \"ð\"], [0, \"ñ\"], [0, \"ò\"], [0, \"ó\"], [0, \"ô\"], [0, \"õ\"], [0, \"ö\"], [0, \"÷\"], [0, \"ø\"], [0, \"ù\"], [0, \"ú\"], [0, \"û\"], [0, \"ü\"], [0, \"ý\"], [0, \"þ\"], [0, \"ÿ\"], [0, \"Ā\"], [0, \"ā\"], [0, \"Ă\"], [0, \"ă\"], [0, \"Ą\"], [0, \"ą\"], [0, \"Ć\"], [0, \"ć\"], [0, \"Ĉ\"], [0, \"ĉ\"], [0, \"Ċ\"], [0, \"ċ\"], [0, \"Č\"], [0, \"č\"], [0, \"Ď\"], [0, \"ď\"], [0, \"Đ\"], [0, \"đ\"], [0, \"Ē\"], [0, \"ē\"], [2, \"Ė\"], [0, \"ė\"], [0, \"Ę\"], [0, \"ę\"], [0, \"Ě\"], [0, \"ě\"], [0, \"Ĝ\"], [0, \"ĝ\"], [0, \"Ğ\"], [0, \"ğ\"], [0, \"Ġ\"], [0, \"ġ\"], [0, \"Ģ\"], [1, \"Ĥ\"], [0, \"ĥ\"], [0, \"Ħ\"], [0, \"ħ\"], [0, \"Ĩ\"], [0, \"ĩ\"], [0, \"Ī\"], [0, \"ī\"], [2, \"Į\"], [0, \"į\"], [0, \"İ\"], [0, \"ı\"], [0, \"IJ\"], [0, \"ij\"], [0, \"Ĵ\"], [0, \"ĵ\"], [0, \"Ķ\"], [0, \"ķ\"], [0, \"ĸ\"], [0, \"Ĺ\"], [0, \"ĺ\"], [0, \"Ļ\"], [0, \"ļ\"], [0, \"Ľ\"], [0, \"ľ\"], [0, \"Ŀ\"], [0, \"ŀ\"], [0, \"Ł\"], [0, \"ł\"], [0, \"Ń\"], [0, \"ń\"], [0, \"Ņ\"], [0, \"ņ\"], [0, \"Ň\"], [0, \"ň\"], [0, \"ʼn\"], [0, \"Ŋ\"], [0, \"ŋ\"], [0, \"Ō\"], [0, \"ō\"], [2, \"Ő\"], [0, \"ő\"], [0, \"Œ\"], [0, \"œ\"], [0, \"Ŕ\"], [0, \"ŕ\"], [0, \"Ŗ\"], [0, \"ŗ\"], [0, \"Ř\"], [0, \"ř\"], [0, \"Ś\"], [0, \"ś\"], [0, \"Ŝ\"], [0, \"ŝ\"], [0, \"Ş\"], [0, \"ş\"], [0, \"Š\"], [0, \"š\"], [0, \"Ţ\"], [0, \"ţ\"], [0, \"Ť\"], [0, \"ť\"], [0, \"Ŧ\"], [0, \"ŧ\"], [0, \"Ũ\"], [0, \"ũ\"], [0, \"Ū\"], [0, \"ū\"], [0, \"Ŭ\"], [0, \"ŭ\"], [0, \"Ů\"], [0, \"ů\"], [0, \"Ű\"], [0, \"ű\"], [0, \"Ų\"], [0, \"ų\"], [0, \"Ŵ\"], [0, \"ŵ\"], [0, \"Ŷ\"], [0, \"ŷ\"], [0, \"Ÿ\"], [0, \"Ź\"], [0, \"ź\"], [0, \"Ż\"], [0, \"ż\"], [0, \"Ž\"], [0, \"ž\"], [19, \"ƒ\"], [34, \"Ƶ\"], [63, \"ǵ\"], [65, \"ȷ\"], [142, \"ˆ\"], [0, \"ˇ\"], [16, \"˘\"], [0, \"˙\"], [0, \"˚\"], [0, \"˛\"], [0, \"˜\"], [0, \"˝\"], [51, \"̑\"], [127, \"Α\"], [0, \"Β\"], [0, \"Γ\"], [0, \"Δ\"], [0, \"Ε\"], [0, \"Ζ\"], [0, \"Η\"], [0, \"Θ\"], [0, \"Ι\"], [0, \"Κ\"], [0, \"Λ\"], [0, \"Μ\"], [0, \"Ν\"], [0, \"Ξ\"], [0, \"Ο\"], [0, \"Π\"], [0, \"Ρ\"], [1, \"Σ\"], [0, \"Τ\"], [0, \"Υ\"], [0, \"Φ\"], [0, \"Χ\"], [0, \"Ψ\"], [0, \"Ω\"], [7, \"α\"], [0, \"β\"], [0, \"γ\"], [0, \"δ\"], [0, \"ε\"], [0, \"ζ\"], [0, \"η\"], [0, \"θ\"], [0, \"ι\"], [0, \"κ\"], [0, \"λ\"], [0, \"μ\"], [0, \"ν\"], [0, \"ξ\"], [0, \"ο\"], [0, \"π\"], [0, \"ρ\"], [0, \"ς\"], [0, \"σ\"], [0, \"τ\"], [0, \"υ\"], [0, \"φ\"], [0, \"χ\"], [0, \"ψ\"], [0, \"ω\"], [7, \"ϑ\"], [0, \"ϒ\"], [2, \"ϕ\"], [0, \"ϖ\"], [5, \"Ϝ\"], [0, \"ϝ\"], [18, \"ϰ\"], [0, \"ϱ\"], [3, \"ϵ\"], [0, \"϶\"], [10, \"Ё\"], [0, \"Ђ\"], [0, \"Ѓ\"], [0, \"Є\"], [0, \"Ѕ\"], [0, \"І\"], [0, \"Ї\"], [0, \"Ј\"], [0, \"Љ\"], [0, \"Њ\"], [0, \"Ћ\"], [0, \"Ќ\"], [1, \"Ў\"], [0, \"Џ\"], [0, \"А\"], [0, \"Б\"], [0, \"В\"], [0, \"Г\"], [0, \"Д\"], [0, \"Е\"], [0, \"Ж\"], [0, \"З\"], [0, \"И\"], [0, \"Й\"], [0, \"К\"], [0, \"Л\"], [0, \"М\"], [0, \"Н\"], [0, \"О\"], [0, \"П\"], [0, \"Р\"], [0, \"С\"], [0, \"Т\"], [0, \"У\"], [0, \"Ф\"], [0, \"Х\"], [0, \"Ц\"], [0, \"Ч\"], [0, \"Ш\"], [0, \"Щ\"], [0, \"Ъ\"], [0, \"Ы\"], [0, \"Ь\"], [0, \"Э\"], [0, \"Ю\"], [0, \"Я\"], [0, \"а\"], [0, \"б\"], [0, \"в\"], [0, \"г\"], [0, \"д\"], [0, \"е\"], [0, \"ж\"], [0, \"з\"], [0, \"и\"], [0, \"й\"], [0, \"к\"], [0, \"л\"], [0, \"м\"], [0, \"н\"], [0, \"о\"], [0, \"п\"], [0, \"р\"], [0, \"с\"], [0, \"т\"], [0, \"у\"], [0, \"ф\"], [0, \"х\"], [0, \"ц\"], [0, \"ч\"], [0, \"ш\"], [0, \"щ\"], [0, \"ъ\"], [0, \"ы\"], [0, \"ь\"], [0, \"э\"], [0, \"ю\"], [0, \"я\"], [1, \"ё\"], [0, \"ђ\"], [0, \"ѓ\"], [0, \"є\"], [0, \"ѕ\"], [0, \"і\"], [0, \"ї\"], [0, \"ј\"], [0, \"љ\"], [0, \"њ\"], [0, \"ћ\"], [0, \"ќ\"], [1, \"ў\"], [0, \"џ\"], [7074, \" \"], [0, \" \"], [0, \" \"], [0, \" \"], [1, \" \"], [0, \" \"], [0, \" \"], [0, \" \"], [0, \"​\"], [0, \"‌\"], [0, \"‍\"], [0, \"‎\"], [0, \"‏\"], [0, \"‐\"], [2, \"–\"], [0, \"—\"], [0, \"―\"], [0, \"‖\"], [1, \"‘\"], [0, \"’\"], [0, \"‚\"], [1, \"“\"], [0, \"”\"], [0, \"„\"], [1, \"†\"], [0, \"‡\"], [0, \"•\"], [2, \"‥\"], [0, \"…\"], [9, \"‰\"], [0, \"‱\"], [0, \"′\"], [0, \"″\"], [0, \"‴\"], [0, \"‵\"], [3, \"‹\"], [0, \"›\"], [3, \"‾\"], [2, \"⁁\"], [1, \"⁃\"], [0, \"⁄\"], [10, \"⁏\"], [7, \"⁗\"], [7, { v: \" \", n: 8202, o: \"  \" }], [0, \"⁠\"], [0, \"⁡\"], [0, \"⁢\"], [0, \"⁣\"], [72, \"€\"], [46, \"⃛\"], [0, \"⃜\"], [37, \"ℂ\"], [2, \"℅\"], [4, \"ℊ\"], [0, \"ℋ\"], [0, \"ℌ\"], [0, \"ℍ\"], [0, \"ℎ\"], [0, \"ℏ\"], [0, \"ℐ\"], [0, \"ℑ\"], [0, \"ℒ\"], [0, \"ℓ\"], [1, \"ℕ\"], [0, \"№\"], [0, \"℗\"], [0, \"℘\"], [0, \"ℙ\"], [0, \"ℚ\"], [0, \"ℛ\"], [0, \"ℜ\"], [0, \"ℝ\"], [0, \"℞\"], [3, \"™\"], [1, \"ℤ\"], [2, \"℧\"], [0, \"ℨ\"], [0, \"℩\"], [2, \"ℬ\"], [0, \"ℭ\"], [1, \"ℯ\"], [0, \"ℰ\"], [0, \"ℱ\"], [1, \"ℳ\"], [0, \"ℴ\"], [0, \"ℵ\"], [0, \"ℶ\"], [0, \"ℷ\"], [0, \"ℸ\"], [12, \"ⅅ\"], [0, \"ⅆ\"], [0, \"ⅇ\"], [0, \"ⅈ\"], [10, \"⅓\"], [0, \"⅔\"], [0, \"⅕\"], [0, \"⅖\"], [0, \"⅗\"], [0, \"⅘\"], [0, \"⅙\"], [0, \"⅚\"], [0, \"⅛\"], [0, \"⅜\"], [0, \"⅝\"], [0, \"⅞\"], [49, \"←\"], [0, \"↑\"], [0, \"→\"], [0, \"↓\"], [0, \"↔\"], [0, \"↕\"], [0, \"↖\"], [0, \"↗\"], [0, \"↘\"], [0, \"↙\"], [0, \"↚\"], [0, \"↛\"], [1, { v: \"↝\", n: 824, o: \"↝̸\" }], [0, \"↞\"], [0, \"↟\"], [0, \"↠\"], [0, \"↡\"], [0, \"↢\"], [0, \"↣\"], [0, \"↤\"], [0, \"↥\"], [0, \"↦\"], [0, \"↧\"], [1, \"↩\"], [0, \"↪\"], [0, \"↫\"], [0, \"↬\"], [0, \"↭\"], [0, \"↮\"], [1, \"↰\"], [0, \"↱\"], [0, \"↲\"], [0, \"↳\"], [1, \"↵\"], [0, \"↶\"], [0, \"↷\"], [2, \"↺\"], [0, \"↻\"], [0, \"↼\"], [0, \"↽\"], [0, \"↾\"], [0, \"↿\"], [0, \"⇀\"], [0, \"⇁\"], [0, \"⇂\"], [0, \"⇃\"], [0, \"⇄\"], [0, \"⇅\"], [0, \"⇆\"], [0, \"⇇\"], [0, \"⇈\"], [0, \"⇉\"], [0, \"⇊\"], [0, \"⇋\"], [0, \"⇌\"], [0, \"⇍\"], [0, \"⇎\"], [0, \"⇏\"], [0, \"⇐\"], [0, \"⇑\"], [0, \"⇒\"], [0, \"⇓\"], [0, \"⇔\"], [0, \"⇕\"], [0, \"⇖\"], [0, \"⇗\"], [0, \"⇘\"], [0, \"⇙\"], [0, \"⇚\"], [0, \"⇛\"], [1, \"⇝\"], [6, \"⇤\"], [0, \"⇥\"], [15, \"⇵\"], [7, \"⇽\"], [0, \"⇾\"], [0, \"⇿\"], [0, \"∀\"], [0, \"∁\"], [0, { v: \"∂\", n: 824, o: \"∂̸\" }], [0, \"∃\"], [0, \"∄\"], [0, \"∅\"], [1, \"∇\"], [0, \"∈\"], [0, \"∉\"], [1, \"∋\"], [0, \"∌\"], [2, \"∏\"], [0, \"∐\"], [0, \"∑\"], [0, \"−\"], [0, \"∓\"], [0, \"∔\"], [1, \"∖\"], [0, \"∗\"], [0, \"∘\"], [1, \"√\"], [2, \"∝\"], [0, \"∞\"], [0, \"∟\"], [0, { v: \"∠\", n: 8402, o: \"∠⃒\" }], [0, \"∡\"], [0, \"∢\"], [0, \"∣\"], [0, \"∤\"], [0, \"∥\"], [0, \"∦\"], [0, \"∧\"], [0, \"∨\"], [0, { v: \"∩\", n: 65024, o: \"∩︀\" }], [0, { v: \"∪\", n: 65024, o: \"∪︀\" }], [0, \"∫\"], [0, \"∬\"], [0, \"∭\"], [0, \"∮\"], [0, \"∯\"], [0, \"∰\"], [0, \"∱\"], [0, \"∲\"], [0, \"∳\"], [0, \"∴\"], [0, \"∵\"], [0, \"∶\"], [0, \"∷\"], [0, \"∸\"], [1, \"∺\"], [0, \"∻\"], [0, { v: \"∼\", n: 8402, o: \"∼⃒\" }], [0, { v: \"∽\", n: 817, o: \"∽̱\" }], [0, { v: \"∾\", n: 819, o: \"∾̳\" }], [0, \"∿\"], [0, \"≀\"], [0, \"≁\"], [0, { v: \"≂\", n: 824, o: \"≂̸\" }], [0, \"≃\"], [0, \"≄\"], [0, \"≅\"], [0, \"≆\"], [0, \"≇\"], [0, \"≈\"], [0, \"≉\"], [0, \"≊\"], [0, { v: \"≋\", n: 824, o: \"≋̸\" }], [0, \"≌\"], [0, { v: \"≍\", n: 8402, o: \"≍⃒\" }], [0, { v: \"≎\", n: 824, o: \"≎̸\" }], [0, { v: \"≏\", n: 824, o: \"≏̸\" }], [0, { v: \"≐\", n: 824, o: \"≐̸\" }], [0, \"≑\"], [0, \"≒\"], [0, \"≓\"], [0, \"≔\"], [0, \"≕\"], [0, \"≖\"], [0, \"≗\"], [1, \"≙\"], [0, \"≚\"], [1, \"≜\"], [2, \"≟\"], [0, \"≠\"], [0, { v: \"≡\", n: 8421, o: \"≡⃥\" }], [0, \"≢\"], [1, { v: \"≤\", n: 8402, o: \"≤⃒\" }], [0, { v: \"≥\", n: 8402, o: \"≥⃒\" }], [0, { v: \"≦\", n: 824, o: \"≦̸\" }], [0, { v: \"≧\", n: 824, o: \"≧̸\" }], [0, { v: \"≨\", n: 65024, o: \"≨︀\" }], [0, { v: \"≩\", n: 65024, o: \"≩︀\" }], [0, { v: \"≪\", n: new Map(/* #__PURE__ */ restoreDiff([[824, \"≪̸\"], [7577, \"≪⃒\"]])) }], [0, { v: \"≫\", n: new Map(/* #__PURE__ */ restoreDiff([[824, \"≫̸\"], [7577, \"≫⃒\"]])) }], [0, \"≬\"], [0, \"≭\"], [0, \"≮\"], [0, \"≯\"], [0, \"≰\"], [0, \"≱\"], [0, \"≲\"], [0, \"≳\"], [0, \"≴\"], [0, \"≵\"], [0, \"≶\"], [0, \"≷\"], [0, \"≸\"], [0, \"≹\"], [0, \"≺\"], [0, \"≻\"], [0, \"≼\"], [0, \"≽\"], [0, \"≾\"], [0, { v: \"≿\", n: 824, o: \"≿̸\" }], [0, \"⊀\"], [0, \"⊁\"], [0, { v: \"⊂\", n: 8402, o: \"⊂⃒\" }], [0, { v: \"⊃\", n: 8402, o: \"⊃⃒\" }], [0, \"⊄\"], [0, \"⊅\"], [0, \"⊆\"], [0, \"⊇\"], [0, \"⊈\"], [0, \"⊉\"], [0, { v: \"⊊\", n: 65024, o: \"⊊︀\" }], [0, { v: \"⊋\", n: 65024, o: \"⊋︀\" }], [1, \"⊍\"], [0, \"⊎\"], [0, { v: \"⊏\", n: 824, o: \"⊏̸\" }], [0, { v: \"⊐\", n: 824, o: \"⊐̸\" }], [0, \"⊑\"], [0, \"⊒\"], [0, { v: \"⊓\", n: 65024, o: \"⊓︀\" }], [0, { v: \"⊔\", n: 65024, o: \"⊔︀\" }], [0, \"⊕\"], [0, \"⊖\"], [0, \"⊗\"], [0, \"⊘\"], [0, \"⊙\"], [0, \"⊚\"], [0, \"⊛\"], [1, \"⊝\"], [0, \"⊞\"], [0, \"⊟\"], [0, \"⊠\"], [0, \"⊡\"], [0, \"⊢\"], [0, \"⊣\"], [0, \"⊤\"], [0, \"⊥\"], [1, \"⊧\"], [0, \"⊨\"], [0, \"⊩\"], [0, \"⊪\"], [0, \"⊫\"], [0, \"⊬\"], [0, \"⊭\"], [0, \"⊮\"], [0, \"⊯\"], [0, \"⊰\"], [1, \"⊲\"], [0, \"⊳\"], [0, { v: \"⊴\", n: 8402, o: \"⊴⃒\" }], [0, { v: \"⊵\", n: 8402, o: \"⊵⃒\" }], [0, \"⊶\"], [0, \"⊷\"], [0, \"⊸\"], [0, \"⊹\"], [0, \"⊺\"], [0, \"⊻\"], [1, \"⊽\"], [0, \"⊾\"], [0, \"⊿\"], [0, \"⋀\"], [0, \"⋁\"], [0, \"⋂\"], [0, \"⋃\"], [0, \"⋄\"], [0, \"⋅\"], [0, \"⋆\"], [0, \"⋇\"], [0, \"⋈\"], [0, \"⋉\"], [0, \"⋊\"], [0, \"⋋\"], [0, \"⋌\"], [0, \"⋍\"], [0, \"⋎\"], [0, \"⋏\"], [0, \"⋐\"], [0, \"⋑\"], [0, \"⋒\"], [0, \"⋓\"], [0, \"⋔\"], [0, \"⋕\"], [0, \"⋖\"], [0, \"⋗\"], [0, { v: \"⋘\", n: 824, o: \"⋘̸\" }], [0, { v: \"⋙\", n: 824, o: \"⋙̸\" }], [0, { v: \"⋚\", n: 65024, o: \"⋚︀\" }], [0, { v: \"⋛\", n: 65024, o: \"⋛︀\" }], [2, \"⋞\"], [0, \"⋟\"], [0, \"⋠\"], [0, \"⋡\"], [0, \"⋢\"], [0, \"⋣\"], [2, \"⋦\"], [0, \"⋧\"], [0, \"⋨\"], [0, \"⋩\"], [0, \"⋪\"], [0, \"⋫\"], [0, \"⋬\"], [0, \"⋭\"], [0, \"⋮\"], [0, \"⋯\"], [0, \"⋰\"], [0, \"⋱\"], [0, \"⋲\"], [0, \"⋳\"], [0, \"⋴\"], [0, { v: \"⋵\", n: 824, o: \"⋵̸\" }], [0, \"⋶\"], [0, \"⋷\"], [1, { v: \"⋹\", n: 824, o: \"⋹̸\" }], [0, \"⋺\"], [0, \"⋻\"], [0, \"⋼\"], [0, \"⋽\"], [0, \"⋾\"], [6, \"⌅\"], [0, \"⌆\"], [1, \"⌈\"], [0, \"⌉\"], [0, \"⌊\"], [0, \"⌋\"], [0, \"⌌\"], [0, \"⌍\"], [0, \"⌎\"], [0, \"⌏\"], [0, \"⌐\"], [1, \"⌒\"], [0, \"⌓\"], [1, \"⌕\"], [0, \"⌖\"], [5, \"⌜\"], [0, \"⌝\"], [0, \"⌞\"], [0, \"⌟\"], [2, \"⌢\"], [0, \"⌣\"], [9, \"⌭\"], [0, \"⌮\"], [7, \"⌶\"], [6, \"⌽\"], [1, \"⌿\"], [60, \"⍼\"], [51, \"⎰\"], [0, \"⎱\"], [2, \"⎴\"], [0, \"⎵\"], [0, \"⎶\"], [37, \"⏜\"], [0, \"⏝\"], [0, \"⏞\"], [0, \"⏟\"], [2, \"⏢\"], [4, \"⏧\"], [59, \"␣\"], [164, \"Ⓢ\"], [55, \"─\"], [1, \"│\"], [9, \"┌\"], [3, \"┐\"], [3, \"└\"], [3, \"┘\"], [3, \"├\"], [7, \"┤\"], [7, \"┬\"], [7, \"┴\"], [7, \"┼\"], [19, \"═\"], [0, \"║\"], [0, \"╒\"], [0, \"╓\"], [0, \"╔\"], [0, \"╕\"], [0, \"╖\"], [0, \"╗\"], [0, \"╘\"], [0, \"╙\"], [0, \"╚\"], [0, \"╛\"], [0, \"╜\"], [0, \"╝\"], [0, \"╞\"], [0, \"╟\"], [0, \"╠\"], [0, \"╡\"], [0, \"╢\"], [0, \"╣\"], [0, \"╤\"], [0, \"╥\"], [0, \"╦\"], [0, \"╧\"], [0, \"╨\"], [0, \"╩\"], [0, \"╪\"], [0, \"╫\"], [0, \"╬\"], [19, \"▀\"], [3, \"▄\"], [3, \"█\"], [8, \"░\"], [0, \"▒\"], [0, \"▓\"], [13, \"□\"], [8, \"▪\"], [0, \"▫\"], [1, \"▭\"], [0, \"▮\"], [2, \"▱\"], [1, \"△\"], [0, \"▴\"], [0, \"▵\"], [2, \"▸\"], [0, \"▹\"], [3, \"▽\"], [0, \"▾\"], [0, \"▿\"], [2, \"◂\"], [0, \"◃\"], [6, \"◊\"], [0, \"○\"], [32, \"◬\"], [2, \"◯\"], [8, \"◸\"], [0, \"◹\"], [0, \"◺\"], [0, \"◻\"], [0, \"◼\"], [8, \"★\"], [0, \"☆\"], [7, \"☎\"], [49, \"♀\"], [1, \"♂\"], [29, \"♠\"], [2, \"♣\"], [1, \"♥\"], [0, \"♦\"], [3, \"♪\"], [2, \"♭\"], [0, \"♮\"], [0, \"♯\"], [163, \"✓\"], [3, \"✗\"], [8, \"✠\"], [21, \"✶\"], [33, \"❘\"], [25, \"❲\"], [0, \"❳\"], [84, \"⟈\"], [0, \"⟉\"], [28, \"⟦\"], [0, \"⟧\"], [0, \"⟨\"], [0, \"⟩\"], [0, \"⟪\"], [0, \"⟫\"], [0, \"⟬\"], [0, \"⟭\"], [7, \"⟵\"], [0, \"⟶\"], [0, \"⟷\"], [0, \"⟸\"], [0, \"⟹\"], [0, \"⟺\"], [1, \"⟼\"], [2, \"⟿\"], [258, \"⤂\"], [0, \"⤃\"], [0, \"⤄\"], [0, \"⤅\"], [6, \"⤌\"], [0, \"⤍\"], [0, \"⤎\"], [0, \"⤏\"], [0, \"⤐\"], [0, \"⤑\"], [0, \"⤒\"], [0, \"⤓\"], [2, \"⤖\"], [2, \"⤙\"], [0, \"⤚\"], [0, \"⤛\"], [0, \"⤜\"], [0, \"⤝\"], [0, \"⤞\"], [0, \"⤟\"], [0, \"⤠\"], [2, \"⤣\"], [0, \"⤤\"], [0, \"⤥\"], [0, \"⤦\"], [0, \"⤧\"], [0, \"⤨\"], [0, \"⤩\"], [0, \"⤪\"], [8, { v: \"⤳\", n: 824, o: \"⤳̸\" }], [1, \"⤵\"], [0, \"⤶\"], [0, \"⤷\"], [0, \"⤸\"], [0, \"⤹\"], [2, \"⤼\"], [0, \"⤽\"], [7, \"⥅\"], [2, \"⥈\"], [0, \"⥉\"], [0, \"⥊\"], [0, \"⥋\"], [2, \"⥎\"], [0, \"⥏\"], [0, \"⥐\"], [0, \"⥑\"], [0, \"⥒\"], [0, \"⥓\"], [0, \"⥔\"], [0, \"⥕\"], [0, \"⥖\"], [0, \"⥗\"], [0, \"⥘\"], [0, \"⥙\"], [0, \"⥚\"], [0, \"⥛\"], [0, \"⥜\"], [0, \"⥝\"], [0, \"⥞\"], [0, \"⥟\"], [0, \"⥠\"], [0, \"⥡\"], [0, \"⥢\"], [0, \"⥣\"], [0, \"⥤\"], [0, \"⥥\"], [0, \"⥦\"], [0, \"⥧\"], [0, \"⥨\"], [0, \"⥩\"], [0, \"⥪\"], [0, \"⥫\"], [0, \"⥬\"], [0, \"⥭\"], [0, \"⥮\"], [0, \"⥯\"], [0, \"⥰\"], [0, \"⥱\"], [0, \"⥲\"], [0, \"⥳\"], [0, \"⥴\"], [0, \"⥵\"], [0, \"⥶\"], [1, \"⥸\"], [0, \"⥹\"], [1, \"⥻\"], [0, \"⥼\"], [0, \"⥽\"], [0, \"⥾\"], [0, \"⥿\"], [5, \"⦅\"], [0, \"⦆\"], [4, \"⦋\"], [0, \"⦌\"], [0, \"⦍\"], [0, \"⦎\"], [0, \"⦏\"], [0, \"⦐\"], [0, \"⦑\"], [0, \"⦒\"], [0, \"⦓\"], [0, \"⦔\"], [0, \"⦕\"], [0, \"⦖\"], [3, \"⦚\"], [1, \"⦜\"], [0, \"⦝\"], [6, \"⦤\"], [0, \"⦥\"], [0, \"⦦\"], [0, \"⦧\"], [0, \"⦨\"], [0, \"⦩\"], [0, \"⦪\"], [0, \"⦫\"], [0, \"⦬\"], [0, \"⦭\"], [0, \"⦮\"], [0, \"⦯\"], [0, \"⦰\"], [0, \"⦱\"], [0, \"⦲\"], [0, \"⦳\"], [0, \"⦴\"], [0, \"⦵\"], [0, \"⦶\"], [0, \"⦷\"], [1, \"⦹\"], [1, \"⦻\"], [0, \"⦼\"], [1, \"⦾\"], [0, \"⦿\"], [0, \"⧀\"], [0, \"⧁\"], [0, \"⧂\"], [0, \"⧃\"], [0, \"⧄\"], [0, \"⧅\"], [3, \"⧉\"], [3, \"⧍\"], [0, \"⧎\"], [0, { v: \"⧏\", n: 824, o: \"⧏̸\" }], [0, { v: \"⧐\", n: 824, o: \"⧐̸\" }], [11, \"⧜\"], [0, \"⧝\"], [0, \"⧞\"], [4, \"⧣\"], [0, \"⧤\"], [0, \"⧥\"], [5, \"⧫\"], [8, \"⧴\"], [1, \"⧶\"], [9, \"⨀\"], [0, \"⨁\"], [0, \"⨂\"], [1, \"⨄\"], [1, \"⨆\"], [5, \"⨌\"], [0, \"⨍\"], [2, \"⨐\"], [0, \"⨑\"], [0, \"⨒\"], [0, \"⨓\"], [0, \"⨔\"], [0, \"⨕\"], [0, \"⨖\"], [0, \"⨗\"], [10, \"⨢\"], [0, \"⨣\"], [0, \"⨤\"], [0, \"⨥\"], [0, \"⨦\"], [0, \"⨧\"], [1, \"⨩\"], [0, \"⨪\"], [2, \"⨭\"], [0, \"⨮\"], [0, \"⨯\"], [0, \"⨰\"], [0, \"⨱\"], [1, \"⨳\"], [0, \"⨴\"], [0, \"⨵\"], [0, \"⨶\"], [0, \"⨷\"], [0, \"⨸\"], [0, \"⨹\"], [0, \"⨺\"], [0, \"⨻\"], [0, \"⨼\"], [2, \"⨿\"], [0, \"⩀\"], [1, \"⩂\"], [0, \"⩃\"], [0, \"⩄\"], [0, \"⩅\"], [0, \"⩆\"], [0, \"⩇\"], [0, \"⩈\"], [0, \"⩉\"], [0, \"⩊\"], [0, \"⩋\"], [0, \"⩌\"], [0, \"⩍\"], [2, \"⩐\"], [2, \"⩓\"], [0, \"⩔\"], [0, \"⩕\"], [0, \"⩖\"], [0, \"⩗\"], [0, \"⩘\"], [1, \"⩚\"], [0, \"⩛\"], [0, \"⩜\"], [0, \"⩝\"], [1, \"⩟\"], [6, \"⩦\"], [3, \"⩪\"], [2, { v: \"⩭\", n: 824, o: \"⩭̸\" }], [0, \"⩮\"], [0, \"⩯\"], [0, { v: \"⩰\", n: 824, o: \"⩰̸\" }], [0, \"⩱\"], [0, \"⩲\"], [0, \"⩳\"], [0, \"⩴\"], [0, \"⩵\"], [1, \"⩷\"], [0, \"⩸\"], [0, \"⩹\"], [0, \"⩺\"], [0, \"⩻\"], [0, \"⩼\"], [0, { v: \"⩽\", n: 824, o: \"⩽̸\" }], [0, { v: \"⩾\", n: 824, o: \"⩾̸\" }], [0, \"⩿\"], [0, \"⪀\"], [0, \"⪁\"], [0, \"⪂\"], [0, \"⪃\"], [0, \"⪄\"], [0, \"⪅\"], [0, \"⪆\"], [0, \"⪇\"], [0, \"⪈\"], [0, \"⪉\"], [0, \"⪊\"], [0, \"⪋\"], [0, \"⪌\"], [0, \"⪍\"], [0, \"⪎\"], [0, \"⪏\"], [0, \"⪐\"], [0, \"⪑\"], [0, \"⪒\"], [0, \"⪓\"], [0, \"⪔\"], [0, \"⪕\"], [0, \"⪖\"], [0, \"⪗\"], [0, \"⪘\"], [0, \"⪙\"], [0, \"⪚\"], [2, \"⪝\"], [0, \"⪞\"], [0, \"⪟\"], [0, \"⪠\"], [0, { v: \"⪡\", n: 824, o: \"⪡̸\" }], [0, { v: \"⪢\", n: 824, o: \"⪢̸\" }], [1, \"⪤\"], [0, \"⪥\"], [0, \"⪦\"], [0, \"⪧\"], [0, \"⪨\"], [0, \"⪩\"], [0, \"⪪\"], [0, \"⪫\"], [0, { v: \"⪬\", n: 65024, o: \"⪬︀\" }], [0, { v: \"⪭\", n: 65024, o: \"⪭︀\" }], [0, \"⪮\"], [0, { v: \"⪯\", n: 824, o: \"⪯̸\" }], [0, { v: \"⪰\", n: 824, o: \"⪰̸\" }], [2, \"⪳\"], [0, \"⪴\"], [0, \"⪵\"], [0, \"⪶\"], [0, \"⪷\"], [0, \"⪸\"], [0, \"⪹\"], [0, \"⪺\"], [0, \"⪻\"], [0, \"⪼\"], [0, \"⪽\"], [0, \"⪾\"], [0, \"⪿\"], [0, \"⫀\"], [0, \"⫁\"], [0, \"⫂\"], [0, \"⫃\"], [0, \"⫄\"], [0, { v: \"⫅\", n: 824, o: \"⫅̸\" }], [0, { v: \"⫆\", n: 824, o: \"⫆̸\" }], [0, \"⫇\"], [0, \"⫈\"], [2, { v: \"⫋\", n: 65024, o: \"⫋︀\" }], [0, { v: \"⫌\", n: 65024, o: \"⫌︀\" }], [2, \"⫏\"], [0, \"⫐\"], [0, \"⫑\"], [0, \"⫒\"], [0, \"⫓\"], [0, \"⫔\"], [0, \"⫕\"], [0, \"⫖\"], [0, \"⫗\"], [0, \"⫘\"], [0, \"⫙\"], [0, \"⫚\"], [0, \"⫛\"], [8, \"⫤\"], [1, \"⫦\"], [0, \"⫧\"], [0, \"⫨\"], [0, \"⫩\"], [1, \"⫫\"], [0, \"⫬\"], [0, \"⫭\"], [0, \"⫮\"], [0, \"⫯\"], [0, \"⫰\"], [0, \"⫱\"], [0, \"⫲\"], [0, \"⫳\"], [9, { v: \"⫽\", n: 8421, o: \"⫽⃥\" }], [44343, { n: new Map(/* #__PURE__ */ restoreDiff([[56476, \"𝒜\"], [1, \"𝒞\"], [0, \"𝒟\"], [2, \"𝒢\"], [2, \"𝒥\"], [0, \"𝒦\"], [2, \"𝒩\"], [0, \"𝒪\"], [0, \"𝒫\"], [0, \"𝒬\"], [1, \"𝒮\"], [0, \"𝒯\"], [0, \"𝒰\"], [0, \"𝒱\"], [0, \"𝒲\"], [0, \"𝒳\"], [0, \"𝒴\"], [0, \"𝒵\"], [0, \"𝒶\"], [0, \"𝒷\"], [0, \"𝒸\"], [0, \"𝒹\"], [1, \"𝒻\"], [1, \"𝒽\"], [0, \"𝒾\"], [0, \"𝒿\"], [0, \"𝓀\"], [0, \"𝓁\"], [0, \"𝓂\"], [0, \"𝓃\"], [1, \"𝓅\"], [0, \"𝓆\"], [0, \"𝓇\"], [0, \"𝓈\"], [0, \"𝓉\"], [0, \"𝓊\"], [0, \"𝓋\"], [0, \"𝓌\"], [0, \"𝓍\"], [0, \"𝓎\"], [0, \"𝓏\"], [52, \"𝔄\"], [0, \"𝔅\"], [1, \"𝔇\"], [0, \"𝔈\"], [0, \"𝔉\"], [0, \"𝔊\"], [2, \"𝔍\"], [0, \"𝔎\"], [0, \"𝔏\"], [0, \"𝔐\"], [0, \"𝔑\"], [0, \"𝔒\"], [0, \"𝔓\"], [0, \"𝔔\"], [1, \"𝔖\"], [0, \"𝔗\"], [0, \"𝔘\"], [0, \"𝔙\"], [0, \"𝔚\"], [0, \"𝔛\"], [0, \"𝔜\"], [1, \"𝔞\"], [0, \"𝔟\"], [0, \"𝔠\"], [0, \"𝔡\"], [0, \"𝔢\"], [0, \"𝔣\"], [0, \"𝔤\"], [0, \"𝔥\"], [0, \"𝔦\"], [0, \"𝔧\"], [0, \"𝔨\"], [0, \"𝔩\"], [0, \"𝔪\"], [0, \"𝔫\"], [0, \"𝔬\"], [0, \"𝔭\"], [0, \"𝔮\"], [0, \"𝔯\"], [0, \"𝔰\"], [0, \"𝔱\"], [0, \"𝔲\"], [0, \"𝔳\"], [0, \"𝔴\"], [0, \"𝔵\"], [0, \"𝔶\"], [0, \"𝔷\"], [0, \"𝔸\"], [0, \"𝔹\"], [1, \"𝔻\"], [0, \"𝔼\"], [0, \"𝔽\"], [0, \"𝔾\"], [1, \"𝕀\"], [0, \"𝕁\"], [0, \"𝕂\"], [0, \"𝕃\"], [0, \"𝕄\"], [1, \"𝕆\"], [3, \"𝕊\"], [0, \"𝕋\"], [0, \"𝕌\"], [0, \"𝕍\"], [0, \"𝕎\"], [0, \"𝕏\"], [0, \"𝕐\"], [1, \"𝕒\"], [0, \"𝕓\"], [0, \"𝕔\"], [0, \"𝕕\"], [0, \"𝕖\"], [0, \"𝕗\"], [0, \"𝕘\"], [0, \"𝕙\"], [0, \"𝕚\"], [0, \"𝕛\"], [0, \"𝕜\"], [0, \"𝕝\"], [0, \"𝕞\"], [0, \"𝕟\"], [0, \"𝕠\"], [0, \"𝕡\"], [0, \"𝕢\"], [0, \"𝕣\"], [0, \"𝕤\"], [0, \"𝕥\"], [0, \"𝕦\"], [0, \"𝕧\"], [0, \"𝕨\"], [0, \"𝕩\"], [0, \"𝕪\"], [0, \"𝕫\"]])) }], [8906, \"ff\"], [0, \"fi\"], [0, \"fl\"], [0, \"ffi\"], [0, \"ffl\"]]));\n//# sourceMappingURL=encode-html.js.map","export const xmlReplacer = /[\"&'<>$\\x80-\\uFFFF]/g;\nconst xmlCodeMap = new Map([\n [34, \""\"],\n [38, \"&\"],\n [39, \"'\"],\n [60, \"<\"],\n [62, \">\"],\n]);\n// For compatibility with node < 4, we wrap `codePointAt`\nexport const getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null\n ? (str, index) => str.codePointAt(index)\n : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n (c, index) => (c.charCodeAt(index) & 0xfc00) === 0xd800\n ? (c.charCodeAt(index) - 0xd800) * 0x400 +\n c.charCodeAt(index + 1) -\n 0xdc00 +\n 0x10000\n : c.charCodeAt(index);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexport function encodeXML(str) {\n let ret = \"\";\n let lastIdx = 0;\n let match;\n while ((match = xmlReplacer.exec(str)) !== null) {\n const i = match.index;\n const char = str.charCodeAt(i);\n const next = xmlCodeMap.get(char);\n if (next !== undefined) {\n ret += str.substring(lastIdx, i) + next;\n lastIdx = i + 1;\n }\n else {\n ret += `${str.substring(lastIdx, i)}&#x${getCodePoint(str, i).toString(16)};`;\n // Increase by 1 if we have a surrogate pair\n lastIdx = xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800);\n }\n }\n return ret + str.substr(lastIdx);\n}\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `ü`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nexport const escape = encodeXML;\n/**\n * Creates a function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n *\n * @param regex Regular expression to match characters to escape.\n * @param map Map of characters to escape to their entities.\n *\n * @returns Function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n */\nfunction getEscaper(regex, map) {\n return function escape(data) {\n let match;\n let lastIdx = 0;\n let result = \"\";\n while ((match = regex.exec(data))) {\n if (lastIdx !== match.index) {\n result += data.substring(lastIdx, match.index);\n }\n // We know that this character will be in the map.\n result += map.get(match[0].charCodeAt(0));\n // Every match will be of length 1\n lastIdx = match.index + 1;\n }\n return result + data.substring(lastIdx);\n };\n}\n/**\n * Encodes all characters not valid in XML documents using XML entities.\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nexport const escapeUTF8 = getEscaper(/[&<>'\"]/g, xmlCodeMap);\n/**\n * Encodes all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeAttribute = getEscaper(/[\"&\\u00A0]/g, new Map([\n [34, \""\"],\n [38, \"&\"],\n [160, \" \"],\n]));\n/**\n * Encodes all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeText = getEscaper(/[&<>\\u00A0]/g, new Map([\n [38, \"&\"],\n [60, \"<\"],\n [62, \">\"],\n [160, \" \"],\n]));\n//# sourceMappingURL=escape.js.map","import { decodeXML, decodeHTML, DecodingMode } from \"./decode.js\";\nimport { encodeHTML, encodeNonAsciiHTML } from \"./encode.js\";\nimport { encodeXML, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\n/** The level of entities to support. */\nexport var EntityLevel;\n(function (EntityLevel) {\n /** Support only XML entities. */\n EntityLevel[EntityLevel[\"XML\"] = 0] = \"XML\";\n /** Support HTML entities, which are a superset of XML entities. */\n EntityLevel[EntityLevel[\"HTML\"] = 1] = \"HTML\";\n})(EntityLevel || (EntityLevel = {}));\nexport var EncodingMode;\n(function (EncodingMode) {\n /**\n * The output is UTF-8 encoded. Only characters that need escaping within\n * XML will be escaped.\n */\n EncodingMode[EncodingMode[\"UTF8\"] = 0] = \"UTF8\";\n /**\n * The output consists only of ASCII characters. Characters that need\n * escaping within HTML, and characters that aren't ASCII characters will\n * be escaped.\n */\n EncodingMode[EncodingMode[\"ASCII\"] = 1] = \"ASCII\";\n /**\n * Encode all characters that have an equivalent entity, as well as all\n * characters that are not ASCII characters.\n */\n EncodingMode[EncodingMode[\"Extensive\"] = 2] = \"Extensive\";\n /**\n * Encode all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */\n EncodingMode[EncodingMode[\"Attribute\"] = 3] = \"Attribute\";\n /**\n * Encode all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */\n EncodingMode[EncodingMode[\"Text\"] = 4] = \"Text\";\n})(EncodingMode || (EncodingMode = {}));\n/**\n * Decodes a string with entities.\n *\n * @param data String to decode.\n * @param options Decoding options.\n */\nexport function decode(data, options = EntityLevel.XML) {\n const level = typeof options === \"number\" ? options : options.level;\n if (level === EntityLevel.HTML) {\n const mode = typeof options === \"object\" ? options.mode : undefined;\n return decodeHTML(data, mode);\n }\n return decodeXML(data);\n}\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param data String to decode.\n * @param options Decoding options.\n * @deprecated Use `decode` with the `mode` set to `Strict`.\n */\nexport function decodeStrict(data, options = EntityLevel.XML) {\n var _a;\n const opts = typeof options === \"number\" ? { level: options } : options;\n (_a = opts.mode) !== null && _a !== void 0 ? _a : (opts.mode = DecodingMode.Strict);\n return decode(data, opts);\n}\n/**\n * Encodes a string with entities.\n *\n * @param data String to encode.\n * @param options Encoding options.\n */\nexport function encode(data, options = EntityLevel.XML) {\n const opts = typeof options === \"number\" ? { level: options } : options;\n // Mode `UTF8` just escapes XML entities\n if (opts.mode === EncodingMode.UTF8)\n return escapeUTF8(data);\n if (opts.mode === EncodingMode.Attribute)\n return escapeAttribute(data);\n if (opts.mode === EncodingMode.Text)\n return escapeText(data);\n if (opts.level === EntityLevel.HTML) {\n if (opts.mode === EncodingMode.ASCII) {\n return encodeNonAsciiHTML(data);\n }\n return encodeHTML(data);\n }\n // ASCII and Extensive are equivalent\n return encodeXML(data);\n}\nexport { encodeXML, escape, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\nexport { encodeHTML, encodeNonAsciiHTML, \n// Legacy aliases (deprecated)\nencodeHTML as encodeHTML4, encodeHTML as encodeHTML5, } from \"./encode.js\";\nexport { EntityDecoder, DecodingMode, decodeXML, decodeHTML, decodeHTMLStrict, decodeHTMLAttribute, \n// Legacy aliases (deprecated)\ndecodeHTML as decodeHTML4, decodeHTML as decodeHTML5, decodeHTMLStrict as decodeHTML4Strict, decodeHTMLStrict as decodeHTML5Strict, decodeXML as decodeXMLStrict, } from \"./decode.js\";\n//# sourceMappingURL=index.js.map","// Utilities\n//\n\nimport * as mdurl from 'mdurl'\nimport * as ucmicro from 'uc.micro'\nimport { decodeHTML } from 'entities'\n\nfunction _class (obj) { return Object.prototype.toString.call(obj) }\n\nfunction isString (obj) { return _class(obj) === '[object String]' }\n\nconst _hasOwnProperty = Object.prototype.hasOwnProperty\n\nfunction has (object, key) {\n return _hasOwnProperty.call(object, key)\n}\n\n// Merge objects\n//\nfunction assign (obj /* from1, from2, from3, ... */) {\n const sources = Array.prototype.slice.call(arguments, 1)\n\n sources.forEach(function (source) {\n if (!source) { return }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be object')\n }\n\n Object.keys(source).forEach(function (key) {\n obj[key] = source[key]\n })\n })\n\n return obj\n}\n\n// Remove element from array and put another array at those position.\n// Useful for some operations with tokens\nfunction arrayReplaceAt (src, pos, newElements) {\n return [].concat(src.slice(0, pos), newElements, src.slice(pos + 1))\n}\n\nfunction isValidEntityCode (c) {\n /* eslint no-bitwise:0 */\n // broken sequence\n if (c >= 0xD800 && c <= 0xDFFF) { return false }\n // never used\n if (c >= 0xFDD0 && c <= 0xFDEF) { return false }\n if ((c & 0xFFFF) === 0xFFFF || (c & 0xFFFF) === 0xFFFE) { return false }\n // control codes\n if (c >= 0x00 && c <= 0x08) { return false }\n if (c === 0x0B) { return false }\n if (c >= 0x0E && c <= 0x1F) { return false }\n if (c >= 0x7F && c <= 0x9F) { return false }\n // out of range\n if (c > 0x10FFFF) { return false }\n return true\n}\n\nfunction fromCodePoint (c) {\n /* eslint no-bitwise:0 */\n if (c > 0xffff) {\n c -= 0x10000\n const surrogate1 = 0xd800 + (c >> 10)\n const surrogate2 = 0xdc00 + (c & 0x3ff)\n\n return String.fromCharCode(surrogate1, surrogate2)\n }\n return String.fromCharCode(c)\n}\n\nconst UNESCAPE_MD_RE = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^_`{|}~])/g\nconst ENTITY_RE = /&([a-z#][a-z0-9]{1,31});/gi\nconst UNESCAPE_ALL_RE = new RegExp(UNESCAPE_MD_RE.source + '|' + ENTITY_RE.source, 'gi')\n\nconst DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))$/i\n\nfunction replaceEntityPattern (match, name) {\n if (name.charCodeAt(0) === 0x23/* # */ && DIGITAL_ENTITY_TEST_RE.test(name)) {\n const code = name[1].toLowerCase() === 'x'\n ? parseInt(name.slice(2), 16)\n : parseInt(name.slice(1), 10)\n\n if (isValidEntityCode(code)) {\n return fromCodePoint(code)\n }\n\n return match\n }\n\n const decoded = decodeHTML(match)\n if (decoded !== match) {\n return decoded\n }\n\n return match\n}\n\n/* function replaceEntities(str) {\n if (str.indexOf('&') < 0) { return str; }\n\n return str.replace(ENTITY_RE, replaceEntityPattern);\n} */\n\nfunction unescapeMd (str) {\n if (str.indexOf('\\\\') < 0) { return str }\n return str.replace(UNESCAPE_MD_RE, '$1')\n}\n\nfunction unescapeAll (str) {\n if (str.indexOf('\\\\') < 0 && str.indexOf('&') < 0) { return str }\n\n return str.replace(UNESCAPE_ALL_RE, function (match, escaped, entity) {\n if (escaped) { return escaped }\n return replaceEntityPattern(match, entity)\n })\n}\n\nconst HTML_ESCAPE_TEST_RE = /[&<>\"]/\nconst HTML_ESCAPE_REPLACE_RE = /[&<>\"]/g\nconst HTML_REPLACEMENTS = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"'\n}\n\nfunction replaceUnsafeChar (ch) {\n return HTML_REPLACEMENTS[ch]\n}\n\nfunction escapeHtml (str) {\n if (HTML_ESCAPE_TEST_RE.test(str)) {\n return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar)\n }\n return str\n}\n\nconst REGEXP_ESCAPE_RE = /[.?*+^$[\\]\\\\(){}|-]/g\n\nfunction escapeRE (str) {\n return str.replace(REGEXP_ESCAPE_RE, '\\\\$&')\n}\n\nfunction isSpace (code) {\n switch (code) {\n case 0x09:\n case 0x20:\n return true\n }\n return false\n}\n\n// Zs (unicode class) || [\\t\\f\\v\\r\\n]\nfunction isWhiteSpace (code) {\n if (code >= 0x2000 && code <= 0x200A) { return true }\n switch (code) {\n case 0x09: // \\t\n case 0x0A: // \\n\n case 0x0B: // \\v\n case 0x0C: // \\f\n case 0x0D: // \\r\n case 0x20:\n case 0xA0:\n case 0x1680:\n case 0x202F:\n case 0x205F:\n case 0x3000:\n return true\n }\n return false\n}\n\n/* eslint-disable max-len */\n\n// Currently without astral characters support.\nfunction isPunctChar (ch) {\n return ucmicro.P.test(ch)\n}\n\n// Markdown ASCII punctuation characters.\n//\n// !, \", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \\, ], ^, _, `, {, |, }, or ~\n// http://spec.commonmark.org/0.15/#ascii-punctuation-character\n//\n// Don't confuse with unicode punctuation !!! It lacks some chars in ascii range.\n//\nfunction isMdAsciiPunct (ch) {\n switch (ch) {\n case 0x21/* ! */:\n case 0x22/* \" */:\n case 0x23/* # */:\n case 0x24/* $ */:\n case 0x25/* % */:\n case 0x26/* & */:\n case 0x27/* ' */:\n case 0x28/* ( */:\n case 0x29/* ) */:\n case 0x2A/* * */:\n case 0x2B/* + */:\n case 0x2C/* , */:\n case 0x2D/* - */:\n case 0x2E/* . */:\n case 0x2F/* / */:\n case 0x3A/* : */:\n case 0x3B/* ; */:\n case 0x3C/* < */:\n case 0x3D/* = */:\n case 0x3E/* > */:\n case 0x3F/* ? */:\n case 0x40/* @ */:\n case 0x5B/* [ */:\n case 0x5C/* \\ */:\n case 0x5D/* ] */:\n case 0x5E/* ^ */:\n case 0x5F/* _ */:\n case 0x60/* ` */:\n case 0x7B/* { */:\n case 0x7C/* | */:\n case 0x7D/* } */:\n case 0x7E/* ~ */:\n return true\n default:\n return false\n }\n}\n\n// Hepler to unify [reference labels].\n//\nfunction normalizeReference (str) {\n // Trim and collapse whitespace\n //\n str = str.trim().replace(/\\s+/g, ' ')\n\n // In node v10 'ẞ'.toLowerCase() === 'Ṿ', which is presumed to be a bug\n // fixed in v12 (couldn't find any details).\n //\n // So treat this one as a special case\n // (remove this when node v10 is no longer supported).\n //\n if ('ẞ'.toLowerCase() === 'Ṿ') {\n str = str.replace(/ẞ/g, 'ß')\n }\n\n // .toLowerCase().toUpperCase() should get rid of all differences\n // between letter variants.\n //\n // Simple .toLowerCase() doesn't normalize 125 code points correctly,\n // and .toUpperCase doesn't normalize 6 of them (list of exceptions:\n // İ, ϴ, ẞ, Ω, K, Å - those are already uppercased, but have differently\n // uppercased versions).\n //\n // Here's an example showing how it happens. Lets take greek letter omega:\n // uppercase U+0398 (Θ), U+03f4 (ϴ) and lowercase U+03b8 (θ), U+03d1 (ϑ)\n //\n // Unicode entries:\n // 0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;\n // 03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398\n // 03D1;GREEK THETA SYMBOL;Ll;0;L; 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398\n // 03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L; 0398;;;;N;;;;03B8;\n //\n // Case-insensitive comparison should treat all of them as equivalent.\n //\n // But .toLowerCase() doesn't change ϑ (it's already lowercase),\n // and .toUpperCase() doesn't change ϴ (already uppercase).\n //\n // Applying first lower then upper case normalizes any character:\n // '\\u0398\\u03f4\\u03b8\\u03d1'.toLowerCase().toUpperCase() === '\\u0398\\u0398\\u0398\\u0398'\n //\n // Note: this is equivalent to unicode case folding; unicode normalization\n // is a different step that is not required here.\n //\n // Final result should be uppercased, because it's later stored in an object\n // (this avoid a conflict with Object.prototype members,\n // most notably, `__proto__`)\n //\n return str.toLowerCase().toUpperCase()\n}\n\n// Re-export libraries commonly used in both markdown-it and its plugins,\n// so plugins won't have to depend on them explicitly, which reduces their\n// bundled size (e.g. a browser build).\n//\nconst lib = { mdurl, ucmicro }\n\nexport {\n lib,\n assign,\n isString,\n has,\n unescapeMd,\n unescapeAll,\n isValidEntityCode,\n fromCodePoint,\n escapeHtml,\n arrayReplaceAt,\n isSpace,\n isWhiteSpace,\n isMdAsciiPunct,\n isPunctChar,\n escapeRE,\n normalizeReference\n}\n","// Parse link label\n//\n// this function assumes that first character (\"[\") already matches;\n// returns the end of the label\n//\n\nexport default function parseLinkLabel (state, start, disableNested) {\n let level, found, marker, prevPos\n\n const max = state.posMax\n const oldPos = state.pos\n\n state.pos = start + 1\n level = 1\n\n while (state.pos < max) {\n marker = state.src.charCodeAt(state.pos)\n if (marker === 0x5D /* ] */) {\n level--\n if (level === 0) {\n found = true\n break\n }\n }\n\n prevPos = state.pos\n state.md.inline.skipToken(state)\n if (marker === 0x5B /* [ */) {\n if (prevPos === state.pos - 1) {\n // increase level if we find text `[`, which is not a part of any token\n level++\n } else if (disableNested) {\n state.pos = oldPos\n return -1\n }\n }\n }\n\n let labelEnd = -1\n\n if (found) {\n labelEnd = state.pos\n }\n\n // restore old state\n state.pos = oldPos\n\n return labelEnd\n}\n","// Parse link destination\n//\n\nimport { unescapeAll } from '../common/utils.mjs'\n\nexport default function parseLinkDestination (str, start, max) {\n let code\n let pos = start\n\n const result = {\n ok: false,\n pos: 0,\n lines: 0,\n str: ''\n }\n\n if (str.charCodeAt(pos) === 0x3C /* < */) {\n pos++\n while (pos < max) {\n code = str.charCodeAt(pos)\n if (code === 0x0A /* \\n */) { return result }\n if (code === 0x3C /* < */) { return result }\n if (code === 0x3E /* > */) {\n result.pos = pos + 1\n result.str = unescapeAll(str.slice(start + 1, pos))\n result.ok = true\n return result\n }\n if (code === 0x5C /* \\ */ && pos + 1 < max) {\n pos += 2\n continue\n }\n\n pos++\n }\n\n // no closing '>'\n return result\n }\n\n // this should be ... } else { ... branch\n\n let level = 0\n while (pos < max) {\n code = str.charCodeAt(pos)\n\n if (code === 0x20) { break }\n\n // ascii control characters\n if (code < 0x20 || code === 0x7F) { break }\n\n if (code === 0x5C /* \\ */ && pos + 1 < max) {\n if (str.charCodeAt(pos + 1) === 0x20) { break }\n pos += 2\n continue\n }\n\n if (code === 0x28 /* ( */) {\n level++\n if (level > 32) { return result }\n }\n\n if (code === 0x29 /* ) */) {\n if (level === 0) { break }\n level--\n }\n\n pos++\n }\n\n if (start === pos) { return result }\n if (level !== 0) { return result }\n\n result.str = unescapeAll(str.slice(start, pos))\n result.pos = pos\n result.ok = true\n return result\n}\n","// Parse link title\n//\n\nimport { unescapeAll } from '../common/utils.mjs'\n\nexport default function parseLinkTitle (str, start, max) {\n let code, marker\n let lines = 0\n let pos = start\n\n const result = {\n ok: false,\n pos: 0,\n lines: 0,\n str: ''\n }\n\n if (pos >= max) { return result }\n\n marker = str.charCodeAt(pos)\n\n if (marker !== 0x22 /* \" */ && marker !== 0x27 /* ' */ && marker !== 0x28 /* ( */) { return result }\n\n pos++\n\n // if opening marker is \"(\", switch it to closing marker \")\"\n if (marker === 0x28) { marker = 0x29 }\n\n while (pos < max) {\n code = str.charCodeAt(pos)\n if (code === marker) {\n result.pos = pos + 1\n result.lines = lines\n result.str = unescapeAll(str.slice(start + 1, pos))\n result.ok = true\n return result\n } else if (code === 0x28 /* ( */ && marker === 0x29 /* ) */) {\n return result\n } else if (code === 0x0A) {\n lines++\n } else if (code === 0x5C /* \\ */ && pos + 1 < max) {\n pos++\n if (str.charCodeAt(pos) === 0x0A) {\n lines++\n }\n }\n\n pos++\n }\n\n return result\n}\n","/**\n * class Renderer\n *\n * Generates HTML from parsed token stream. Each instance has independent\n * copy of rules. Those can be rewritten with ease. Also, you can add new\n * rules if you create plugin and adds new token types.\n **/\n\nimport { assign, unescapeAll, escapeHtml } from './common/utils.mjs'\n\nconst default_rules = {}\n\ndefault_rules.code_inline = function (tokens, idx, options, env, slf) {\n const token = tokens[idx]\n\n return '' +\n escapeHtml(token.content) +\n ''\n}\n\ndefault_rules.code_block = function (tokens, idx, options, env, slf) {\n const token = tokens[idx]\n\n return '' +\n escapeHtml(tokens[idx].content) +\n '\\n'\n}\n\ndefault_rules.fence = function (tokens, idx, options, env, slf) {\n const token = tokens[idx]\n const info = token.info ? unescapeAll(token.info).trim() : ''\n let langName = ''\n let langAttrs = ''\n\n if (info) {\n const arr = info.split(/(\\s+)/g)\n langName = arr[0]\n langAttrs = arr.slice(2).join('')\n }\n\n let highlighted\n if (options.highlight) {\n highlighted = options.highlight(token.content, langName, langAttrs) || escapeHtml(token.content)\n } else {\n highlighted = escapeHtml(token.content)\n }\n\n if (highlighted.indexOf('${highlighted}\\n`\n }\n\n return `
${highlighted}
\\n`\n}\n\ndefault_rules.image = function (tokens, idx, options, env, slf) {\n const token = tokens[idx]\n\n // \"alt\" attr MUST be set, even if empty. Because it's mandatory and\n // should be placed on proper position for tests.\n //\n // Replace content with actual value\n\n token.attrs[token.attrIndex('alt')][1] =\n slf.renderInlineAsText(token.children, options, env)\n\n return slf.renderToken(tokens, idx, options)\n}\n\ndefault_rules.hardbreak = function (tokens, idx, options /*, env */) {\n return options.xhtmlOut ? '
\\n' : '
\\n'\n}\ndefault_rules.softbreak = function (tokens, idx, options /*, env */) {\n return options.breaks ? (options.xhtmlOut ? '
\\n' : '
\\n') : '\\n'\n}\n\ndefault_rules.text = function (tokens, idx /*, options, env */) {\n return escapeHtml(tokens[idx].content)\n}\n\ndefault_rules.html_block = function (tokens, idx /*, options, env */) {\n return tokens[idx].content\n}\ndefault_rules.html_inline = function (tokens, idx /*, options, env */) {\n return tokens[idx].content\n}\n\n/**\n * new Renderer()\n *\n * Creates new [[Renderer]] instance and fill [[Renderer#rules]] with defaults.\n **/\nfunction Renderer () {\n /**\n * Renderer#rules -> Object\n *\n * Contains render rules for tokens. Can be updated and extended.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.renderer.rules.strong_open = function () { return ''; };\n * md.renderer.rules.strong_close = function () { return ''; };\n *\n * var result = md.renderInline(...);\n * ```\n *\n * Each rule is called as independent static function with fixed signature:\n *\n * ```javascript\n * function my_token_render(tokens, idx, options, env, renderer) {\n * // ...\n * return renderedHTML;\n * }\n * ```\n *\n * See [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.js)\n * for more details and examples.\n **/\n this.rules = assign({}, default_rules)\n}\n\n/**\n * Renderer.renderAttrs(token) -> String\n *\n * Render token attributes to string.\n **/\nRenderer.prototype.renderAttrs = function renderAttrs (token) {\n let i, l, result\n\n if (!token.attrs) { return '' }\n\n result = ''\n\n for (i = 0, l = token.attrs.length; i < l; i++) {\n result += ' ' + escapeHtml(token.attrs[i][0]) + '=\"' + escapeHtml(token.attrs[i][1]) + '\"'\n }\n\n return result\n}\n\n/**\n * Renderer.renderToken(tokens, idx, options) -> String\n * - tokens (Array): list of tokens\n * - idx (Numbed): token index to render\n * - options (Object): params of parser instance\n *\n * Default token renderer. Can be overriden by custom function\n * in [[Renderer#rules]].\n **/\nRenderer.prototype.renderToken = function renderToken (tokens, idx, options) {\n const token = tokens[idx]\n let result = ''\n\n // Tight list paragraphs\n if (token.hidden) {\n return ''\n }\n\n // Insert a newline between hidden paragraph and subsequent opening\n // block-level tag.\n //\n // For example, here we should insert a newline before blockquote:\n // - a\n // >\n //\n if (token.block && token.nesting !== -1 && idx && tokens[idx - 1].hidden) {\n result += '\\n'\n }\n\n // Add token name, e.g. ``.\n //\n needLf = false\n }\n }\n }\n }\n\n result += needLf ? '>\\n' : '>'\n\n return result\n}\n\n/**\n * Renderer.renderInline(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to render\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * The same as [[Renderer.render]], but for single token of `inline` type.\n **/\nRenderer.prototype.renderInline = function (tokens, options, env) {\n let result = ''\n const rules = this.rules\n\n for (let i = 0, len = tokens.length; i < len; i++) {\n const type = tokens[i].type\n\n if (typeof rules[type] !== 'undefined') {\n result += rules[type](tokens, i, options, env, this)\n } else {\n result += this.renderToken(tokens, i, options)\n }\n }\n\n return result\n}\n\n/** internal\n * Renderer.renderInlineAsText(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to render\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * Special kludge for image `alt` attributes to conform CommonMark spec.\n * Don't try to use it! Spec requires to show `alt` content with stripped markup,\n * instead of simple escaping.\n **/\nRenderer.prototype.renderInlineAsText = function (tokens, options, env) {\n let result = ''\n\n for (let i = 0, len = tokens.length; i < len; i++) {\n switch (tokens[i].type) {\n case 'text':\n result += tokens[i].content\n break\n case 'image':\n result += this.renderInlineAsText(tokens[i].children, options, env)\n break\n case 'html_inline':\n case 'html_block':\n result += tokens[i].content\n break\n case 'softbreak':\n case 'hardbreak':\n result += '\\n'\n break\n default:\n // all other tokens are skipped\n }\n }\n\n return result\n}\n\n/**\n * Renderer.render(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to render\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * Takes token stream and generates HTML. Probably, you will never need to call\n * this method directly.\n **/\nRenderer.prototype.render = function (tokens, options, env) {\n let result = ''\n const rules = this.rules\n\n for (let i = 0, len = tokens.length; i < len; i++) {\n const type = tokens[i].type\n\n if (type === 'inline') {\n result += this.renderInline(tokens[i].children, options, env)\n } else if (typeof rules[type] !== 'undefined') {\n result += rules[type](tokens, i, options, env, this)\n } else {\n result += this.renderToken(tokens, i, options, env)\n }\n }\n\n return result\n}\n\nexport default Renderer\n","/**\n * class Ruler\n *\n * Helper class, used by [[MarkdownIt#core]], [[MarkdownIt#block]] and\n * [[MarkdownIt#inline]] to manage sequences of functions (rules):\n *\n * - keep rules in defined order\n * - assign the name to each rule\n * - enable/disable rules\n * - add/replace rules\n * - allow assign rules to additional named chains (in the same)\n * - cacheing lists of active rules\n *\n * You will not need use this class directly until write plugins. For simple\n * rules control use [[MarkdownIt.disable]], [[MarkdownIt.enable]] and\n * [[MarkdownIt.use]].\n **/\n\n/**\n * new Ruler()\n **/\nfunction Ruler () {\n // List of added rules. Each element is:\n //\n // {\n // name: XXX,\n // enabled: Boolean,\n // fn: Function(),\n // alt: [ name2, name3 ]\n // }\n //\n this.__rules__ = []\n\n // Cached rule chains.\n //\n // First level - chain name, '' for default.\n // Second level - diginal anchor for fast filtering by charcodes.\n //\n this.__cache__ = null\n}\n\n// Helper methods, should not be used directly\n\n// Find rule index by name\n//\nRuler.prototype.__find__ = function (name) {\n for (let i = 0; i < this.__rules__.length; i++) {\n if (this.__rules__[i].name === name) {\n return i\n }\n }\n return -1\n}\n\n// Build rules lookup cache\n//\nRuler.prototype.__compile__ = function () {\n const self = this\n const chains = ['']\n\n // collect unique names\n self.__rules__.forEach(function (rule) {\n if (!rule.enabled) { return }\n\n rule.alt.forEach(function (altName) {\n if (chains.indexOf(altName) < 0) {\n chains.push(altName)\n }\n })\n })\n\n self.__cache__ = {}\n\n chains.forEach(function (chain) {\n self.__cache__[chain] = []\n self.__rules__.forEach(function (rule) {\n if (!rule.enabled) { return }\n\n if (chain && rule.alt.indexOf(chain) < 0) { return }\n\n self.__cache__[chain].push(rule.fn)\n })\n })\n}\n\n/**\n * Ruler.at(name, fn [, options])\n * - name (String): rule name to replace.\n * - fn (Function): new rule function.\n * - options (Object): new rule options (not mandatory).\n *\n * Replace rule by name with new function & options. Throws error if name not\n * found.\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * Replace existing typographer replacement rule with new one:\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.core.ruler.at('replacements', function replace(state) {\n * //...\n * });\n * ```\n **/\nRuler.prototype.at = function (name, fn, options) {\n const index = this.__find__(name)\n const opt = options || {}\n\n if (index === -1) { throw new Error('Parser rule not found: ' + name) }\n\n this.__rules__[index].fn = fn\n this.__rules__[index].alt = opt.alt || []\n this.__cache__ = null\n}\n\n/**\n * Ruler.before(beforeName, ruleName, fn [, options])\n * - beforeName (String): new rule will be added before this one.\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Add new rule to chain before one with given name. See also\n * [[Ruler.after]], [[Ruler.push]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.block.ruler.before('paragraph', 'my_rule', function replace(state) {\n * //...\n * });\n * ```\n **/\nRuler.prototype.before = function (beforeName, ruleName, fn, options) {\n const index = this.__find__(beforeName)\n const opt = options || {}\n\n if (index === -1) { throw new Error('Parser rule not found: ' + beforeName) }\n\n this.__rules__.splice(index, 0, {\n name: ruleName,\n enabled: true,\n fn,\n alt: opt.alt || []\n })\n\n this.__cache__ = null\n}\n\n/**\n * Ruler.after(afterName, ruleName, fn [, options])\n * - afterName (String): new rule will be added after this one.\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Add new rule to chain after one with given name. See also\n * [[Ruler.before]], [[Ruler.push]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.inline.ruler.after('text', 'my_rule', function replace(state) {\n * //...\n * });\n * ```\n **/\nRuler.prototype.after = function (afterName, ruleName, fn, options) {\n const index = this.__find__(afterName)\n const opt = options || {}\n\n if (index === -1) { throw new Error('Parser rule not found: ' + afterName) }\n\n this.__rules__.splice(index + 1, 0, {\n name: ruleName,\n enabled: true,\n fn,\n alt: opt.alt || []\n })\n\n this.__cache__ = null\n}\n\n/**\n * Ruler.push(ruleName, fn [, options])\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Push new rule to the end of chain. See also\n * [[Ruler.before]], [[Ruler.after]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.core.ruler.push('my_rule', function replace(state) {\n * //...\n * });\n * ```\n **/\nRuler.prototype.push = function (ruleName, fn, options) {\n const opt = options || {}\n\n this.__rules__.push({\n name: ruleName,\n enabled: true,\n fn,\n alt: opt.alt || []\n })\n\n this.__cache__ = null\n}\n\n/**\n * Ruler.enable(list [, ignoreInvalid]) -> Array\n * - list (String|Array): list of rule names to enable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable rules with given names. If any rule name not found - throw Error.\n * Errors can be disabled by second param.\n *\n * Returns list of found rule names (if no exception happened).\n *\n * See also [[Ruler.disable]], [[Ruler.enableOnly]].\n **/\nRuler.prototype.enable = function (list, ignoreInvalid) {\n if (!Array.isArray(list)) { list = [list] }\n\n const result = []\n\n // Search by name and enable\n list.forEach(function (name) {\n const idx = this.__find__(name)\n\n if (idx < 0) {\n if (ignoreInvalid) { return }\n throw new Error('Rules manager: invalid rule name ' + name)\n }\n this.__rules__[idx].enabled = true\n result.push(name)\n }, this)\n\n this.__cache__ = null\n return result\n}\n\n/**\n * Ruler.enableOnly(list [, ignoreInvalid])\n * - list (String|Array): list of rule names to enable (whitelist).\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable rules with given names, and disable everything else. If any rule name\n * not found - throw Error. Errors can be disabled by second param.\n *\n * See also [[Ruler.disable]], [[Ruler.enable]].\n **/\nRuler.prototype.enableOnly = function (list, ignoreInvalid) {\n if (!Array.isArray(list)) { list = [list] }\n\n this.__rules__.forEach(function (rule) { rule.enabled = false })\n\n this.enable(list, ignoreInvalid)\n}\n\n/**\n * Ruler.disable(list [, ignoreInvalid]) -> Array\n * - list (String|Array): list of rule names to disable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Disable rules with given names. If any rule name not found - throw Error.\n * Errors can be disabled by second param.\n *\n * Returns list of found rule names (if no exception happened).\n *\n * See also [[Ruler.enable]], [[Ruler.enableOnly]].\n **/\nRuler.prototype.disable = function (list, ignoreInvalid) {\n if (!Array.isArray(list)) { list = [list] }\n\n const result = []\n\n // Search by name and disable\n list.forEach(function (name) {\n const idx = this.__find__(name)\n\n if (idx < 0) {\n if (ignoreInvalid) { return }\n throw new Error('Rules manager: invalid rule name ' + name)\n }\n this.__rules__[idx].enabled = false\n result.push(name)\n }, this)\n\n this.__cache__ = null\n return result\n}\n\n/**\n * Ruler.getRules(chainName) -> Array\n *\n * Return array of active functions (rules) for given chain name. It analyzes\n * rules configuration, compiles caches if not exists and returns result.\n *\n * Default chain name is `''` (empty string). It can't be skipped. That's\n * done intentionally, to keep signature monomorphic for high speed.\n **/\nRuler.prototype.getRules = function (chainName) {\n if (this.__cache__ === null) {\n this.__compile__()\n }\n\n // Chain can be empty, if rules disabled. But we still have to return Array.\n return this.__cache__[chainName] || []\n}\n\nexport default Ruler\n","// Token class\n\n/**\n * class Token\n **/\n\n/**\n * new Token(type, tag, nesting)\n *\n * Create new token and fill passed properties.\n **/\nfunction Token (type, tag, nesting) {\n /**\n * Token#type -> String\n *\n * Type of the token (string, e.g. \"paragraph_open\")\n **/\n this.type = type\n\n /**\n * Token#tag -> String\n *\n * html tag name, e.g. \"p\"\n **/\n this.tag = tag\n\n /**\n * Token#attrs -> Array\n *\n * Html attributes. Format: `[ [ name1, value1 ], [ name2, value2 ] ]`\n **/\n this.attrs = null\n\n /**\n * Token#map -> Array\n *\n * Source map info. Format: `[ line_begin, line_end ]`\n **/\n this.map = null\n\n /**\n * Token#nesting -> Number\n *\n * Level change (number in {-1, 0, 1} set), where:\n *\n * - `1` means the tag is opening\n * - `0` means the tag is self-closing\n * - `-1` means the tag is closing\n **/\n this.nesting = nesting\n\n /**\n * Token#level -> Number\n *\n * nesting level, the same as `state.level`\n **/\n this.level = 0\n\n /**\n * Token#children -> Array\n *\n * An array of child nodes (inline and img tokens)\n **/\n this.children = null\n\n /**\n * Token#content -> String\n *\n * In a case of self-closing tag (code, html, fence, etc.),\n * it has contents of this tag.\n **/\n this.content = ''\n\n /**\n * Token#markup -> String\n *\n * '*' or '_' for emphasis, fence string for fence, etc.\n **/\n this.markup = ''\n\n /**\n * Token#info -> String\n *\n * Additional information:\n *\n * - Info string for \"fence\" tokens\n * - The value \"auto\" for autolink \"link_open\" and \"link_close\" tokens\n * - The string value of the item marker for ordered-list \"list_item_open\" tokens\n **/\n this.info = ''\n\n /**\n * Token#meta -> Object\n *\n * A place for plugins to store an arbitrary data\n **/\n this.meta = null\n\n /**\n * Token#block -> Boolean\n *\n * True for block-level tokens, false for inline tokens.\n * Used in renderer to calculate line breaks\n **/\n this.block = false\n\n /**\n * Token#hidden -> Boolean\n *\n * If it's true, ignore this element when rendering. Used for tight lists\n * to hide paragraphs.\n **/\n this.hidden = false\n}\n\n/**\n * Token.attrIndex(name) -> Number\n *\n * Search attribute index by name.\n **/\nToken.prototype.attrIndex = function attrIndex (name) {\n if (!this.attrs) { return -1 }\n\n const attrs = this.attrs\n\n for (let i = 0, len = attrs.length; i < len; i++) {\n if (attrs[i][0] === name) { return i }\n }\n return -1\n}\n\n/**\n * Token.attrPush(attrData)\n *\n * Add `[ name, value ]` attribute to list. Init attrs if necessary\n **/\nToken.prototype.attrPush = function attrPush (attrData) {\n if (this.attrs) {\n this.attrs.push(attrData)\n } else {\n this.attrs = [attrData]\n }\n}\n\n/**\n * Token.attrSet(name, value)\n *\n * Set `name` attribute to `value`. Override old value if exists.\n **/\nToken.prototype.attrSet = function attrSet (name, value) {\n const idx = this.attrIndex(name)\n const attrData = [name, value]\n\n if (idx < 0) {\n this.attrPush(attrData)\n } else {\n this.attrs[idx] = attrData\n }\n}\n\n/**\n * Token.attrGet(name)\n *\n * Get the value of attribute `name`, or null if it does not exist.\n **/\nToken.prototype.attrGet = function attrGet (name) {\n const idx = this.attrIndex(name)\n let value = null\n if (idx >= 0) {\n value = this.attrs[idx][1]\n }\n return value\n}\n\n/**\n * Token.attrJoin(name, value)\n *\n * Join value to existing attribute via space. Or create new attribute if not\n * exists. Useful to operate with token classes.\n **/\nToken.prototype.attrJoin = function attrJoin (name, value) {\n const idx = this.attrIndex(name)\n\n if (idx < 0) {\n this.attrPush([name, value])\n } else {\n this.attrs[idx][1] = this.attrs[idx][1] + ' ' + value\n }\n}\n\nexport default Token\n","// Core state object\n//\n\nimport Token from '../token.mjs'\n\nfunction StateCore (src, md, env) {\n this.src = src\n this.env = env\n this.tokens = []\n this.inlineMode = false\n this.md = md // link to parser instance\n}\n\n// re-export Token class to use in core rules\nStateCore.prototype.Token = Token\n\nexport default StateCore\n","// Normalize input string\n\n// https://spec.commonmark.org/0.29/#line-ending\nconst NEWLINES_RE = /\\r\\n?|\\n/g\nconst NULL_RE = /\\0/g\n\nexport default function normalize (state) {\n let str\n\n // Normalize newlines\n str = state.src.replace(NEWLINES_RE, '\\n')\n\n // Replace NULL characters\n str = str.replace(NULL_RE, '\\uFFFD')\n\n state.src = str\n}\n","// Replace link-like texts with link nodes.\n//\n// Currently restricted by `md.validateLink()` to http/https/ftp\n//\n\nimport { arrayReplaceAt } from '../common/utils.mjs'\n\nfunction isLinkOpen (str) {\n return /^\\s]/i.test(str)\n}\nfunction isLinkClose (str) {\n return /^<\\/a\\s*>/i.test(str)\n}\n\nexport default function linkify (state) {\n const blockTokens = state.tokens\n\n if (!state.md.options.linkify) { return }\n\n for (let j = 0, l = blockTokens.length; j < l; j++) {\n if (blockTokens[j].type !== 'inline' ||\n !state.md.linkify.pretest(blockTokens[j].content)) {\n continue\n }\n\n let tokens = blockTokens[j].children\n\n let htmlLinkLevel = 0\n\n // We scan from the end, to keep position when new tags added.\n // Use reversed logic in links start/end match\n for (let i = tokens.length - 1; i >= 0; i--) {\n const currentToken = tokens[i]\n\n // Skip content of markdown links\n if (currentToken.type === 'link_close') {\n i--\n while (tokens[i].level !== currentToken.level && tokens[i].type !== 'link_open') {\n i--\n }\n continue\n }\n\n // Skip content of html tag links\n if (currentToken.type === 'html_inline') {\n if (isLinkOpen(currentToken.content) && htmlLinkLevel > 0) {\n htmlLinkLevel--\n }\n if (isLinkClose(currentToken.content)) {\n htmlLinkLevel++\n }\n }\n if (htmlLinkLevel > 0) { continue }\n\n if (currentToken.type === 'text' && state.md.linkify.test(currentToken.content)) {\n const text = currentToken.content\n let links = state.md.linkify.match(text)\n\n // Now split string to nodes\n const nodes = []\n let level = currentToken.level\n let lastPos = 0\n\n // forbid escape sequence at the start of the string,\n // this avoids http\\://example.com/ from being linkified as\n // http://example.com/\n if (links.length > 0 &&\n links[0].index === 0 &&\n i > 0 &&\n tokens[i - 1].type === 'text_special') {\n links = links.slice(1)\n }\n\n for (let ln = 0; ln < links.length; ln++) {\n const url = links[ln].url\n const fullUrl = state.md.normalizeLink(url)\n if (!state.md.validateLink(fullUrl)) { continue }\n\n let urlText = links[ln].text\n\n // Linkifier might send raw hostnames like \"example.com\", where url\n // starts with domain name. So we prepend http:// in those cases,\n // and remove it afterwards.\n //\n if (!links[ln].schema) {\n urlText = state.md.normalizeLinkText('http://' + urlText).replace(/^http:\\/\\//, '')\n } else if (links[ln].schema === 'mailto:' && !/^mailto:/i.test(urlText)) {\n urlText = state.md.normalizeLinkText('mailto:' + urlText).replace(/^mailto:/, '')\n } else {\n urlText = state.md.normalizeLinkText(urlText)\n }\n\n const pos = links[ln].index\n\n if (pos > lastPos) {\n const token = new state.Token('text', '', 0)\n token.content = text.slice(lastPos, pos)\n token.level = level\n nodes.push(token)\n }\n\n const token_o = new state.Token('link_open', 'a', 1)\n token_o.attrs = [['href', fullUrl]]\n token_o.level = level++\n token_o.markup = 'linkify'\n token_o.info = 'auto'\n nodes.push(token_o)\n\n const token_t = new state.Token('text', '', 0)\n token_t.content = urlText\n token_t.level = level\n nodes.push(token_t)\n\n const token_c = new state.Token('link_close', 'a', -1)\n token_c.level = --level\n token_c.markup = 'linkify'\n token_c.info = 'auto'\n nodes.push(token_c)\n\n lastPos = links[ln].lastIndex\n }\n if (lastPos < text.length) {\n const token = new state.Token('text', '', 0)\n token.content = text.slice(lastPos)\n token.level = level\n nodes.push(token)\n }\n\n // replace current node\n blockTokens[j].children = tokens = arrayReplaceAt(tokens, i, nodes)\n }\n }\n }\n}\n","// Simple typographic replacements\n//\n// (c) (C) → ©\n// (tm) (TM) → ™\n// (r) (R) → ®\n// +- → ±\n// ... → … (also ?.... → ?.., !.... → !..)\n// ???????? → ???, !!!!! → !!!, `,,` → `,`\n// -- → –, --- → —\n//\n\n// TODO:\n// - fractionals 1/2, 1/4, 3/4 -> ½, ¼, ¾\n// - multiplications 2 x 4 -> 2 × 4\n\nconst RARE_RE = /\\+-|\\.\\.|\\?\\?\\?\\?|!!!!|,,|--/\n\n// Workaround for phantomjs - need regex without /g flag,\n// or root check will fail every second time\nconst SCOPED_ABBR_TEST_RE = /\\((c|tm|r)\\)/i\n\nconst SCOPED_ABBR_RE = /\\((c|tm|r)\\)/ig\nconst SCOPED_ABBR = {\n c: '©',\n r: '®',\n tm: '™'\n}\n\nfunction replaceFn (match, name) {\n return SCOPED_ABBR[name.toLowerCase()]\n}\n\nfunction replace_scoped (inlineTokens) {\n let inside_autolink = 0\n\n for (let i = inlineTokens.length - 1; i >= 0; i--) {\n const token = inlineTokens[i]\n\n if (token.type === 'text' && !inside_autolink) {\n token.content = token.content.replace(SCOPED_ABBR_RE, replaceFn)\n }\n\n if (token.type === 'link_open' && token.info === 'auto') {\n inside_autolink--\n }\n\n if (token.type === 'link_close' && token.info === 'auto') {\n inside_autolink++\n }\n }\n}\n\nfunction replace_rare (inlineTokens) {\n let inside_autolink = 0\n\n for (let i = inlineTokens.length - 1; i >= 0; i--) {\n const token = inlineTokens[i]\n\n if (token.type === 'text' && !inside_autolink) {\n if (RARE_RE.test(token.content)) {\n token.content = token.content\n .replace(/\\+-/g, '±')\n // .., ..., ....... -> …\n // but ?..... & !..... -> ?.. & !..\n .replace(/\\.{2,}/g, '…').replace(/([?!])…/g, '$1..')\n .replace(/([?!]){4,}/g, '$1$1$1').replace(/,{2,}/g, ',')\n // em-dash\n .replace(/(^|[^-])---(?=[^-]|$)/mg, '$1\\u2014')\n // en-dash\n .replace(/(^|\\s)--(?=\\s|$)/mg, '$1\\u2013')\n .replace(/(^|[^-\\s])--(?=[^-\\s]|$)/mg, '$1\\u2013')\n }\n }\n\n if (token.type === 'link_open' && token.info === 'auto') {\n inside_autolink--\n }\n\n if (token.type === 'link_close' && token.info === 'auto') {\n inside_autolink++\n }\n }\n}\n\nexport default function replace (state) {\n let blkIdx\n\n if (!state.md.options.typographer) { return }\n\n for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n if (state.tokens[blkIdx].type !== 'inline') { continue }\n\n if (SCOPED_ABBR_TEST_RE.test(state.tokens[blkIdx].content)) {\n replace_scoped(state.tokens[blkIdx].children)\n }\n\n if (RARE_RE.test(state.tokens[blkIdx].content)) {\n replace_rare(state.tokens[blkIdx].children)\n }\n }\n}\n","// Convert straight quotation marks to typographic ones\n//\n\nimport { isWhiteSpace, isPunctChar, isMdAsciiPunct } from '../common/utils.mjs'\n\nconst QUOTE_TEST_RE = /['\"]/\nconst QUOTE_RE = /['\"]/g\nconst APOSTROPHE = '\\u2019' /* ’ */\n\nfunction replaceAt (str, index, ch) {\n return str.slice(0, index) + ch + str.slice(index + 1)\n}\n\nfunction process_inlines (tokens, state) {\n let j\n\n const stack = []\n\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i]\n\n const thisLevel = tokens[i].level\n\n for (j = stack.length - 1; j >= 0; j--) {\n if (stack[j].level <= thisLevel) { break }\n }\n stack.length = j + 1\n\n if (token.type !== 'text') { continue }\n\n let text = token.content\n let pos = 0\n let max = text.length\n\n /* eslint no-labels:0,block-scoped-var:0 */\n OUTER:\n while (pos < max) {\n QUOTE_RE.lastIndex = pos\n const t = QUOTE_RE.exec(text)\n if (!t) { break }\n\n let canOpen = true\n let canClose = true\n pos = t.index + 1\n const isSingle = (t[0] === \"'\")\n\n // Find previous character,\n // default to space if it's the beginning of the line\n //\n let lastChar = 0x20\n\n if (t.index - 1 >= 0) {\n lastChar = text.charCodeAt(t.index - 1)\n } else {\n for (j = i - 1; j >= 0; j--) {\n if (tokens[j].type === 'softbreak' || tokens[j].type === 'hardbreak') break // lastChar defaults to 0x20\n if (!tokens[j].content) continue // should skip all tokens except 'text', 'html_inline' or 'code_inline'\n\n lastChar = tokens[j].content.charCodeAt(tokens[j].content.length - 1)\n break\n }\n }\n\n // Find next character,\n // default to space if it's the end of the line\n //\n let nextChar = 0x20\n\n if (pos < max) {\n nextChar = text.charCodeAt(pos)\n } else {\n for (j = i + 1; j < tokens.length; j++) {\n if (tokens[j].type === 'softbreak' || tokens[j].type === 'hardbreak') break // nextChar defaults to 0x20\n if (!tokens[j].content) continue // should skip all tokens except 'text', 'html_inline' or 'code_inline'\n\n nextChar = tokens[j].content.charCodeAt(0)\n break\n }\n }\n\n const isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar))\n const isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar))\n\n const isLastWhiteSpace = isWhiteSpace(lastChar)\n const isNextWhiteSpace = isWhiteSpace(nextChar)\n\n if (isNextWhiteSpace) {\n canOpen = false\n } else if (isNextPunctChar) {\n if (!(isLastWhiteSpace || isLastPunctChar)) {\n canOpen = false\n }\n }\n\n if (isLastWhiteSpace) {\n canClose = false\n } else if (isLastPunctChar) {\n if (!(isNextWhiteSpace || isNextPunctChar)) {\n canClose = false\n }\n }\n\n if (nextChar === 0x22 /* \" */ && t[0] === '\"') {\n if (lastChar >= 0x30 /* 0 */ && lastChar <= 0x39 /* 9 */) {\n // special case: 1\"\" - count first quote as an inch\n canClose = canOpen = false\n }\n }\n\n if (canOpen && canClose) {\n // Replace quotes in the middle of punctuation sequence, but not\n // in the middle of the words, i.e.:\n //\n // 1. foo \" bar \" baz - not replaced\n // 2. foo-\"-bar-\"-baz - replaced\n // 3. foo\"bar\"baz - not replaced\n //\n canOpen = isLastPunctChar\n canClose = isNextPunctChar\n }\n\n if (!canOpen && !canClose) {\n // middle of word\n if (isSingle) {\n token.content = replaceAt(token.content, t.index, APOSTROPHE)\n }\n continue\n }\n\n if (canClose) {\n // this could be a closing quote, rewind the stack to get a match\n for (j = stack.length - 1; j >= 0; j--) {\n let item = stack[j]\n if (stack[j].level < thisLevel) { break }\n if (item.single === isSingle && stack[j].level === thisLevel) {\n item = stack[j]\n\n let openQuote\n let closeQuote\n if (isSingle) {\n openQuote = state.md.options.quotes[2]\n closeQuote = state.md.options.quotes[3]\n } else {\n openQuote = state.md.options.quotes[0]\n closeQuote = state.md.options.quotes[1]\n }\n\n // replace token.content *before* tokens[item.token].content,\n // because, if they are pointing at the same token, replaceAt\n // could mess up indices when quote length != 1\n token.content = replaceAt(token.content, t.index, closeQuote)\n tokens[item.token].content = replaceAt(\n tokens[item.token].content, item.pos, openQuote)\n\n pos += closeQuote.length - 1\n if (item.token === i) { pos += openQuote.length - 1 }\n\n text = token.content\n max = text.length\n\n stack.length = j\n continue OUTER\n }\n }\n }\n\n if (canOpen) {\n stack.push({\n token: i,\n pos: t.index,\n single: isSingle,\n level: thisLevel\n })\n } else if (canClose && isSingle) {\n token.content = replaceAt(token.content, t.index, APOSTROPHE)\n }\n }\n }\n}\n\nexport default function smartquotes (state) {\n /* eslint max-depth:0 */\n if (!state.md.options.typographer) { return }\n\n for (let blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n if (state.tokens[blkIdx].type !== 'inline' ||\n !QUOTE_TEST_RE.test(state.tokens[blkIdx].content)) {\n continue\n }\n\n process_inlines(state.tokens[blkIdx].children, state)\n }\n}\n","/** internal\n * class Core\n *\n * Top-level rules executor. Glues block/inline parsers and does intermediate\n * transformations.\n **/\n\nimport Ruler from './ruler.mjs'\nimport StateCore from './rules_core/state_core.mjs'\n\nimport r_normalize from './rules_core/normalize.mjs'\nimport r_block from './rules_core/block.mjs'\nimport r_inline from './rules_core/inline.mjs'\nimport r_linkify from './rules_core/linkify.mjs'\nimport r_replacements from './rules_core/replacements.mjs'\nimport r_smartquotes from './rules_core/smartquotes.mjs'\nimport r_text_join from './rules_core/text_join.mjs'\n\nconst _rules = [\n ['normalize', r_normalize],\n ['block', r_block],\n ['inline', r_inline],\n ['linkify', r_linkify],\n ['replacements', r_replacements],\n ['smartquotes', r_smartquotes],\n // `text_join` finds `text_special` tokens (for escape sequences)\n // and joins them with the rest of the text\n ['text_join', r_text_join]\n]\n\n/**\n * new Core()\n **/\nfunction Core () {\n /**\n * Core#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of core rules.\n **/\n this.ruler = new Ruler()\n\n for (let i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1])\n }\n}\n\n/**\n * Core.process(state)\n *\n * Executes core chain rules.\n **/\nCore.prototype.process = function (state) {\n const rules = this.ruler.getRules('')\n\n for (let i = 0, l = rules.length; i < l; i++) {\n rules[i](state)\n }\n}\n\nCore.prototype.State = StateCore\n\nexport default Core\n","export default function block (state) {\n let token\n\n if (state.inlineMode) {\n token = new state.Token('inline', '', 0)\n token.content = state.src\n token.map = [0, 1]\n token.children = []\n state.tokens.push(token)\n } else {\n state.md.block.parse(state.src, state.md, state.env, state.tokens)\n }\n}\n","export default function inline (state) {\n const tokens = state.tokens\n\n // Parse inlines\n for (let i = 0, l = tokens.length; i < l; i++) {\n const tok = tokens[i]\n if (tok.type === 'inline') {\n state.md.inline.parse(tok.content, state.md, state.env, tok.children)\n }\n }\n}\n","// Join raw text tokens with the rest of the text\n//\n// This is set as a separate rule to provide an opportunity for plugins\n// to run text replacements after text join, but before escape join.\n//\n// For example, `\\:)` shouldn't be replaced with an emoji.\n//\n\nexport default function text_join (state) {\n let curr, last\n const blockTokens = state.tokens\n const l = blockTokens.length\n\n for (let j = 0; j < l; j++) {\n if (blockTokens[j].type !== 'inline') continue\n\n const tokens = blockTokens[j].children\n const max = tokens.length\n\n for (curr = 0; curr < max; curr++) {\n if (tokens[curr].type === 'text_special') {\n tokens[curr].type = 'text'\n }\n }\n\n for (curr = last = 0; curr < max; curr++) {\n if (tokens[curr].type === 'text' &&\n curr + 1 < max &&\n tokens[curr + 1].type === 'text') {\n // collapse two adjacent text nodes\n tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content\n } else {\n if (curr !== last) { tokens[last] = tokens[curr] }\n\n last++\n }\n }\n\n if (curr !== last) {\n tokens.length = last\n }\n }\n}\n","// Parser state class\n\nimport Token from '../token.mjs'\nimport { isSpace } from '../common/utils.mjs'\n\nfunction StateBlock (src, md, env, tokens) {\n this.src = src\n\n // link to parser instance\n this.md = md\n\n this.env = env\n\n //\n // Internal state vartiables\n //\n\n this.tokens = tokens\n\n this.bMarks = [] // line begin offsets for fast jumps\n this.eMarks = [] // line end offsets for fast jumps\n this.tShift = [] // offsets of the first non-space characters (tabs not expanded)\n this.sCount = [] // indents for each line (tabs expanded)\n\n // An amount of virtual spaces (tabs expanded) between beginning\n // of each line (bMarks) and real beginning of that line.\n //\n // It exists only as a hack because blockquotes override bMarks\n // losing information in the process.\n //\n // It's used only when expanding tabs, you can think about it as\n // an initial tab length, e.g. bsCount=21 applied to string `\\t123`\n // means first tab should be expanded to 4-21%4 === 3 spaces.\n //\n this.bsCount = []\n\n // block parser variables\n\n // required block content indent (for example, if we are\n // inside a list, it would be positioned after list marker)\n this.blkIndent = 0\n this.line = 0 // line index in src\n this.lineMax = 0 // lines count\n this.tight = false // loose/tight mode for lists\n this.ddIndent = -1 // indent of the current dd block (-1 if there isn't any)\n this.listIndent = -1 // indent of the current list block (-1 if there isn't any)\n\n // can be 'blockquote', 'list', 'root', 'paragraph' or 'reference'\n // used in lists to determine if they interrupt a paragraph\n this.parentType = 'root'\n\n this.level = 0\n\n // Create caches\n // Generate markers.\n const s = this.src\n\n for (let start = 0, pos = 0, indent = 0, offset = 0, len = s.length, indent_found = false; pos < len; pos++) {\n const ch = s.charCodeAt(pos)\n\n if (!indent_found) {\n if (isSpace(ch)) {\n indent++\n\n if (ch === 0x09) {\n offset += 4 - offset % 4\n } else {\n offset++\n }\n continue\n } else {\n indent_found = true\n }\n }\n\n if (ch === 0x0A || pos === len - 1) {\n if (ch !== 0x0A) { pos++ }\n this.bMarks.push(start)\n this.eMarks.push(pos)\n this.tShift.push(indent)\n this.sCount.push(offset)\n this.bsCount.push(0)\n\n indent_found = false\n indent = 0\n offset = 0\n start = pos + 1\n }\n }\n\n // Push fake entry to simplify cache bounds checks\n this.bMarks.push(s.length)\n this.eMarks.push(s.length)\n this.tShift.push(0)\n this.sCount.push(0)\n this.bsCount.push(0)\n\n this.lineMax = this.bMarks.length - 1 // don't count last fake line\n}\n\n// Push new token to \"stream\".\n//\nStateBlock.prototype.push = function (type, tag, nesting) {\n const token = new Token(type, tag, nesting)\n token.block = true\n\n if (nesting < 0) this.level-- // closing tag\n token.level = this.level\n if (nesting > 0) this.level++ // opening tag\n\n this.tokens.push(token)\n return token\n}\n\nStateBlock.prototype.isEmpty = function isEmpty (line) {\n return this.bMarks[line] + this.tShift[line] >= this.eMarks[line]\n}\n\nStateBlock.prototype.skipEmptyLines = function skipEmptyLines (from) {\n for (let max = this.lineMax; from < max; from++) {\n if (this.bMarks[from] + this.tShift[from] < this.eMarks[from]) {\n break\n }\n }\n return from\n}\n\n// Skip spaces from given position.\nStateBlock.prototype.skipSpaces = function skipSpaces (pos) {\n for (let max = this.src.length; pos < max; pos++) {\n const ch = this.src.charCodeAt(pos)\n if (!isSpace(ch)) { break }\n }\n return pos\n}\n\n// Skip spaces from given position in reverse.\nStateBlock.prototype.skipSpacesBack = function skipSpacesBack (pos, min) {\n if (pos <= min) { return pos }\n\n while (pos > min) {\n if (!isSpace(this.src.charCodeAt(--pos))) { return pos + 1 }\n }\n return pos\n}\n\n// Skip char codes from given position\nStateBlock.prototype.skipChars = function skipChars (pos, code) {\n for (let max = this.src.length; pos < max; pos++) {\n if (this.src.charCodeAt(pos) !== code) { break }\n }\n return pos\n}\n\n// Skip char codes reverse from given position - 1\nStateBlock.prototype.skipCharsBack = function skipCharsBack (pos, code, min) {\n if (pos <= min) { return pos }\n\n while (pos > min) {\n if (code !== this.src.charCodeAt(--pos)) { return pos + 1 }\n }\n return pos\n}\n\n// cut lines range from source.\nStateBlock.prototype.getLines = function getLines (begin, end, indent, keepLastLF) {\n if (begin >= end) {\n return ''\n }\n\n const queue = new Array(end - begin)\n\n for (let i = 0, line = begin; line < end; line++, i++) {\n let lineIndent = 0\n const lineStart = this.bMarks[line]\n let first = lineStart\n let last\n\n if (line + 1 < end || keepLastLF) {\n // No need for bounds check because we have fake entry on tail.\n last = this.eMarks[line] + 1\n } else {\n last = this.eMarks[line]\n }\n\n while (first < last && lineIndent < indent) {\n const ch = this.src.charCodeAt(first)\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n lineIndent += 4 - (lineIndent + this.bsCount[line]) % 4\n } else {\n lineIndent++\n }\n } else if (first - lineStart < this.tShift[line]) {\n // patched tShift masked characters to look like spaces (blockquotes, list markers)\n lineIndent++\n } else {\n break\n }\n\n first++\n }\n\n if (lineIndent > indent) {\n // partially expanding tabs in code blocks, e.g '\\t\\tfoobar'\n // with indent=2 becomes ' \\tfoobar'\n queue[i] = new Array(lineIndent - indent + 1).join(' ') + this.src.slice(first, last)\n } else {\n queue[i] = this.src.slice(first, last)\n }\n }\n\n return queue.join('')\n}\n\n// re-export Token class to use in block rules\nStateBlock.prototype.Token = Token\n\nexport default StateBlock\n","// GFM table, https://github.github.com/gfm/#tables-extension-\n\nimport { isSpace } from '../common/utils.mjs'\n\nfunction getLine (state, line) {\n const pos = state.bMarks[line] + state.tShift[line]\n const max = state.eMarks[line]\n\n return state.src.slice(pos, max)\n}\n\nfunction escapedSplit (str) {\n const result = []\n const max = str.length\n\n let pos = 0\n let ch = str.charCodeAt(pos)\n let isEscaped = false\n let lastPos = 0\n let current = ''\n\n while (pos < max) {\n if (ch === 0x7c/* | */) {\n if (!isEscaped) {\n // pipe separating cells, '|'\n result.push(current + str.substring(lastPos, pos))\n current = ''\n lastPos = pos + 1\n } else {\n // escaped pipe, '\\|'\n current += str.substring(lastPos, pos - 1)\n lastPos = pos\n }\n }\n\n isEscaped = (ch === 0x5c/* \\ */)\n pos++\n\n ch = str.charCodeAt(pos)\n }\n\n result.push(current + str.substring(lastPos))\n\n return result\n}\n\nexport default function table (state, startLine, endLine, silent) {\n // should have at least two lines\n if (startLine + 2 > endLine) { return false }\n\n let nextLine = startLine + 1\n\n if (state.sCount[nextLine] < state.blkIndent) { return false }\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[nextLine] - state.blkIndent >= 4) { return false }\n\n // first character of the second line should be '|', '-', ':',\n // and no other characters are allowed but spaces;\n // basically, this is the equivalent of /^[-:|][-:|\\s]*$/ regexp\n\n let pos = state.bMarks[nextLine] + state.tShift[nextLine]\n if (pos >= state.eMarks[nextLine]) { return false }\n\n const firstCh = state.src.charCodeAt(pos++)\n if (firstCh !== 0x7C/* | */ && firstCh !== 0x2D/* - */ && firstCh !== 0x3A/* : */) { return false }\n\n if (pos >= state.eMarks[nextLine]) { return false }\n\n const secondCh = state.src.charCodeAt(pos++)\n if (secondCh !== 0x7C/* | */ && secondCh !== 0x2D/* - */ && secondCh !== 0x3A/* : */ && !isSpace(secondCh)) {\n return false\n }\n\n // if first character is '-', then second character must not be a space\n // (due to parsing ambiguity with list)\n if (firstCh === 0x2D/* - */ && isSpace(secondCh)) { return false }\n\n while (pos < state.eMarks[nextLine]) {\n const ch = state.src.charCodeAt(pos)\n\n if (ch !== 0x7C/* | */ && ch !== 0x2D/* - */ && ch !== 0x3A/* : */ && !isSpace(ch)) { return false }\n\n pos++\n }\n\n let lineText = getLine(state, startLine + 1)\n let columns = lineText.split('|')\n const aligns = []\n for (let i = 0; i < columns.length; i++) {\n const t = columns[i].trim()\n if (!t) {\n // allow empty columns before and after table, but not in between columns;\n // e.g. allow ` |---| `, disallow ` ---||--- `\n if (i === 0 || i === columns.length - 1) {\n continue\n } else {\n return false\n }\n }\n\n if (!/^:?-+:?$/.test(t)) { return false }\n if (t.charCodeAt(t.length - 1) === 0x3A/* : */) {\n aligns.push(t.charCodeAt(0) === 0x3A/* : */ ? 'center' : 'right')\n } else if (t.charCodeAt(0) === 0x3A/* : */) {\n aligns.push('left')\n } else {\n aligns.push('')\n }\n }\n\n lineText = getLine(state, startLine).trim()\n if (lineText.indexOf('|') === -1) { return false }\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n columns = escapedSplit(lineText)\n if (columns.length && columns[0] === '') columns.shift()\n if (columns.length && columns[columns.length - 1] === '') columns.pop()\n\n // header row will define an amount of columns in the entire table,\n // and align row should be exactly the same (the rest of the rows can differ)\n const columnCount = columns.length\n if (columnCount === 0 || columnCount !== aligns.length) { return false }\n\n if (silent) { return true }\n\n const oldParentType = state.parentType\n state.parentType = 'table'\n\n // use 'blockquote' lists for termination because it's\n // the most similar to tables\n const terminatorRules = state.md.block.ruler.getRules('blockquote')\n\n const token_to = state.push('table_open', 'table', 1)\n const tableLines = [startLine, 0]\n token_to.map = tableLines\n\n const token_tho = state.push('thead_open', 'thead', 1)\n token_tho.map = [startLine, startLine + 1]\n\n const token_htro = state.push('tr_open', 'tr', 1)\n token_htro.map = [startLine, startLine + 1]\n\n for (let i = 0; i < columns.length; i++) {\n const token_ho = state.push('th_open', 'th', 1)\n if (aligns[i]) {\n token_ho.attrs = [['style', 'text-align:' + aligns[i]]]\n }\n\n const token_il = state.push('inline', '', 0)\n token_il.content = columns[i].trim()\n token_il.children = []\n\n state.push('th_close', 'th', -1)\n }\n\n state.push('tr_close', 'tr', -1)\n state.push('thead_close', 'thead', -1)\n\n let tbodyLines\n\n for (nextLine = startLine + 2; nextLine < endLine; nextLine++) {\n if (state.sCount[nextLine] < state.blkIndent) { break }\n\n let terminate = false\n for (let i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true\n break\n }\n }\n\n if (terminate) { break }\n lineText = getLine(state, nextLine).trim()\n if (!lineText) { break }\n if (state.sCount[nextLine] - state.blkIndent >= 4) { break }\n columns = escapedSplit(lineText)\n if (columns.length && columns[0] === '') columns.shift()\n if (columns.length && columns[columns.length - 1] === '') columns.pop()\n\n if (nextLine === startLine + 2) {\n const token_tbo = state.push('tbody_open', 'tbody', 1)\n token_tbo.map = tbodyLines = [startLine + 2, 0]\n }\n\n const token_tro = state.push('tr_open', 'tr', 1)\n token_tro.map = [nextLine, nextLine + 1]\n\n for (let i = 0; i < columnCount; i++) {\n const token_tdo = state.push('td_open', 'td', 1)\n if (aligns[i]) {\n token_tdo.attrs = [['style', 'text-align:' + aligns[i]]]\n }\n\n const token_il = state.push('inline', '', 0)\n token_il.content = columns[i] ? columns[i].trim() : ''\n token_il.children = []\n\n state.push('td_close', 'td', -1)\n }\n state.push('tr_close', 'tr', -1)\n }\n\n if (tbodyLines) {\n state.push('tbody_close', 'tbody', -1)\n tbodyLines[1] = nextLine\n }\n\n state.push('table_close', 'table', -1)\n tableLines[1] = nextLine\n\n state.parentType = oldParentType\n state.line = nextLine\n return true\n}\n","// Lists\n\nimport { isSpace } from '../common/utils.mjs'\n\n// Search `[-+*][\\n ]`, returns next pos after marker on success\n// or -1 on fail.\nfunction skipBulletListMarker (state, startLine) {\n const max = state.eMarks[startLine]\n let pos = state.bMarks[startLine] + state.tShift[startLine]\n\n const marker = state.src.charCodeAt(pos++)\n // Check bullet\n if (marker !== 0x2A/* * */ &&\n marker !== 0x2D/* - */ &&\n marker !== 0x2B/* + */) {\n return -1\n }\n\n if (pos < max) {\n const ch = state.src.charCodeAt(pos)\n\n if (!isSpace(ch)) {\n // \" -test \" - is not a list item\n return -1\n }\n }\n\n return pos\n}\n\n// Search `\\d+[.)][\\n ]`, returns next pos after marker on success\n// or -1 on fail.\nfunction skipOrderedListMarker (state, startLine) {\n const start = state.bMarks[startLine] + state.tShift[startLine]\n const max = state.eMarks[startLine]\n let pos = start\n\n // List marker should have at least 2 chars (digit + dot)\n if (pos + 1 >= max) { return -1 }\n\n let ch = state.src.charCodeAt(pos++)\n\n if (ch < 0x30/* 0 */ || ch > 0x39/* 9 */) { return -1 }\n\n for (;;) {\n // EOL -> fail\n if (pos >= max) { return -1 }\n\n ch = state.src.charCodeAt(pos++)\n\n if (ch >= 0x30/* 0 */ && ch <= 0x39/* 9 */) {\n // List marker should have no more than 9 digits\n // (prevents integer overflow in browsers)\n if (pos - start >= 10) { return -1 }\n\n continue\n }\n\n // found valid marker\n if (ch === 0x29/* ) */ || ch === 0x2e/* . */) {\n break\n }\n\n return -1\n }\n\n if (pos < max) {\n ch = state.src.charCodeAt(pos)\n\n if (!isSpace(ch)) {\n // \" 1.test \" - is not a list item\n return -1\n }\n }\n return pos\n}\n\nfunction markTightParagraphs (state, idx) {\n const level = state.level + 2\n\n for (let i = idx + 2, l = state.tokens.length - 2; i < l; i++) {\n if (state.tokens[i].level === level && state.tokens[i].type === 'paragraph_open') {\n state.tokens[i + 2].hidden = true\n state.tokens[i].hidden = true\n i += 2\n }\n }\n}\n\nexport default function list (state, startLine, endLine, silent) {\n let max, pos, start, token\n let nextLine = startLine\n let tight = true\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[nextLine] - state.blkIndent >= 4) { return false }\n\n // Special case:\n // - item 1\n // - item 2\n // - item 3\n // - item 4\n // - this one is a paragraph continuation\n if (state.listIndent >= 0 &&\n state.sCount[nextLine] - state.listIndent >= 4 &&\n state.sCount[nextLine] < state.blkIndent) {\n return false\n }\n\n let isTerminatingParagraph = false\n\n // limit conditions when list can interrupt\n // a paragraph (validation mode only)\n if (silent && state.parentType === 'paragraph') {\n // Next list item should still terminate previous list item;\n //\n // This code can fail if plugins use blkIndent as well as lists,\n // but I hope the spec gets fixed long before that happens.\n //\n if (state.sCount[nextLine] >= state.blkIndent) {\n isTerminatingParagraph = true\n }\n }\n\n // Detect list type and position after marker\n let isOrdered\n let markerValue\n let posAfterMarker\n if ((posAfterMarker = skipOrderedListMarker(state, nextLine)) >= 0) {\n isOrdered = true\n start = state.bMarks[nextLine] + state.tShift[nextLine]\n markerValue = Number(state.src.slice(start, posAfterMarker - 1))\n\n // If we're starting a new ordered list right after\n // a paragraph, it should start with 1.\n if (isTerminatingParagraph && markerValue !== 1) return false\n } else if ((posAfterMarker = skipBulletListMarker(state, nextLine)) >= 0) {\n isOrdered = false\n } else {\n return false\n }\n\n // If we're starting a new unordered list right after\n // a paragraph, first line should not be empty.\n if (isTerminatingParagraph) {\n if (state.skipSpaces(posAfterMarker) >= state.eMarks[nextLine]) return false\n }\n\n // For validation mode we can terminate immediately\n if (silent) { return true }\n\n // We should terminate list on style change. Remember first one to compare.\n const markerCharCode = state.src.charCodeAt(posAfterMarker - 1)\n\n // Start list\n const listTokIdx = state.tokens.length\n\n if (isOrdered) {\n token = state.push('ordered_list_open', 'ol', 1)\n if (markerValue !== 1) {\n token.attrs = [['start', markerValue]]\n }\n } else {\n token = state.push('bullet_list_open', 'ul', 1)\n }\n\n const listLines = [nextLine, 0]\n token.map = listLines\n token.markup = String.fromCharCode(markerCharCode)\n\n //\n // Iterate list items\n //\n\n let prevEmptyEnd = false\n const terminatorRules = state.md.block.ruler.getRules('list')\n\n const oldParentType = state.parentType\n state.parentType = 'list'\n\n while (nextLine < endLine) {\n pos = posAfterMarker\n max = state.eMarks[nextLine]\n\n const initial = state.sCount[nextLine] + posAfterMarker - (state.bMarks[nextLine] + state.tShift[nextLine])\n let offset = initial\n\n while (pos < max) {\n const ch = state.src.charCodeAt(pos)\n\n if (ch === 0x09) {\n offset += 4 - (offset + state.bsCount[nextLine]) % 4\n } else if (ch === 0x20) {\n offset++\n } else {\n break\n }\n\n pos++\n }\n\n const contentStart = pos\n let indentAfterMarker\n\n if (contentStart >= max) {\n // trimming space in \"- \\n 3\" case, indent is 1 here\n indentAfterMarker = 1\n } else {\n indentAfterMarker = offset - initial\n }\n\n // If we have more than 4 spaces, the indent is 1\n // (the rest is just indented code block)\n if (indentAfterMarker > 4) { indentAfterMarker = 1 }\n\n // \" - test\"\n // ^^^^^ - calculating total length of this thing\n const indent = initial + indentAfterMarker\n\n // Run subparser & write tokens\n token = state.push('list_item_open', 'li', 1)\n token.markup = String.fromCharCode(markerCharCode)\n const itemLines = [nextLine, 0]\n token.map = itemLines\n if (isOrdered) {\n token.info = state.src.slice(start, posAfterMarker - 1)\n }\n\n // change current state, then restore it after parser subcall\n const oldTight = state.tight\n const oldTShift = state.tShift[nextLine]\n const oldSCount = state.sCount[nextLine]\n\n // - example list\n // ^ listIndent position will be here\n // ^ blkIndent position will be here\n //\n const oldListIndent = state.listIndent\n state.listIndent = state.blkIndent\n state.blkIndent = indent\n\n state.tight = true\n state.tShift[nextLine] = contentStart - state.bMarks[nextLine]\n state.sCount[nextLine] = offset\n\n if (contentStart >= max && state.isEmpty(nextLine + 1)) {\n // workaround for this case\n // (list item is empty, list terminates before \"foo\"):\n // ~~~~~~~~\n // -\n //\n // foo\n // ~~~~~~~~\n state.line = Math.min(state.line + 2, endLine)\n } else {\n state.md.block.tokenize(state, nextLine, endLine, true)\n }\n\n // If any of list item is tight, mark list as tight\n if (!state.tight || prevEmptyEnd) {\n tight = false\n }\n // Item become loose if finish with empty line,\n // but we should filter last element, because it means list finish\n prevEmptyEnd = (state.line - nextLine) > 1 && state.isEmpty(state.line - 1)\n\n state.blkIndent = state.listIndent\n state.listIndent = oldListIndent\n state.tShift[nextLine] = oldTShift\n state.sCount[nextLine] = oldSCount\n state.tight = oldTight\n\n token = state.push('list_item_close', 'li', -1)\n token.markup = String.fromCharCode(markerCharCode)\n\n nextLine = state.line\n itemLines[1] = nextLine\n\n if (nextLine >= endLine) { break }\n\n //\n // Try to check if list is terminated or continued.\n //\n if (state.sCount[nextLine] < state.blkIndent) { break }\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[nextLine] - state.blkIndent >= 4) { break }\n\n // fail if terminating block found\n let terminate = false\n for (let i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true\n break\n }\n }\n if (terminate) { break }\n\n // fail if list has another type\n if (isOrdered) {\n posAfterMarker = skipOrderedListMarker(state, nextLine)\n if (posAfterMarker < 0) { break }\n start = state.bMarks[nextLine] + state.tShift[nextLine]\n } else {\n posAfterMarker = skipBulletListMarker(state, nextLine)\n if (posAfterMarker < 0) { break }\n }\n\n if (markerCharCode !== state.src.charCodeAt(posAfterMarker - 1)) { break }\n }\n\n // Finalize list\n if (isOrdered) {\n token = state.push('ordered_list_close', 'ol', -1)\n } else {\n token = state.push('bullet_list_close', 'ul', -1)\n }\n token.markup = String.fromCharCode(markerCharCode)\n\n listLines[1] = nextLine\n state.line = nextLine\n\n state.parentType = oldParentType\n\n // mark paragraphs tight if needed\n if (tight) {\n markTightParagraphs(state, listTokIdx)\n }\n\n return true\n}\n","// List of valid html blocks names, according to commonmark spec\n// https://spec.commonmark.org/0.30/#html-blocks\n\nexport default [\n 'address',\n 'article',\n 'aside',\n 'base',\n 'basefont',\n 'blockquote',\n 'body',\n 'caption',\n 'center',\n 'col',\n 'colgroup',\n 'dd',\n 'details',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'frame',\n 'frameset',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hr',\n 'html',\n 'iframe',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'menu',\n 'menuitem',\n 'nav',\n 'noframes',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'param',\n 'section',\n 'source',\n 'summary',\n 'table',\n 'tbody',\n 'td',\n 'tfoot',\n 'th',\n 'thead',\n 'title',\n 'tr',\n 'track',\n 'ul'\n]\n","// Regexps to match html elements\n\nconst attr_name = '[a-zA-Z_:][a-zA-Z0-9:._-]*'\n\nconst unquoted = '[^\"\\'=<>`\\\\x00-\\\\x20]+'\nconst single_quoted = \"'[^']*'\"\nconst double_quoted = '\"[^\"]*\"'\n\nconst attr_value = '(?:' + unquoted + '|' + single_quoted + '|' + double_quoted + ')'\n\nconst attribute = '(?:\\\\s+' + attr_name + '(?:\\\\s*=\\\\s*' + attr_value + ')?)'\n\nconst open_tag = '<[A-Za-z][A-Za-z0-9\\\\-]*' + attribute + '*\\\\s*\\\\/?>'\n\nconst close_tag = '<\\\\/[A-Za-z][A-Za-z0-9\\\\-]*\\\\s*>'\nconst comment = '|'\nconst processing = '<[?][\\\\s\\\\S]*?[?]>'\nconst declaration = ']*>'\nconst cdata = ''\n\nconst HTML_TAG_RE = new RegExp('^(?:' + open_tag + '|' + close_tag + '|' + comment +\n '|' + processing + '|' + declaration + '|' + cdata + ')')\nconst HTML_OPEN_CLOSE_TAG_RE = new RegExp('^(?:' + open_tag + '|' + close_tag + ')')\n\nexport { HTML_TAG_RE, HTML_OPEN_CLOSE_TAG_RE }\n","// HTML block\n\nimport block_names from '../common/html_blocks.mjs'\nimport { HTML_OPEN_CLOSE_TAG_RE } from '../common/html_re.mjs'\n\n// An array of opening and corresponding closing sequences for html tags,\n// last argument defines whether it can terminate a paragraph or not\n//\nconst HTML_SEQUENCES = [\n [/^<(script|pre|style|textarea)(?=(\\s|>|$))/i, /<\\/(script|pre|style|textarea)>/i, true],\n [/^/, true],\n [/^<\\?/, /\\?>/, true],\n [/^/, true],\n [/^/, true],\n [new RegExp('^|$))', 'i'), /^$/, true],\n [new RegExp(HTML_OPEN_CLOSE_TAG_RE.source + '\\\\s*$'), /^$/, false]\n]\n\nexport default function html_block (state, startLine, endLine, silent) {\n let pos = state.bMarks[startLine] + state.tShift[startLine]\n let max = state.eMarks[startLine]\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n\n if (!state.md.options.html) { return false }\n\n if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false }\n\n let lineText = state.src.slice(pos, max)\n\n let i = 0\n for (; i < HTML_SEQUENCES.length; i++) {\n if (HTML_SEQUENCES[i][0].test(lineText)) { break }\n }\n if (i === HTML_SEQUENCES.length) { return false }\n\n if (silent) {\n // true if this sequence can be a terminator, false otherwise\n return HTML_SEQUENCES[i][2]\n }\n\n let nextLine = startLine + 1\n\n // If we are here - we detected HTML block.\n // Let's roll down till block end.\n if (!HTML_SEQUENCES[i][1].test(lineText)) {\n for (; nextLine < endLine; nextLine++) {\n if (state.sCount[nextLine] < state.blkIndent) { break }\n\n pos = state.bMarks[nextLine] + state.tShift[nextLine]\n max = state.eMarks[nextLine]\n lineText = state.src.slice(pos, max)\n\n if (HTML_SEQUENCES[i][1].test(lineText)) {\n if (lineText.length !== 0) { nextLine++ }\n break\n }\n }\n }\n\n state.line = nextLine\n\n const token = state.push('html_block', '', 0)\n token.map = [startLine, nextLine]\n token.content = state.getLines(startLine, nextLine, state.blkIndent, true)\n\n return true\n}\n","/** internal\n * class ParserBlock\n *\n * Block-level tokenizer.\n **/\n\nimport Ruler from './ruler.mjs'\nimport StateBlock from './rules_block/state_block.mjs'\n\nimport r_table from './rules_block/table.mjs'\nimport r_code from './rules_block/code.mjs'\nimport r_fence from './rules_block/fence.mjs'\nimport r_blockquote from './rules_block/blockquote.mjs'\nimport r_hr from './rules_block/hr.mjs'\nimport r_list from './rules_block/list.mjs'\nimport r_reference from './rules_block/reference.mjs'\nimport r_html_block from './rules_block/html_block.mjs'\nimport r_heading from './rules_block/heading.mjs'\nimport r_lheading from './rules_block/lheading.mjs'\nimport r_paragraph from './rules_block/paragraph.mjs'\n\nconst _rules = [\n // First 2 params - rule name & source. Secondary array - list of rules,\n // which can be terminated by this one.\n ['table', r_table, ['paragraph', 'reference']],\n ['code', r_code],\n ['fence', r_fence, ['paragraph', 'reference', 'blockquote', 'list']],\n ['blockquote', r_blockquote, ['paragraph', 'reference', 'blockquote', 'list']],\n ['hr', r_hr, ['paragraph', 'reference', 'blockquote', 'list']],\n ['list', r_list, ['paragraph', 'reference', 'blockquote']],\n ['reference', r_reference],\n ['html_block', r_html_block, ['paragraph', 'reference', 'blockquote']],\n ['heading', r_heading, ['paragraph', 'reference', 'blockquote']],\n ['lheading', r_lheading],\n ['paragraph', r_paragraph]\n]\n\n/**\n * new ParserBlock()\n **/\nfunction ParserBlock () {\n /**\n * ParserBlock#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of block rules.\n **/\n this.ruler = new Ruler()\n\n for (let i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1], { alt: (_rules[i][2] || []).slice() })\n }\n}\n\n// Generate tokens for input range\n//\nParserBlock.prototype.tokenize = function (state, startLine, endLine) {\n const rules = this.ruler.getRules('')\n const len = rules.length\n const maxNesting = state.md.options.maxNesting\n let line = startLine\n let hasEmptyLines = false\n\n while (line < endLine) {\n state.line = line = state.skipEmptyLines(line)\n if (line >= endLine) { break }\n\n // Termination condition for nested calls.\n // Nested calls currently used for blockquotes & lists\n if (state.sCount[line] < state.blkIndent) { break }\n\n // If nesting level exceeded - skip tail to the end. That's not ordinary\n // situation and we should not care about content.\n if (state.level >= maxNesting) {\n state.line = endLine\n break\n }\n\n // Try all possible rules.\n // On success, rule should:\n //\n // - update `state.line`\n // - update `state.tokens`\n // - return true\n const prevLine = state.line\n let ok = false\n\n for (let i = 0; i < len; i++) {\n ok = rules[i](state, line, endLine, false)\n if (ok) {\n if (prevLine >= state.line) {\n throw new Error(\"block rule didn't increment state.line\")\n }\n break\n }\n }\n\n // this can only happen if user disables paragraph rule\n if (!ok) throw new Error('none of the block rules matched')\n\n // set state.tight if we had an empty line before current tag\n // i.e. latest empty line should not count\n state.tight = !hasEmptyLines\n\n // paragraph might \"eat\" one newline after it in nested lists\n if (state.isEmpty(state.line - 1)) {\n hasEmptyLines = true\n }\n\n line = state.line\n\n if (line < endLine && state.isEmpty(line)) {\n hasEmptyLines = true\n line++\n state.line = line\n }\n }\n}\n\n/**\n * ParserBlock.parse(str, md, env, outTokens)\n *\n * Process input string and push block tokens into `outTokens`\n **/\nParserBlock.prototype.parse = function (src, md, env, outTokens) {\n if (!src) { return }\n\n const state = new this.State(src, md, env, outTokens)\n\n this.tokenize(state, state.line, state.lineMax)\n}\n\nParserBlock.prototype.State = StateBlock\n\nexport default ParserBlock\n","// Code block (4 spaces padded)\n\nexport default function code (state, startLine, endLine/*, silent */) {\n if (state.sCount[startLine] - state.blkIndent < 4) { return false }\n\n let nextLine = startLine + 1\n let last = nextLine\n\n while (nextLine < endLine) {\n if (state.isEmpty(nextLine)) {\n nextLine++\n continue\n }\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n nextLine++\n last = nextLine\n continue\n }\n break\n }\n\n state.line = last\n\n const token = state.push('code_block', 'code', 0)\n token.content = state.getLines(startLine, last, 4 + state.blkIndent, false) + '\\n'\n token.map = [startLine, state.line]\n\n return true\n}\n","// fences (``` lang, ~~~ lang)\n\nexport default function fence (state, startLine, endLine, silent) {\n let pos = state.bMarks[startLine] + state.tShift[startLine]\n let max = state.eMarks[startLine]\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n\n if (pos + 3 > max) { return false }\n\n const marker = state.src.charCodeAt(pos)\n\n if (marker !== 0x7E/* ~ */ && marker !== 0x60 /* ` */) {\n return false\n }\n\n // scan marker length\n let mem = pos\n pos = state.skipChars(pos, marker)\n\n let len = pos - mem\n\n if (len < 3) { return false }\n\n const markup = state.src.slice(mem, pos)\n const params = state.src.slice(pos, max)\n\n if (marker === 0x60 /* ` */) {\n if (params.indexOf(String.fromCharCode(marker)) >= 0) {\n return false\n }\n }\n\n // Since start is found, we can report success here in validation mode\n if (silent) { return true }\n\n // search end of block\n let nextLine = startLine\n let haveEndMarker = false\n\n for (;;) {\n nextLine++\n if (nextLine >= endLine) {\n // unclosed block should be autoclosed by end of document.\n // also block seems to be autoclosed by end of parent\n break\n }\n\n pos = mem = state.bMarks[nextLine] + state.tShift[nextLine]\n max = state.eMarks[nextLine]\n\n if (pos < max && state.sCount[nextLine] < state.blkIndent) {\n // non-empty line with negative indent should stop the list:\n // - ```\n // test\n break\n }\n\n if (state.src.charCodeAt(pos) !== marker) { continue }\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n // closing fence should be indented less than 4 spaces\n continue\n }\n\n pos = state.skipChars(pos, marker)\n\n // closing code fence must be at least as long as the opening one\n if (pos - mem < len) { continue }\n\n // make sure tail has spaces only\n pos = state.skipSpaces(pos)\n\n if (pos < max) { continue }\n\n haveEndMarker = true\n // found!\n break\n }\n\n // If a fence has heading spaces, they should be removed from its inner block\n len = state.sCount[startLine]\n\n state.line = nextLine + (haveEndMarker ? 1 : 0)\n\n const token = state.push('fence', 'code', 0)\n token.info = params\n token.content = state.getLines(startLine + 1, nextLine, len, true)\n token.markup = markup\n token.map = [startLine, state.line]\n\n return true\n}\n","// Block quotes\n\nimport { isSpace } from '../common/utils.mjs'\n\nexport default function blockquote (state, startLine, endLine, silent) {\n let pos = state.bMarks[startLine] + state.tShift[startLine]\n let max = state.eMarks[startLine]\n\n const oldLineMax = state.lineMax\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n\n // check the block quote marker\n if (state.src.charCodeAt(pos) !== 0x3E/* > */) { return false }\n\n // we know that it's going to be a valid blockquote,\n // so no point trying to find the end of it in silent mode\n if (silent) { return true }\n\n const oldBMarks = []\n const oldBSCount = []\n const oldSCount = []\n const oldTShift = []\n\n const terminatorRules = state.md.block.ruler.getRules('blockquote')\n\n const oldParentType = state.parentType\n state.parentType = 'blockquote'\n let lastLineEmpty = false\n let nextLine\n\n // Search the end of the block\n //\n // Block ends with either:\n // 1. an empty line outside:\n // ```\n // > test\n //\n // ```\n // 2. an empty line inside:\n // ```\n // >\n // test\n // ```\n // 3. another tag:\n // ```\n // > test\n // - - -\n // ```\n for (nextLine = startLine; nextLine < endLine; nextLine++) {\n // check if it's outdented, i.e. it's inside list item and indented\n // less than said list item:\n //\n // ```\n // 1. anything\n // > current blockquote\n // 2. checking this line\n // ```\n const isOutdented = state.sCount[nextLine] < state.blkIndent\n\n pos = state.bMarks[nextLine] + state.tShift[nextLine]\n max = state.eMarks[nextLine]\n\n if (pos >= max) {\n // Case 1: line is not inside the blockquote, and this line is empty.\n break\n }\n\n if (state.src.charCodeAt(pos++) === 0x3E/* > */ && !isOutdented) {\n // This line is inside the blockquote.\n\n // set offset past spaces and \">\"\n let initial = state.sCount[nextLine] + 1\n let spaceAfterMarker\n let adjustTab\n\n // skip one optional space after '>'\n if (state.src.charCodeAt(pos) === 0x20 /* space */) {\n // ' > test '\n // ^ -- position start of line here:\n pos++\n initial++\n adjustTab = false\n spaceAfterMarker = true\n } else if (state.src.charCodeAt(pos) === 0x09 /* tab */) {\n spaceAfterMarker = true\n\n if ((state.bsCount[nextLine] + initial) % 4 === 3) {\n // ' >\\t test '\n // ^ -- position start of line here (tab has width===1)\n pos++\n initial++\n adjustTab = false\n } else {\n // ' >\\t test '\n // ^ -- position start of line here + shift bsCount slightly\n // to make extra space appear\n adjustTab = true\n }\n } else {\n spaceAfterMarker = false\n }\n\n let offset = initial\n oldBMarks.push(state.bMarks[nextLine])\n state.bMarks[nextLine] = pos\n\n while (pos < max) {\n const ch = state.src.charCodeAt(pos)\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n offset += 4 - (offset + state.bsCount[nextLine] + (adjustTab ? 1 : 0)) % 4\n } else {\n offset++\n }\n } else {\n break\n }\n\n pos++\n }\n\n lastLineEmpty = pos >= max\n\n oldBSCount.push(state.bsCount[nextLine])\n state.bsCount[nextLine] = state.sCount[nextLine] + 1 + (spaceAfterMarker ? 1 : 0)\n\n oldSCount.push(state.sCount[nextLine])\n state.sCount[nextLine] = offset - initial\n\n oldTShift.push(state.tShift[nextLine])\n state.tShift[nextLine] = pos - state.bMarks[nextLine]\n continue\n }\n\n // Case 2: line is not inside the blockquote, and the last line was empty.\n if (lastLineEmpty) { break }\n\n // Case 3: another tag found.\n let terminate = false\n for (let i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true\n break\n }\n }\n\n if (terminate) {\n // Quirk to enforce \"hard termination mode\" for paragraphs;\n // normally if you call `tokenize(state, startLine, nextLine)`,\n // paragraphs will look below nextLine for paragraph continuation,\n // but if blockquote is terminated by another tag, they shouldn't\n state.lineMax = nextLine\n\n if (state.blkIndent !== 0) {\n // state.blkIndent was non-zero, we now set it to zero,\n // so we need to re-calculate all offsets to appear as\n // if indent wasn't changed\n oldBMarks.push(state.bMarks[nextLine])\n oldBSCount.push(state.bsCount[nextLine])\n oldTShift.push(state.tShift[nextLine])\n oldSCount.push(state.sCount[nextLine])\n state.sCount[nextLine] -= state.blkIndent\n }\n\n break\n }\n\n oldBMarks.push(state.bMarks[nextLine])\n oldBSCount.push(state.bsCount[nextLine])\n oldTShift.push(state.tShift[nextLine])\n oldSCount.push(state.sCount[nextLine])\n\n // A negative indentation means that this is a paragraph continuation\n //\n state.sCount[nextLine] = -1\n }\n\n const oldIndent = state.blkIndent\n state.blkIndent = 0\n\n const token_o = state.push('blockquote_open', 'blockquote', 1)\n token_o.markup = '>'\n const lines = [startLine, 0]\n token_o.map = lines\n\n state.md.block.tokenize(state, startLine, nextLine)\n\n const token_c = state.push('blockquote_close', 'blockquote', -1)\n token_c.markup = '>'\n\n state.lineMax = oldLineMax\n state.parentType = oldParentType\n lines[1] = state.line\n\n // Restore original tShift; this might not be necessary since the parser\n // has already been here, but just to make sure we can do that.\n for (let i = 0; i < oldTShift.length; i++) {\n state.bMarks[i + startLine] = oldBMarks[i]\n state.tShift[i + startLine] = oldTShift[i]\n state.sCount[i + startLine] = oldSCount[i]\n state.bsCount[i + startLine] = oldBSCount[i]\n }\n state.blkIndent = oldIndent\n\n return true\n}\n","// Horizontal rule\n\nimport { isSpace } from '../common/utils.mjs'\n\nexport default function hr (state, startLine, endLine, silent) {\n const max = state.eMarks[startLine]\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n\n let pos = state.bMarks[startLine] + state.tShift[startLine]\n const marker = state.src.charCodeAt(pos++)\n\n // Check hr marker\n if (marker !== 0x2A/* * */ &&\n marker !== 0x2D/* - */ &&\n marker !== 0x5F/* _ */) {\n return false\n }\n\n // markers can be mixed with spaces, but there should be at least 3 of them\n\n let cnt = 1\n while (pos < max) {\n const ch = state.src.charCodeAt(pos++)\n if (ch !== marker && !isSpace(ch)) { return false }\n if (ch === marker) { cnt++ }\n }\n\n if (cnt < 3) { return false }\n\n if (silent) { return true }\n\n state.line = startLine + 1\n\n const token = state.push('hr', 'hr', 0)\n token.map = [startLine, state.line]\n token.markup = Array(cnt + 1).join(String.fromCharCode(marker))\n\n return true\n}\n","import { isSpace, normalizeReference } from '../common/utils.mjs'\n\nexport default function reference (state, startLine, _endLine, silent) {\n let lines = 0\n\n let pos = state.bMarks[startLine] + state.tShift[startLine]\n let max = state.eMarks[startLine]\n let nextLine = startLine + 1\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n\n if (state.src.charCodeAt(pos) !== 0x5B/* [ */) { return false }\n\n // Simple check to quickly interrupt scan on [link](url) at the start of line.\n // Can be useful on practice: https://github.com/markdown-it/markdown-it/issues/54\n while (++pos < max) {\n if (state.src.charCodeAt(pos) === 0x5D /* ] */ &&\n state.src.charCodeAt(pos - 1) !== 0x5C/* \\ */) {\n if (pos + 1 === max) { return false }\n if (state.src.charCodeAt(pos + 1) !== 0x3A/* : */) { return false }\n break\n }\n }\n\n const endLine = state.lineMax\n\n // jump line-by-line until empty one or EOF\n const terminatorRules = state.md.block.ruler.getRules('reference')\n\n const oldParentType = state.parentType\n state.parentType = 'reference'\n\n for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n // this would be a code block normally, but after paragraph\n // it's considered a lazy continuation regardless of what's there\n if (state.sCount[nextLine] - state.blkIndent > 3) { continue }\n\n // quirk for blockquotes, this line should already be checked by that rule\n if (state.sCount[nextLine] < 0) { continue }\n\n // Some tags can terminate paragraph without empty line.\n let terminate = false\n for (let i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true\n break\n }\n }\n if (terminate) { break }\n }\n\n const str = state.getLines(startLine, nextLine, state.blkIndent, false).trim()\n max = str.length\n let labelEnd = -1\n\n for (pos = 1; pos < max; pos++) {\n const ch = str.charCodeAt(pos)\n if (ch === 0x5B /* [ */) {\n return false\n } else if (ch === 0x5D /* ] */) {\n labelEnd = pos\n break\n } else if (ch === 0x0A /* \\n */) {\n lines++\n } else if (ch === 0x5C /* \\ */) {\n pos++\n if (pos < max && str.charCodeAt(pos) === 0x0A) {\n lines++\n }\n }\n }\n\n if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 0x3A/* : */) { return false }\n\n // [label]: destination 'title'\n // ^^^ skip optional whitespace here\n for (pos = labelEnd + 2; pos < max; pos++) {\n const ch = str.charCodeAt(pos)\n if (ch === 0x0A) {\n lines++\n } else if (isSpace(ch)) {\n /* eslint no-empty:0 */\n } else {\n break\n }\n }\n\n // [label]: destination 'title'\n // ^^^^^^^^^^^ parse this\n const destRes = state.md.helpers.parseLinkDestination(str, pos, max)\n if (!destRes.ok) { return false }\n\n const href = state.md.normalizeLink(destRes.str)\n if (!state.md.validateLink(href)) { return false }\n\n pos = destRes.pos\n lines += destRes.lines\n\n // save cursor state, we could require to rollback later\n const destEndPos = pos\n const destEndLineNo = lines\n\n // [label]: destination 'title'\n // ^^^ skipping those spaces\n const start = pos\n for (; pos < max; pos++) {\n const ch = str.charCodeAt(pos)\n if (ch === 0x0A) {\n lines++\n } else if (isSpace(ch)) {\n /* eslint no-empty:0 */\n } else {\n break\n }\n }\n\n // [label]: destination 'title'\n // ^^^^^^^ parse this\n const titleRes = state.md.helpers.parseLinkTitle(str, pos, max)\n let title\n\n if (pos < max && start !== pos && titleRes.ok) {\n title = titleRes.str\n pos = titleRes.pos\n lines += titleRes.lines\n } else {\n title = ''\n pos = destEndPos\n lines = destEndLineNo\n }\n\n // skip trailing spaces until the rest of the line\n while (pos < max) {\n const ch = str.charCodeAt(pos)\n if (!isSpace(ch)) { break }\n pos++\n }\n\n if (pos < max && str.charCodeAt(pos) !== 0x0A) {\n if (title) {\n // garbage at the end of the line after title,\n // but it could still be a valid reference if we roll back\n title = ''\n pos = destEndPos\n lines = destEndLineNo\n while (pos < max) {\n const ch = str.charCodeAt(pos)\n if (!isSpace(ch)) { break }\n pos++\n }\n }\n }\n\n if (pos < max && str.charCodeAt(pos) !== 0x0A) {\n // garbage at the end of the line\n return false\n }\n\n const label = normalizeReference(str.slice(1, labelEnd))\n if (!label) {\n // CommonMark 0.20 disallows empty labels\n return false\n }\n\n // Reference can not terminate anything. This check is for safety only.\n /* istanbul ignore if */\n if (silent) { return true }\n\n if (typeof state.env.references === 'undefined') {\n state.env.references = {}\n }\n if (typeof state.env.references[label] === 'undefined') {\n state.env.references[label] = { title, href }\n }\n\n state.parentType = oldParentType\n\n state.line = startLine + lines + 1\n return true\n}\n","// heading (#, ##, ...)\n\nimport { isSpace } from '../common/utils.mjs'\n\nexport default function heading (state, startLine, endLine, silent) {\n let pos = state.bMarks[startLine] + state.tShift[startLine]\n let max = state.eMarks[startLine]\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n\n let ch = state.src.charCodeAt(pos)\n\n if (ch !== 0x23/* # */ || pos >= max) { return false }\n\n // count heading level\n let level = 1\n ch = state.src.charCodeAt(++pos)\n while (ch === 0x23/* # */ && pos < max && level <= 6) {\n level++\n ch = state.src.charCodeAt(++pos)\n }\n\n if (level > 6 || (pos < max && !isSpace(ch))) { return false }\n\n if (silent) { return true }\n\n // Let's cut tails like ' ### ' from the end of string\n\n max = state.skipSpacesBack(max, pos)\n const tmp = state.skipCharsBack(max, 0x23, pos) // #\n if (tmp > pos && isSpace(state.src.charCodeAt(tmp - 1))) {\n max = tmp\n }\n\n state.line = startLine + 1\n\n const token_o = state.push('heading_open', 'h' + String(level), 1)\n token_o.markup = '########'.slice(0, level)\n token_o.map = [startLine, state.line]\n\n const token_i = state.push('inline', '', 0)\n token_i.content = state.src.slice(pos, max).trim()\n token_i.map = [startLine, state.line]\n token_i.children = []\n\n const token_c = state.push('heading_close', 'h' + String(level), -1)\n token_c.markup = '########'.slice(0, level)\n\n return true\n}\n","// lheading (---, ===)\n\nexport default function lheading (state, startLine, endLine/*, silent */) {\n const terminatorRules = state.md.block.ruler.getRules('paragraph')\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n\n const oldParentType = state.parentType\n state.parentType = 'paragraph' // use paragraph to match terminatorRules\n\n // jump line-by-line until empty one or EOF\n let level = 0\n let marker\n let nextLine = startLine + 1\n\n for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n // this would be a code block normally, but after paragraph\n // it's considered a lazy continuation regardless of what's there\n if (state.sCount[nextLine] - state.blkIndent > 3) { continue }\n\n //\n // Check for underline in setext header\n //\n if (state.sCount[nextLine] >= state.blkIndent) {\n let pos = state.bMarks[nextLine] + state.tShift[nextLine]\n const max = state.eMarks[nextLine]\n\n if (pos < max) {\n marker = state.src.charCodeAt(pos)\n\n if (marker === 0x2D/* - */ || marker === 0x3D/* = */) {\n pos = state.skipChars(pos, marker)\n pos = state.skipSpaces(pos)\n\n if (pos >= max) {\n level = (marker === 0x3D/* = */ ? 1 : 2)\n break\n }\n }\n }\n }\n\n // quirk for blockquotes, this line should already be checked by that rule\n if (state.sCount[nextLine] < 0) { continue }\n\n // Some tags can terminate paragraph without empty line.\n let terminate = false\n for (let i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true\n break\n }\n }\n if (terminate) { break }\n }\n\n if (!level) {\n // Didn't find valid underline\n return false\n }\n\n const content = state.getLines(startLine, nextLine, state.blkIndent, false).trim()\n\n state.line = nextLine + 1\n\n const token_o = state.push('heading_open', 'h' + String(level), 1)\n token_o.markup = String.fromCharCode(marker)\n token_o.map = [startLine, state.line]\n\n const token_i = state.push('inline', '', 0)\n token_i.content = content\n token_i.map = [startLine, state.line - 1]\n token_i.children = []\n\n const token_c = state.push('heading_close', 'h' + String(level), -1)\n token_c.markup = String.fromCharCode(marker)\n\n state.parentType = oldParentType\n\n return true\n}\n","// Paragraph\n\nexport default function paragraph (state, startLine, endLine) {\n const terminatorRules = state.md.block.ruler.getRules('paragraph')\n const oldParentType = state.parentType\n let nextLine = startLine + 1\n state.parentType = 'paragraph'\n\n // jump line-by-line until empty one or EOF\n for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n // this would be a code block normally, but after paragraph\n // it's considered a lazy continuation regardless of what's there\n if (state.sCount[nextLine] - state.blkIndent > 3) { continue }\n\n // quirk for blockquotes, this line should already be checked by that rule\n if (state.sCount[nextLine] < 0) { continue }\n\n // Some tags can terminate paragraph without empty line.\n let terminate = false\n for (let i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true\n break\n }\n }\n if (terminate) { break }\n }\n\n const content = state.getLines(startLine, nextLine, state.blkIndent, false).trim()\n\n state.line = nextLine\n\n const token_o = state.push('paragraph_open', 'p', 1)\n token_o.map = [startLine, state.line]\n\n const token_i = state.push('inline', '', 0)\n token_i.content = content\n token_i.map = [startLine, state.line]\n token_i.children = []\n\n state.push('paragraph_close', 'p', -1)\n\n state.parentType = oldParentType\n\n return true\n}\n","// Inline parser state\n\nimport Token from '../token.mjs'\nimport { isWhiteSpace, isPunctChar, isMdAsciiPunct } from '../common/utils.mjs'\n\nfunction StateInline (src, md, env, outTokens) {\n this.src = src\n this.env = env\n this.md = md\n this.tokens = outTokens\n this.tokens_meta = Array(outTokens.length)\n\n this.pos = 0\n this.posMax = this.src.length\n this.level = 0\n this.pending = ''\n this.pendingLevel = 0\n\n // Stores { start: end } pairs. Useful for backtrack\n // optimization of pairs parse (emphasis, strikes).\n this.cache = {}\n\n // List of emphasis-like delimiters for current tag\n this.delimiters = []\n\n // Stack of delimiter lists for upper level tags\n this._prev_delimiters = []\n\n // backtick length => last seen position\n this.backticks = {}\n this.backticksScanned = false\n\n // Counter used to disable inline linkify-it execution\n // inside and markdown links\n this.linkLevel = 0\n}\n\n// Flush pending text\n//\nStateInline.prototype.pushPending = function () {\n const token = new Token('text', '', 0)\n token.content = this.pending\n token.level = this.pendingLevel\n this.tokens.push(token)\n this.pending = ''\n return token\n}\n\n// Push new token to \"stream\".\n// If pending text exists - flush it as text token\n//\nStateInline.prototype.push = function (type, tag, nesting) {\n if (this.pending) {\n this.pushPending()\n }\n\n const token = new Token(type, tag, nesting)\n let token_meta = null\n\n if (nesting < 0) {\n // closing tag\n this.level--\n this.delimiters = this._prev_delimiters.pop()\n }\n\n token.level = this.level\n\n if (nesting > 0) {\n // opening tag\n this.level++\n this._prev_delimiters.push(this.delimiters)\n this.delimiters = []\n token_meta = { delimiters: this.delimiters }\n }\n\n this.pendingLevel = this.level\n this.tokens.push(token)\n this.tokens_meta.push(token_meta)\n return token\n}\n\n// Scan a sequence of emphasis-like markers, and determine whether\n// it can start an emphasis sequence or end an emphasis sequence.\n//\n// - start - position to scan from (it should point at a valid marker);\n// - canSplitWord - determine if these markers can be found inside a word\n//\nStateInline.prototype.scanDelims = function (start, canSplitWord) {\n let can_open, can_close\n let left_flanking = true\n let right_flanking = true\n const max = this.posMax\n const marker = this.src.charCodeAt(start)\n\n // treat beginning of the line as a whitespace\n const lastChar = start > 0 ? this.src.charCodeAt(start - 1) : 0x20\n\n let pos = start\n while (pos < max && this.src.charCodeAt(pos) === marker) { pos++ }\n\n const count = pos - start\n\n // treat end of the line as a whitespace\n const nextChar = pos < max ? this.src.charCodeAt(pos) : 0x20\n\n const isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar))\n const isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar))\n\n const isLastWhiteSpace = isWhiteSpace(lastChar)\n const isNextWhiteSpace = isWhiteSpace(nextChar)\n\n if (isNextWhiteSpace) {\n left_flanking = false\n } else if (isNextPunctChar) {\n if (!(isLastWhiteSpace || isLastPunctChar)) {\n left_flanking = false\n }\n }\n\n if (isLastWhiteSpace) {\n right_flanking = false\n } else if (isLastPunctChar) {\n if (!(isNextWhiteSpace || isNextPunctChar)) {\n right_flanking = false\n }\n }\n\n if (!canSplitWord) {\n can_open = left_flanking && (!right_flanking || isLastPunctChar)\n can_close = right_flanking && (!left_flanking || isNextPunctChar)\n } else {\n can_open = left_flanking\n can_close = right_flanking\n }\n\n return { can_open, can_close, length: count }\n}\n\n// re-export Token class to use in block rules\nStateInline.prototype.Token = Token\n\nexport default StateInline\n","// Skip text characters for text token, place those to pending buffer\n// and increment current pos\n\n// Rule to skip pure text\n// '{}$%@~+=:' reserved for extentions\n\n// !, \", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \\, ], ^, _, `, {, |, }, or ~\n\n// !!!! Don't confuse with \"Markdown ASCII Punctuation\" chars\n// http://spec.commonmark.org/0.15/#ascii-punctuation-character\nfunction isTerminatorChar (ch) {\n switch (ch) {\n case 0x0A/* \\n */:\n case 0x21/* ! */:\n case 0x23/* # */:\n case 0x24/* $ */:\n case 0x25/* % */:\n case 0x26/* & */:\n case 0x2A/* * */:\n case 0x2B/* + */:\n case 0x2D/* - */:\n case 0x3A/* : */:\n case 0x3C/* < */:\n case 0x3D/* = */:\n case 0x3E/* > */:\n case 0x40/* @ */:\n case 0x5B/* [ */:\n case 0x5C/* \\ */:\n case 0x5D/* ] */:\n case 0x5E/* ^ */:\n case 0x5F/* _ */:\n case 0x60/* ` */:\n case 0x7B/* { */:\n case 0x7D/* } */:\n case 0x7E/* ~ */:\n return true\n default:\n return false\n }\n}\n\nexport default function text (state, silent) {\n let pos = state.pos\n\n while (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos))) {\n pos++\n }\n\n if (pos === state.pos) { return false }\n\n if (!silent) { state.pending += state.src.slice(state.pos, pos) }\n\n state.pos = pos\n\n return true\n}\n\n// Alternative implementation, for memory.\n//\n// It costs 10% of performance, but allows extend terminators list, if place it\n// to `ParcerInline` property. Probably, will switch to it sometime, such\n// flexibility required.\n\n/*\nvar TERMINATOR_RE = /[\\n!#$%&*+\\-:<=>@[\\\\\\]^_`{}~]/;\n\nmodule.exports = function text(state, silent) {\n var pos = state.pos,\n idx = state.src.slice(pos).search(TERMINATOR_RE);\n\n // first char is terminator -> empty text\n if (idx === 0) { return false; }\n\n // no terminator -> text till end of string\n if (idx < 0) {\n if (!silent) { state.pending += state.src.slice(pos); }\n state.pos = state.src.length;\n return true;\n }\n\n if (!silent) { state.pending += state.src.slice(pos, pos + idx); }\n\n state.pos += idx;\n\n return true;\n}; */\n","// Process links like https://example.org/\n\n// RFC3986: scheme = ALPHA *( ALPHA / DIGIT / \"+\" / \"-\" / \".\" )\nconst SCHEME_RE = /(?:^|[^a-z0-9.+-])([a-z][a-z0-9.+-]*)$/i\n\nexport default function linkify (state, silent) {\n if (!state.md.options.linkify) return false\n if (state.linkLevel > 0) return false\n\n const pos = state.pos\n const max = state.posMax\n\n if (pos + 3 > max) return false\n if (state.src.charCodeAt(pos) !== 0x3A/* : */) return false\n if (state.src.charCodeAt(pos + 1) !== 0x2F/* / */) return false\n if (state.src.charCodeAt(pos + 2) !== 0x2F/* / */) return false\n\n const match = state.pending.match(SCHEME_RE)\n if (!match) return false\n\n const proto = match[1]\n\n const link = state.md.linkify.matchAtStart(state.src.slice(pos - proto.length))\n if (!link) return false\n\n let url = link.url\n\n // invalid link, but still detected by linkify somehow;\n // need to check to prevent infinite loop below\n if (url.length <= proto.length) return false\n\n // disallow '*' at the end of the link (conflicts with emphasis)\n url = url.replace(/\\*+$/, '')\n\n const fullUrl = state.md.normalizeLink(url)\n if (!state.md.validateLink(fullUrl)) return false\n\n if (!silent) {\n state.pending = state.pending.slice(0, -proto.length)\n\n const token_o = state.push('link_open', 'a', 1)\n token_o.attrs = [['href', fullUrl]]\n token_o.markup = 'linkify'\n token_o.info = 'auto'\n\n const token_t = state.push('text', '', 0)\n token_t.content = state.md.normalizeLinkText(url)\n\n const token_c = state.push('link_close', 'a', -1)\n token_c.markup = 'linkify'\n token_c.info = 'auto'\n }\n\n state.pos += url.length - proto.length\n return true\n}\n","// Process escaped chars and hardbreaks\n\nimport { isSpace } from '../common/utils.mjs'\n\nconst ESCAPED = []\n\nfor (let i = 0; i < 256; i++) { ESCAPED.push(0) }\n\n'\\\\!\"#$%&\\'()*+,./:;<=>?@[]^_`{|}~-'\n .split('').forEach(function (ch) { ESCAPED[ch.charCodeAt(0)] = 1 })\n\nexport default function escape (state, silent) {\n let pos = state.pos\n const max = state.posMax\n\n if (state.src.charCodeAt(pos) !== 0x5C/* \\ */) return false\n pos++\n\n // '\\' at the end of the inline block\n if (pos >= max) return false\n\n let ch1 = state.src.charCodeAt(pos)\n\n if (ch1 === 0x0A) {\n if (!silent) {\n state.push('hardbreak', 'br', 0)\n }\n\n pos++\n // skip leading whitespaces from next line\n while (pos < max) {\n ch1 = state.src.charCodeAt(pos)\n if (!isSpace(ch1)) break\n pos++\n }\n\n state.pos = pos\n return true\n }\n\n let escapedStr = state.src[pos]\n\n if (ch1 >= 0xD800 && ch1 <= 0xDBFF && pos + 1 < max) {\n const ch2 = state.src.charCodeAt(pos + 1)\n\n if (ch2 >= 0xDC00 && ch2 <= 0xDFFF) {\n escapedStr += state.src[pos + 1]\n pos++\n }\n }\n\n const origStr = '\\\\' + escapedStr\n\n if (!silent) {\n const token = state.push('text_special', '', 0)\n\n if (ch1 < 256 && ESCAPED[ch1] !== 0) {\n token.content = escapedStr\n } else {\n token.content = origStr\n }\n\n token.markup = origStr\n token.info = 'escape'\n }\n\n state.pos = pos + 1\n return true\n}\n","// ~~strike through~~\n//\n\n// Insert each marker as a separate text token, and add it to delimiter list\n//\nfunction strikethrough_tokenize (state, silent) {\n const start = state.pos\n const marker = state.src.charCodeAt(start)\n\n if (silent) { return false }\n\n if (marker !== 0x7E/* ~ */) { return false }\n\n const scanned = state.scanDelims(state.pos, true)\n let len = scanned.length\n const ch = String.fromCharCode(marker)\n\n if (len < 2) { return false }\n\n let token\n\n if (len % 2) {\n token = state.push('text', '', 0)\n token.content = ch\n len--\n }\n\n for (let i = 0; i < len; i += 2) {\n token = state.push('text', '', 0)\n token.content = ch + ch\n\n state.delimiters.push({\n marker,\n length: 0, // disable \"rule of 3\" length checks meant for emphasis\n token: state.tokens.length - 1,\n end: -1,\n open: scanned.can_open,\n close: scanned.can_close\n })\n }\n\n state.pos += scanned.length\n\n return true\n}\n\nfunction postProcess (state, delimiters) {\n let token\n const loneMarkers = []\n const max = delimiters.length\n\n for (let i = 0; i < max; i++) {\n const startDelim = delimiters[i]\n\n if (startDelim.marker !== 0x7E/* ~ */) {\n continue\n }\n\n if (startDelim.end === -1) {\n continue\n }\n\n const endDelim = delimiters[startDelim.end]\n\n token = state.tokens[startDelim.token]\n token.type = 's_open'\n token.tag = 's'\n token.nesting = 1\n token.markup = '~~'\n token.content = ''\n\n token = state.tokens[endDelim.token]\n token.type = 's_close'\n token.tag = 's'\n token.nesting = -1\n token.markup = '~~'\n token.content = ''\n\n if (state.tokens[endDelim.token - 1].type === 'text' &&\n state.tokens[endDelim.token - 1].content === '~') {\n loneMarkers.push(endDelim.token - 1)\n }\n }\n\n // If a marker sequence has an odd number of characters, it's splitted\n // like this: `~~~~~` -> `~` + `~~` + `~~`, leaving one marker at the\n // start of the sequence.\n //\n // So, we have to move all those markers after subsequent s_close tags.\n //\n while (loneMarkers.length) {\n const i = loneMarkers.pop()\n let j = i + 1\n\n while (j < state.tokens.length && state.tokens[j].type === 's_close') {\n j++\n }\n\n j--\n\n if (i !== j) {\n token = state.tokens[j]\n state.tokens[j] = state.tokens[i]\n state.tokens[i] = token\n }\n }\n}\n\n// Walk through delimiter list and replace text tokens with tags\n//\nfunction strikethrough_postProcess (state) {\n const tokens_meta = state.tokens_meta\n const max = state.tokens_meta.length\n\n postProcess(state, state.delimiters)\n\n for (let curr = 0; curr < max; curr++) {\n if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n postProcess(state, tokens_meta[curr].delimiters)\n }\n }\n}\n\nexport default {\n tokenize: strikethrough_tokenize,\n postProcess: strikethrough_postProcess\n}\n","// Process *this* and _that_\n//\n\n// Insert each marker as a separate text token, and add it to delimiter list\n//\nfunction emphasis_tokenize (state, silent) {\n const start = state.pos\n const marker = state.src.charCodeAt(start)\n\n if (silent) { return false }\n\n if (marker !== 0x5F /* _ */ && marker !== 0x2A /* * */) { return false }\n\n const scanned = state.scanDelims(state.pos, marker === 0x2A)\n\n for (let i = 0; i < scanned.length; i++) {\n const token = state.push('text', '', 0)\n token.content = String.fromCharCode(marker)\n\n state.delimiters.push({\n // Char code of the starting marker (number).\n //\n marker,\n\n // Total length of these series of delimiters.\n //\n length: scanned.length,\n\n // A position of the token this delimiter corresponds to.\n //\n token: state.tokens.length - 1,\n\n // If this delimiter is matched as a valid opener, `end` will be\n // equal to its position, otherwise it's `-1`.\n //\n end: -1,\n\n // Boolean flags that determine if this delimiter could open or close\n // an emphasis.\n //\n open: scanned.can_open,\n close: scanned.can_close\n })\n }\n\n state.pos += scanned.length\n\n return true\n}\n\nfunction postProcess (state, delimiters) {\n const max = delimiters.length\n\n for (let i = max - 1; i >= 0; i--) {\n const startDelim = delimiters[i]\n\n if (startDelim.marker !== 0x5F/* _ */ && startDelim.marker !== 0x2A/* * */) {\n continue\n }\n\n // Process only opening markers\n if (startDelim.end === -1) {\n continue\n }\n\n const endDelim = delimiters[startDelim.end]\n\n // If the previous delimiter has the same marker and is adjacent to this one,\n // merge those into one strong delimiter.\n //\n // `whatever` -> `whatever`\n //\n const isStrong = i > 0 &&\n delimiters[i - 1].end === startDelim.end + 1 &&\n // check that first two markers match and adjacent\n delimiters[i - 1].marker === startDelim.marker &&\n delimiters[i - 1].token === startDelim.token - 1 &&\n // check that last two markers are adjacent (we can safely assume they match)\n delimiters[startDelim.end + 1].token === endDelim.token + 1\n\n const ch = String.fromCharCode(startDelim.marker)\n\n const token_o = state.tokens[startDelim.token]\n token_o.type = isStrong ? 'strong_open' : 'em_open'\n token_o.tag = isStrong ? 'strong' : 'em'\n token_o.nesting = 1\n token_o.markup = isStrong ? ch + ch : ch\n token_o.content = ''\n\n const token_c = state.tokens[endDelim.token]\n token_c.type = isStrong ? 'strong_close' : 'em_close'\n token_c.tag = isStrong ? 'strong' : 'em'\n token_c.nesting = -1\n token_c.markup = isStrong ? ch + ch : ch\n token_c.content = ''\n\n if (isStrong) {\n state.tokens[delimiters[i - 1].token].content = ''\n state.tokens[delimiters[startDelim.end + 1].token].content = ''\n i--\n }\n }\n}\n\n// Walk through delimiter list and replace text tokens with tags\n//\nfunction emphasis_post_process (state) {\n const tokens_meta = state.tokens_meta\n const max = state.tokens_meta.length\n\n postProcess(state, state.delimiters)\n\n for (let curr = 0; curr < max; curr++) {\n if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n postProcess(state, tokens_meta[curr].delimiters)\n }\n }\n}\n\nexport default {\n tokenize: emphasis_tokenize,\n postProcess: emphasis_post_process\n}\n","// Process autolinks ''\n\n/* eslint max-len:0 */\nconst EMAIL_RE = /^([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/* eslint-disable-next-line no-control-regex */\nconst AUTOLINK_RE = /^([a-zA-Z][a-zA-Z0-9+.-]{1,31}):([^<>\\x00-\\x20]*)$/\n\nexport default function autolink (state, silent) {\n let pos = state.pos\n\n if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false }\n\n const start = state.pos\n const max = state.posMax\n\n for (;;) {\n if (++pos >= max) return false\n\n const ch = state.src.charCodeAt(pos)\n\n if (ch === 0x3C /* < */) return false\n if (ch === 0x3E /* > */) break\n }\n\n const url = state.src.slice(start + 1, pos)\n\n if (AUTOLINK_RE.test(url)) {\n const fullUrl = state.md.normalizeLink(url)\n if (!state.md.validateLink(fullUrl)) { return false }\n\n if (!silent) {\n const token_o = state.push('link_open', 'a', 1)\n token_o.attrs = [['href', fullUrl]]\n token_o.markup = 'autolink'\n token_o.info = 'auto'\n\n const token_t = state.push('text', '', 0)\n token_t.content = state.md.normalizeLinkText(url)\n\n const token_c = state.push('link_close', 'a', -1)\n token_c.markup = 'autolink'\n token_c.info = 'auto'\n }\n\n state.pos += url.length + 2\n return true\n }\n\n if (EMAIL_RE.test(url)) {\n const fullUrl = state.md.normalizeLink('mailto:' + url)\n if (!state.md.validateLink(fullUrl)) { return false }\n\n if (!silent) {\n const token_o = state.push('link_open', 'a', 1)\n token_o.attrs = [['href', fullUrl]]\n token_o.markup = 'autolink'\n token_o.info = 'auto'\n\n const token_t = state.push('text', '', 0)\n token_t.content = state.md.normalizeLinkText(url)\n\n const token_c = state.push('link_close', 'a', -1)\n token_c.markup = 'autolink'\n token_c.info = 'auto'\n }\n\n state.pos += url.length + 2\n return true\n }\n\n return false\n}\n","// Process html entity - {, ¯, ", ...\n\nimport { decodeHTML } from 'entities'\nimport { isValidEntityCode, fromCodePoint } from '../common/utils.mjs'\n\nconst DIGITAL_RE = /^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i\nconst NAMED_RE = /^&([a-z][a-z0-9]{1,31});/i\n\nexport default function entity (state, silent) {\n const pos = state.pos\n const max = state.posMax\n\n if (state.src.charCodeAt(pos) !== 0x26/* & */) return false\n\n if (pos + 1 >= max) return false\n\n const ch = state.src.charCodeAt(pos + 1)\n\n if (ch === 0x23 /* # */) {\n const match = state.src.slice(pos).match(DIGITAL_RE)\n if (match) {\n if (!silent) {\n const code = match[1][0].toLowerCase() === 'x' ? parseInt(match[1].slice(1), 16) : parseInt(match[1], 10)\n\n const token = state.push('text_special', '', 0)\n token.content = isValidEntityCode(code) ? fromCodePoint(code) : fromCodePoint(0xFFFD)\n token.markup = match[0]\n token.info = 'entity'\n }\n state.pos += match[0].length\n return true\n }\n } else {\n const match = state.src.slice(pos).match(NAMED_RE)\n if (match) {\n const decoded = decodeHTML(match[0])\n if (decoded !== match[0]) {\n if (!silent) {\n const token = state.push('text_special', '', 0)\n token.content = decoded\n token.markup = match[0]\n token.info = 'entity'\n }\n state.pos += match[0].length\n return true\n }\n }\n }\n\n return false\n}\n","// For each opening emphasis-like marker find a matching closing one\n//\n\nfunction processDelimiters (delimiters) {\n const openersBottom = {}\n const max = delimiters.length\n\n if (!max) return\n\n // headerIdx is the first delimiter of the current (where closer is) delimiter run\n let headerIdx = 0\n let lastTokenIdx = -2 // needs any value lower than -1\n const jumps = []\n\n for (let closerIdx = 0; closerIdx < max; closerIdx++) {\n const closer = delimiters[closerIdx]\n\n jumps.push(0)\n\n // markers belong to same delimiter run if:\n // - they have adjacent tokens\n // - AND markers are the same\n //\n if (delimiters[headerIdx].marker !== closer.marker || lastTokenIdx !== closer.token - 1) {\n headerIdx = closerIdx\n }\n\n lastTokenIdx = closer.token\n\n // Length is only used for emphasis-specific \"rule of 3\",\n // if it's not defined (in strikethrough or 3rd party plugins),\n // we can default it to 0 to disable those checks.\n //\n closer.length = closer.length || 0\n\n if (!closer.close) continue\n\n // Previously calculated lower bounds (previous fails)\n // for each marker, each delimiter length modulo 3,\n // and for whether this closer can be an opener;\n // https://github.com/commonmark/cmark/commit/34250e12ccebdc6372b8b49c44fab57c72443460\n /* eslint-disable-next-line no-prototype-builtins */\n if (!openersBottom.hasOwnProperty(closer.marker)) {\n openersBottom[closer.marker] = [-1, -1, -1, -1, -1, -1]\n }\n\n const minOpenerIdx = openersBottom[closer.marker][(closer.open ? 3 : 0) + (closer.length % 3)]\n\n let openerIdx = headerIdx - jumps[headerIdx] - 1\n\n let newMinOpenerIdx = openerIdx\n\n for (; openerIdx > minOpenerIdx; openerIdx -= jumps[openerIdx] + 1) {\n const opener = delimiters[openerIdx]\n\n if (opener.marker !== closer.marker) continue\n\n if (opener.open && opener.end < 0) {\n let isOddMatch = false\n\n // from spec:\n //\n // If one of the delimiters can both open and close emphasis, then the\n // sum of the lengths of the delimiter runs containing the opening and\n // closing delimiters must not be a multiple of 3 unless both lengths\n // are multiples of 3.\n //\n if (opener.close || closer.open) {\n if ((opener.length + closer.length) % 3 === 0) {\n if (opener.length % 3 !== 0 || closer.length % 3 !== 0) {\n isOddMatch = true\n }\n }\n }\n\n if (!isOddMatch) {\n // If previous delimiter cannot be an opener, we can safely skip\n // the entire sequence in future checks. This is required to make\n // sure algorithm has linear complexity (see *_*_*_*_*_... case).\n //\n const lastJump = openerIdx > 0 && !delimiters[openerIdx - 1].open\n ? jumps[openerIdx - 1] + 1\n : 0\n\n jumps[closerIdx] = closerIdx - openerIdx + lastJump\n jumps[openerIdx] = lastJump\n\n closer.open = false\n opener.end = closerIdx\n opener.close = false\n newMinOpenerIdx = -1\n // treat next token as start of run,\n // it optimizes skips in **<...>**a**<...>** pathological case\n lastTokenIdx = -2\n break\n }\n }\n }\n\n if (newMinOpenerIdx !== -1) {\n // If match for this delimiter run failed, we want to set lower bound for\n // future lookups. This is required to make sure algorithm has linear\n // complexity.\n //\n // See details here:\n // https://github.com/commonmark/cmark/issues/178#issuecomment-270417442\n //\n openersBottom[closer.marker][(closer.open ? 3 : 0) + ((closer.length || 0) % 3)] = newMinOpenerIdx\n }\n }\n}\n\nexport default function link_pairs (state) {\n const tokens_meta = state.tokens_meta\n const max = state.tokens_meta.length\n\n processDelimiters(state.delimiters)\n\n for (let curr = 0; curr < max; curr++) {\n if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n processDelimiters(tokens_meta[curr].delimiters)\n }\n }\n}\n","/** internal\n * class ParserInline\n *\n * Tokenizes paragraph content.\n **/\n\nimport Ruler from './ruler.mjs'\nimport StateInline from './rules_inline/state_inline.mjs'\n\nimport r_text from './rules_inline/text.mjs'\nimport r_linkify from './rules_inline/linkify.mjs'\nimport r_newline from './rules_inline/newline.mjs'\nimport r_escape from './rules_inline/escape.mjs'\nimport r_backticks from './rules_inline/backticks.mjs'\nimport r_strikethrough from './rules_inline/strikethrough.mjs'\nimport r_emphasis from './rules_inline/emphasis.mjs'\nimport r_link from './rules_inline/link.mjs'\nimport r_image from './rules_inline/image.mjs'\nimport r_autolink from './rules_inline/autolink.mjs'\nimport r_html_inline from './rules_inline/html_inline.mjs'\nimport r_entity from './rules_inline/entity.mjs'\n\nimport r_balance_pairs from './rules_inline/balance_pairs.mjs'\nimport r_fragments_join from './rules_inline/fragments_join.mjs'\n\n// Parser rules\n\nconst _rules = [\n ['text', r_text],\n ['linkify', r_linkify],\n ['newline', r_newline],\n ['escape', r_escape],\n ['backticks', r_backticks],\n ['strikethrough', r_strikethrough.tokenize],\n ['emphasis', r_emphasis.tokenize],\n ['link', r_link],\n ['image', r_image],\n ['autolink', r_autolink],\n ['html_inline', r_html_inline],\n ['entity', r_entity]\n]\n\n// `rule2` ruleset was created specifically for emphasis/strikethrough\n// post-processing and may be changed in the future.\n//\n// Don't use this for anything except pairs (plugins working with `balance_pairs`).\n//\nconst _rules2 = [\n ['balance_pairs', r_balance_pairs],\n ['strikethrough', r_strikethrough.postProcess],\n ['emphasis', r_emphasis.postProcess],\n // rules for pairs separate '**' into its own text tokens, which may be left unused,\n // rule below merges unused segments back with the rest of the text\n ['fragments_join', r_fragments_join]\n]\n\n/**\n * new ParserInline()\n **/\nfunction ParserInline () {\n /**\n * ParserInline#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of inline rules.\n **/\n this.ruler = new Ruler()\n\n for (let i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1])\n }\n\n /**\n * ParserInline#ruler2 -> Ruler\n *\n * [[Ruler]] instance. Second ruler used for post-processing\n * (e.g. in emphasis-like rules).\n **/\n this.ruler2 = new Ruler()\n\n for (let i = 0; i < _rules2.length; i++) {\n this.ruler2.push(_rules2[i][0], _rules2[i][1])\n }\n}\n\n// Skip single token by running all rules in validation mode;\n// returns `true` if any rule reported success\n//\nParserInline.prototype.skipToken = function (state) {\n const pos = state.pos\n const rules = this.ruler.getRules('')\n const len = rules.length\n const maxNesting = state.md.options.maxNesting\n const cache = state.cache\n\n if (typeof cache[pos] !== 'undefined') {\n state.pos = cache[pos]\n return\n }\n\n let ok = false\n\n if (state.level < maxNesting) {\n for (let i = 0; i < len; i++) {\n // Increment state.level and decrement it later to limit recursion.\n // It's harmless to do here, because no tokens are created. But ideally,\n // we'd need a separate private state variable for this purpose.\n //\n state.level++\n ok = rules[i](state, true)\n state.level--\n\n if (ok) {\n if (pos >= state.pos) { throw new Error(\"inline rule didn't increment state.pos\") }\n break\n }\n }\n } else {\n // Too much nesting, just skip until the end of the paragraph.\n //\n // NOTE: this will cause links to behave incorrectly in the following case,\n // when an amount of `[` is exactly equal to `maxNesting + 1`:\n //\n // [[[[[[[[[[[[[[[[[[[[[foo]()\n //\n // TODO: remove this workaround when CM standard will allow nested links\n // (we can replace it by preventing links from being parsed in\n // validation mode)\n //\n state.pos = state.posMax\n }\n\n if (!ok) { state.pos++ }\n cache[pos] = state.pos\n}\n\n// Generate tokens for input range\n//\nParserInline.prototype.tokenize = function (state) {\n const rules = this.ruler.getRules('')\n const len = rules.length\n const end = state.posMax\n const maxNesting = state.md.options.maxNesting\n\n while (state.pos < end) {\n // Try all possible rules.\n // On success, rule should:\n //\n // - update `state.pos`\n // - update `state.tokens`\n // - return true\n const prevPos = state.pos\n let ok = false\n\n if (state.level < maxNesting) {\n for (let i = 0; i < len; i++) {\n ok = rules[i](state, false)\n if (ok) {\n if (prevPos >= state.pos) { throw new Error(\"inline rule didn't increment state.pos\") }\n break\n }\n }\n }\n\n if (ok) {\n if (state.pos >= end) { break }\n continue\n }\n\n state.pending += state.src[state.pos++]\n }\n\n if (state.pending) {\n state.pushPending()\n }\n}\n\n/**\n * ParserInline.parse(str, md, env, outTokens)\n *\n * Process input string and push inline tokens into `outTokens`\n **/\nParserInline.prototype.parse = function (str, md, env, outTokens) {\n const state = new this.State(str, md, env, outTokens)\n\n this.tokenize(state)\n\n const rules = this.ruler2.getRules('')\n const len = rules.length\n\n for (let i = 0; i < len; i++) {\n rules[i](state)\n }\n}\n\nParserInline.prototype.State = StateInline\n\nexport default ParserInline\n","// Proceess '\\n'\n\nimport { isSpace } from '../common/utils.mjs'\n\nexport default function newline (state, silent) {\n let pos = state.pos\n\n if (state.src.charCodeAt(pos) !== 0x0A/* \\n */) { return false }\n\n const pmax = state.pending.length - 1\n const max = state.posMax\n\n // ' \\n' -> hardbreak\n // Lookup in pending chars is bad practice! Don't copy to other rules!\n // Pending string is stored in concat mode, indexed lookups will cause\n // convertion to flat mode.\n if (!silent) {\n if (pmax >= 0 && state.pending.charCodeAt(pmax) === 0x20) {\n if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 0x20) {\n // Find whitespaces tail of pending chars.\n let ws = pmax - 1\n while (ws >= 1 && state.pending.charCodeAt(ws - 1) === 0x20) ws--\n\n state.pending = state.pending.slice(0, ws)\n state.push('hardbreak', 'br', 0)\n } else {\n state.pending = state.pending.slice(0, -1)\n state.push('softbreak', 'br', 0)\n }\n } else {\n state.push('softbreak', 'br', 0)\n }\n }\n\n pos++\n\n // skip heading spaces for next line\n while (pos < max && isSpace(state.src.charCodeAt(pos))) { pos++ }\n\n state.pos = pos\n return true\n}\n","// Parse backticks\n\nexport default function backtick (state, silent) {\n let pos = state.pos\n const ch = state.src.charCodeAt(pos)\n\n if (ch !== 0x60/* ` */) { return false }\n\n const start = pos\n pos++\n const max = state.posMax\n\n // scan marker length\n while (pos < max && state.src.charCodeAt(pos) === 0x60/* ` */) { pos++ }\n\n const marker = state.src.slice(start, pos)\n const openerLength = marker.length\n\n if (state.backticksScanned && (state.backticks[openerLength] || 0) <= start) {\n if (!silent) state.pending += marker\n state.pos += openerLength\n return true\n }\n\n let matchEnd = pos\n let matchStart\n\n // Nothing found in the cache, scan until the end of the line (or until marker is found)\n while ((matchStart = state.src.indexOf('`', matchEnd)) !== -1) {\n matchEnd = matchStart + 1\n\n // scan marker length\n while (matchEnd < max && state.src.charCodeAt(matchEnd) === 0x60/* ` */) { matchEnd++ }\n\n const closerLength = matchEnd - matchStart\n\n if (closerLength === openerLength) {\n // Found matching closer length.\n if (!silent) {\n const token = state.push('code_inline', 'code', 0)\n token.markup = marker\n token.content = state.src.slice(pos, matchStart)\n .replace(/\\n/g, ' ')\n .replace(/^ (.+) $/, '$1')\n }\n state.pos = matchEnd\n return true\n }\n\n // Some different length found, put it in cache as upper limit of where closer can be found\n state.backticks[closerLength] = matchStart\n }\n\n // Scanned through the end, didn't find anything\n state.backticksScanned = true\n\n if (!silent) state.pending += marker\n state.pos += openerLength\n return true\n}\n","// Process [link]( \"stuff\")\n\nimport { normalizeReference, isSpace } from '../common/utils.mjs'\n\nexport default function link (state, silent) {\n let code, label, res, ref\n let href = ''\n let title = ''\n let start = state.pos\n let parseReference = true\n\n if (state.src.charCodeAt(state.pos) !== 0x5B/* [ */) { return false }\n\n const oldPos = state.pos\n const max = state.posMax\n const labelStart = state.pos + 1\n const labelEnd = state.md.helpers.parseLinkLabel(state, state.pos, true)\n\n // parser failed to find ']', so it's not a valid link\n if (labelEnd < 0) { return false }\n\n let pos = labelEnd + 1\n if (pos < max && state.src.charCodeAt(pos) === 0x28/* ( */) {\n //\n // Inline link\n //\n\n // might have found a valid shortcut link, disable reference parsing\n parseReference = false\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n pos++\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos)\n if (!isSpace(code) && code !== 0x0A) { break }\n }\n if (pos >= max) { return false }\n\n // [link]( \"title\" )\n // ^^^^^^ parsing link destination\n start = pos\n res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax)\n if (res.ok) {\n href = state.md.normalizeLink(res.str)\n if (state.md.validateLink(href)) {\n pos = res.pos\n } else {\n href = ''\n }\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n start = pos\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos)\n if (!isSpace(code) && code !== 0x0A) { break }\n }\n\n // [link]( \"title\" )\n // ^^^^^^^ parsing link title\n res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax)\n if (pos < max && start !== pos && res.ok) {\n title = res.str\n pos = res.pos\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos)\n if (!isSpace(code) && code !== 0x0A) { break }\n }\n }\n }\n\n if (pos >= max || state.src.charCodeAt(pos) !== 0x29/* ) */) {\n // parsing a valid shortcut link failed, fallback to reference\n parseReference = true\n }\n pos++\n }\n\n if (parseReference) {\n //\n // Link reference\n //\n if (typeof state.env.references === 'undefined') { return false }\n\n if (pos < max && state.src.charCodeAt(pos) === 0x5B/* [ */) {\n start = pos + 1\n pos = state.md.helpers.parseLinkLabel(state, pos)\n if (pos >= 0) {\n label = state.src.slice(start, pos++)\n } else {\n pos = labelEnd + 1\n }\n } else {\n pos = labelEnd + 1\n }\n\n // covers label === '' and label === undefined\n // (collapsed reference link and shortcut reference link respectively)\n if (!label) { label = state.src.slice(labelStart, labelEnd) }\n\n ref = state.env.references[normalizeReference(label)]\n if (!ref) {\n state.pos = oldPos\n return false\n }\n href = ref.href\n title = ref.title\n }\n\n //\n // We found the end of the link, and know for a fact it's a valid link;\n // so all that's left to do is to call tokenizer.\n //\n if (!silent) {\n state.pos = labelStart\n state.posMax = labelEnd\n\n const token_o = state.push('link_open', 'a', 1)\n const attrs = [['href', href]]\n token_o.attrs = attrs\n if (title) {\n attrs.push(['title', title])\n }\n\n state.linkLevel++\n state.md.inline.tokenize(state)\n state.linkLevel--\n\n state.push('link_close', 'a', -1)\n }\n\n state.pos = pos\n state.posMax = max\n return true\n}\n","// Process ![image]( \"title\")\n\nimport { normalizeReference, isSpace } from '../common/utils.mjs'\n\nexport default function image (state, silent) {\n let code, content, label, pos, ref, res, title, start\n let href = ''\n const oldPos = state.pos\n const max = state.posMax\n\n if (state.src.charCodeAt(state.pos) !== 0x21/* ! */) { return false }\n if (state.src.charCodeAt(state.pos + 1) !== 0x5B/* [ */) { return false }\n\n const labelStart = state.pos + 2\n const labelEnd = state.md.helpers.parseLinkLabel(state, state.pos + 1, false)\n\n // parser failed to find ']', so it's not a valid link\n if (labelEnd < 0) { return false }\n\n pos = labelEnd + 1\n if (pos < max && state.src.charCodeAt(pos) === 0x28/* ( */) {\n //\n // Inline link\n //\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n pos++\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos)\n if (!isSpace(code) && code !== 0x0A) { break }\n }\n if (pos >= max) { return false }\n\n // [link]( \"title\" )\n // ^^^^^^ parsing link destination\n start = pos\n res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax)\n if (res.ok) {\n href = state.md.normalizeLink(res.str)\n if (state.md.validateLink(href)) {\n pos = res.pos\n } else {\n href = ''\n }\n }\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n start = pos\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos)\n if (!isSpace(code) && code !== 0x0A) { break }\n }\n\n // [link]( \"title\" )\n // ^^^^^^^ parsing link title\n res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax)\n if (pos < max && start !== pos && res.ok) {\n title = res.str\n pos = res.pos\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos)\n if (!isSpace(code) && code !== 0x0A) { break }\n }\n } else {\n title = ''\n }\n\n if (pos >= max || state.src.charCodeAt(pos) !== 0x29/* ) */) {\n state.pos = oldPos\n return false\n }\n pos++\n } else {\n //\n // Link reference\n //\n if (typeof state.env.references === 'undefined') { return false }\n\n if (pos < max && state.src.charCodeAt(pos) === 0x5B/* [ */) {\n start = pos + 1\n pos = state.md.helpers.parseLinkLabel(state, pos)\n if (pos >= 0) {\n label = state.src.slice(start, pos++)\n } else {\n pos = labelEnd + 1\n }\n } else {\n pos = labelEnd + 1\n }\n\n // covers label === '' and label === undefined\n // (collapsed reference link and shortcut reference link respectively)\n if (!label) { label = state.src.slice(labelStart, labelEnd) }\n\n ref = state.env.references[normalizeReference(label)]\n if (!ref) {\n state.pos = oldPos\n return false\n }\n href = ref.href\n title = ref.title\n }\n\n //\n // We found the end of the link, and know for a fact it's a valid link;\n // so all that's left to do is to call tokenizer.\n //\n if (!silent) {\n content = state.src.slice(labelStart, labelEnd)\n\n const tokens = []\n state.md.inline.parse(\n content,\n state.md,\n state.env,\n tokens\n )\n\n const token = state.push('image', 'img', 0)\n const attrs = [['src', href], ['alt', '']]\n token.attrs = attrs\n token.children = tokens\n token.content = content\n\n if (title) {\n attrs.push(['title', title])\n }\n }\n\n state.pos = pos\n state.posMax = max\n return true\n}\n","// Process html tags\n\nimport { HTML_TAG_RE } from '../common/html_re.mjs'\n\nfunction isLinkOpen (str) {\n return /^\\s]/i.test(str)\n}\nfunction isLinkClose (str) {\n return /^<\\/a\\s*>/i.test(str)\n}\n\nfunction isLetter (ch) {\n /* eslint no-bitwise:0 */\n const lc = ch | 0x20 // to lower case\n return (lc >= 0x61/* a */) && (lc <= 0x7a/* z */)\n}\n\nexport default function html_inline (state, silent) {\n if (!state.md.options.html) { return false }\n\n // Check start\n const max = state.posMax\n const pos = state.pos\n if (state.src.charCodeAt(pos) !== 0x3C/* < */ ||\n pos + 2 >= max) {\n return false\n }\n\n // Quick fail on second char\n const ch = state.src.charCodeAt(pos + 1)\n if (ch !== 0x21/* ! */ &&\n ch !== 0x3F/* ? */ &&\n ch !== 0x2F/* / */ &&\n !isLetter(ch)) {\n return false\n }\n\n const match = state.src.slice(pos).match(HTML_TAG_RE)\n if (!match) { return false }\n\n if (!silent) {\n const token = state.push('html_inline', '', 0)\n token.content = match[0]\n\n if (isLinkOpen(token.content)) state.linkLevel++\n if (isLinkClose(token.content)) state.linkLevel--\n }\n state.pos += match[0].length\n return true\n}\n","// Clean up tokens after emphasis and strikethrough postprocessing:\n// merge adjacent text nodes into one and re-calculate all token levels\n//\n// This is necessary because initially emphasis delimiter markers (*, _, ~)\n// are treated as their own separate text tokens. Then emphasis rule either\n// leaves them as text (needed to merge with adjacent text) or turns them\n// into opening/closing tags (which messes up levels inside).\n//\n\nexport default function fragments_join (state) {\n let curr, last\n let level = 0\n const tokens = state.tokens\n const max = state.tokens.length\n\n for (curr = last = 0; curr < max; curr++) {\n // re-calculate levels after emphasis/strikethrough turns some text nodes\n // into opening/closing tags\n if (tokens[curr].nesting < 0) level-- // closing tag\n tokens[curr].level = level\n if (tokens[curr].nesting > 0) level++ // opening tag\n\n if (tokens[curr].type === 'text' &&\n curr + 1 < max &&\n tokens[curr + 1].type === 'text') {\n // collapse two adjacent text nodes\n tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content\n } else {\n if (curr !== last) { tokens[last] = tokens[curr] }\n\n last++\n }\n }\n\n if (curr !== last) {\n tokens.length = last\n }\n}\n","import reFactory from './lib/re.mjs'\n\n//\n// Helpers\n//\n\n// Merge objects\n//\nfunction assign (obj /* from1, from2, from3, ... */) {\n const sources = Array.prototype.slice.call(arguments, 1)\n\n sources.forEach(function (source) {\n if (!source) { return }\n\n Object.keys(source).forEach(function (key) {\n obj[key] = source[key]\n })\n })\n\n return obj\n}\n\nfunction _class (obj) { return Object.prototype.toString.call(obj) }\nfunction isString (obj) { return _class(obj) === '[object String]' }\nfunction isObject (obj) { return _class(obj) === '[object Object]' }\nfunction isRegExp (obj) { return _class(obj) === '[object RegExp]' }\nfunction isFunction (obj) { return _class(obj) === '[object Function]' }\n\nfunction escapeRE (str) { return str.replace(/[.?*+^$[\\]\\\\(){}|-]/g, '\\\\$&') }\n\n//\n\nconst defaultOptions = {\n fuzzyLink: true,\n fuzzyEmail: true,\n fuzzyIP: false\n}\n\nfunction isOptionsObj (obj) {\n return Object.keys(obj || {}).reduce(function (acc, k) {\n /* eslint-disable-next-line no-prototype-builtins */\n return acc || defaultOptions.hasOwnProperty(k)\n }, false)\n}\n\nconst defaultSchemas = {\n 'http:': {\n validate: function (text, pos, self) {\n const tail = text.slice(pos)\n\n if (!self.re.http) {\n // compile lazily, because \"host\"-containing variables can change on tlds update.\n self.re.http = new RegExp(\n '^\\\\/\\\\/' + self.re.src_auth + self.re.src_host_port_strict + self.re.src_path, 'i'\n )\n }\n if (self.re.http.test(tail)) {\n return tail.match(self.re.http)[0].length\n }\n return 0\n }\n },\n 'https:': 'http:',\n 'ftp:': 'http:',\n '//': {\n validate: function (text, pos, self) {\n const tail = text.slice(pos)\n\n if (!self.re.no_http) {\n // compile lazily, because \"host\"-containing variables can change on tlds update.\n self.re.no_http = new RegExp(\n '^' +\n self.re.src_auth +\n // Don't allow single-level domains, because of false positives like '//test'\n // with code comments\n '(?:localhost|(?:(?:' + self.re.src_domain + ')\\\\.)+' + self.re.src_domain_root + ')' +\n self.re.src_port +\n self.re.src_host_terminator +\n self.re.src_path,\n\n 'i'\n )\n }\n\n if (self.re.no_http.test(tail)) {\n // should not be `://` & `///`, that protects from errors in protocol name\n if (pos >= 3 && text[pos - 3] === ':') { return 0 }\n if (pos >= 3 && text[pos - 3] === '/') { return 0 }\n return tail.match(self.re.no_http)[0].length\n }\n return 0\n }\n },\n 'mailto:': {\n validate: function (text, pos, self) {\n const tail = text.slice(pos)\n\n if (!self.re.mailto) {\n self.re.mailto = new RegExp(\n '^' + self.re.src_email_name + '@' + self.re.src_host_strict, 'i'\n )\n }\n if (self.re.mailto.test(tail)) {\n return tail.match(self.re.mailto)[0].length\n }\n return 0\n }\n }\n}\n\n// RE pattern for 2-character tlds (autogenerated by ./support/tlds_2char_gen.js)\n/* eslint-disable-next-line max-len */\nconst tlds_2ch_src_re = 'a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]'\n\n// DON'T try to make PRs with changes. Extend TLDs with LinkifyIt.tlds() instead\nconst tlds_default = 'biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф'.split('|')\n\nfunction resetScanCache (self) {\n self.__index__ = -1\n self.__text_cache__ = ''\n}\n\nfunction createValidator (re) {\n return function (text, pos) {\n const tail = text.slice(pos)\n\n if (re.test(tail)) {\n return tail.match(re)[0].length\n }\n return 0\n }\n}\n\nfunction createNormalizer () {\n return function (match, self) {\n self.normalize(match)\n }\n}\n\n// Schemas compiler. Build regexps.\n//\nfunction compile (self) {\n // Load & clone RE patterns.\n const re = self.re = reFactory(self.__opts__)\n\n // Define dynamic patterns\n const tlds = self.__tlds__.slice()\n\n self.onCompile()\n\n if (!self.__tlds_replaced__) {\n tlds.push(tlds_2ch_src_re)\n }\n tlds.push(re.src_xn)\n\n re.src_tlds = tlds.join('|')\n\n function untpl (tpl) { return tpl.replace('%TLDS%', re.src_tlds) }\n\n re.email_fuzzy = RegExp(untpl(re.tpl_email_fuzzy), 'i')\n re.link_fuzzy = RegExp(untpl(re.tpl_link_fuzzy), 'i')\n re.link_no_ip_fuzzy = RegExp(untpl(re.tpl_link_no_ip_fuzzy), 'i')\n re.host_fuzzy_test = RegExp(untpl(re.tpl_host_fuzzy_test), 'i')\n\n //\n // Compile each schema\n //\n\n const aliases = []\n\n self.__compiled__ = {} // Reset compiled data\n\n function schemaError (name, val) {\n throw new Error('(LinkifyIt) Invalid schema \"' + name + '\": ' + val)\n }\n\n Object.keys(self.__schemas__).forEach(function (name) {\n const val = self.__schemas__[name]\n\n // skip disabled methods\n if (val === null) { return }\n\n const compiled = { validate: null, link: null }\n\n self.__compiled__[name] = compiled\n\n if (isObject(val)) {\n if (isRegExp(val.validate)) {\n compiled.validate = createValidator(val.validate)\n } else if (isFunction(val.validate)) {\n compiled.validate = val.validate\n } else {\n schemaError(name, val)\n }\n\n if (isFunction(val.normalize)) {\n compiled.normalize = val.normalize\n } else if (!val.normalize) {\n compiled.normalize = createNormalizer()\n } else {\n schemaError(name, val)\n }\n\n return\n }\n\n if (isString(val)) {\n aliases.push(name)\n return\n }\n\n schemaError(name, val)\n })\n\n //\n // Compile postponed aliases\n //\n\n aliases.forEach(function (alias) {\n if (!self.__compiled__[self.__schemas__[alias]]) {\n // Silently fail on missed schemas to avoid errons on disable.\n // schemaError(alias, self.__schemas__[alias]);\n return\n }\n\n self.__compiled__[alias].validate =\n self.__compiled__[self.__schemas__[alias]].validate\n self.__compiled__[alias].normalize =\n self.__compiled__[self.__schemas__[alias]].normalize\n })\n\n //\n // Fake record for guessed links\n //\n self.__compiled__[''] = { validate: null, normalize: createNormalizer() }\n\n //\n // Build schema condition\n //\n const slist = Object.keys(self.__compiled__)\n .filter(function (name) {\n // Filter disabled & fake schemas\n return name.length > 0 && self.__compiled__[name]\n })\n .map(escapeRE)\n .join('|')\n // (?!_) cause 1.5x slowdown\n self.re.schema_test = RegExp('(^|(?!_)(?:[><\\uff5c]|' + re.src_ZPCc + '))(' + slist + ')', 'i')\n self.re.schema_search = RegExp('(^|(?!_)(?:[><\\uff5c]|' + re.src_ZPCc + '))(' + slist + ')', 'ig')\n self.re.schema_at_start = RegExp('^' + self.re.schema_search.source, 'i')\n\n self.re.pretest = RegExp(\n '(' + self.re.schema_test.source + ')|(' + self.re.host_fuzzy_test.source + ')|@',\n 'i'\n )\n\n //\n // Cleanup\n //\n\n resetScanCache(self)\n}\n\n/**\n * class Match\n *\n * Match result. Single element of array, returned by [[LinkifyIt#match]]\n **/\nfunction Match (self, shift) {\n const start = self.__index__\n const end = self.__last_index__\n const text = self.__text_cache__.slice(start, end)\n\n /**\n * Match#schema -> String\n *\n * Prefix (protocol) for matched string.\n **/\n this.schema = self.__schema__.toLowerCase()\n /**\n * Match#index -> Number\n *\n * First position of matched string.\n **/\n this.index = start + shift\n /**\n * Match#lastIndex -> Number\n *\n * Next position after matched string.\n **/\n this.lastIndex = end + shift\n /**\n * Match#raw -> String\n *\n * Matched string.\n **/\n this.raw = text\n /**\n * Match#text -> String\n *\n * Notmalized text of matched string.\n **/\n this.text = text\n /**\n * Match#url -> String\n *\n * Normalized url of matched string.\n **/\n this.url = text\n}\n\nfunction createMatch (self, shift) {\n const match = new Match(self, shift)\n\n self.__compiled__[match.schema].normalize(match, self)\n\n return match\n}\n\n/**\n * class LinkifyIt\n **/\n\n/**\n * new LinkifyIt(schemas, options)\n * - schemas (Object): Optional. Additional schemas to validate (prefix/validator)\n * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false }\n *\n * Creates new linkifier instance with optional additional schemas.\n * Can be called without `new` keyword for convenience.\n *\n * By default understands:\n *\n * - `http(s)://...` , `ftp://...`, `mailto:...` & `//...` links\n * - \"fuzzy\" links and emails (example.com, foo@bar.com).\n *\n * `schemas` is an object, where each key/value describes protocol/rule:\n *\n * - __key__ - link prefix (usually, protocol name with `:` at the end, `skype:`\n * for example). `linkify-it` makes shure that prefix is not preceeded with\n * alphanumeric char and symbols. Only whitespaces and punctuation allowed.\n * - __value__ - rule to check tail after link prefix\n * - _String_ - just alias to existing rule\n * - _Object_\n * - _validate_ - validator function (should return matched length on success),\n * or `RegExp`.\n * - _normalize_ - optional function to normalize text & url of matched result\n * (for example, for @twitter mentions).\n *\n * `options`:\n *\n * - __fuzzyLink__ - recognige URL-s without `http(s):` prefix. Default `true`.\n * - __fuzzyIP__ - allow IPs in fuzzy links above. Can conflict with some texts\n * like version numbers. Default `false`.\n * - __fuzzyEmail__ - recognize emails without `mailto:` prefix.\n *\n **/\nfunction LinkifyIt (schemas, options) {\n if (!(this instanceof LinkifyIt)) {\n return new LinkifyIt(schemas, options)\n }\n\n if (!options) {\n if (isOptionsObj(schemas)) {\n options = schemas\n schemas = {}\n }\n }\n\n this.__opts__ = assign({}, defaultOptions, options)\n\n // Cache last tested result. Used to skip repeating steps on next `match` call.\n this.__index__ = -1\n this.__last_index__ = -1 // Next scan position\n this.__schema__ = ''\n this.__text_cache__ = ''\n\n this.__schemas__ = assign({}, defaultSchemas, schemas)\n this.__compiled__ = {}\n\n this.__tlds__ = tlds_default\n this.__tlds_replaced__ = false\n\n this.re = {}\n\n compile(this)\n}\n\n/** chainable\n * LinkifyIt#add(schema, definition)\n * - schema (String): rule name (fixed pattern prefix)\n * - definition (String|RegExp|Object): schema definition\n *\n * Add new rule definition. See constructor description for details.\n **/\nLinkifyIt.prototype.add = function add (schema, definition) {\n this.__schemas__[schema] = definition\n compile(this)\n return this\n}\n\n/** chainable\n * LinkifyIt#set(options)\n * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false }\n *\n * Set recognition options for links without schema.\n **/\nLinkifyIt.prototype.set = function set (options) {\n this.__opts__ = assign(this.__opts__, options)\n return this\n}\n\n/**\n * LinkifyIt#test(text) -> Boolean\n *\n * Searches linkifiable pattern and returns `true` on success or `false` on fail.\n **/\nLinkifyIt.prototype.test = function test (text) {\n // Reset scan cache\n this.__text_cache__ = text\n this.__index__ = -1\n\n if (!text.length) { return false }\n\n let m, ml, me, len, shift, next, re, tld_pos, at_pos\n\n // try to scan for link with schema - that's the most simple rule\n if (this.re.schema_test.test(text)) {\n re = this.re.schema_search\n re.lastIndex = 0\n while ((m = re.exec(text)) !== null) {\n len = this.testSchemaAt(text, m[2], re.lastIndex)\n if (len) {\n this.__schema__ = m[2]\n this.__index__ = m.index + m[1].length\n this.__last_index__ = m.index + m[0].length + len\n break\n }\n }\n }\n\n if (this.__opts__.fuzzyLink && this.__compiled__['http:']) {\n // guess schemaless links\n tld_pos = text.search(this.re.host_fuzzy_test)\n if (tld_pos >= 0) {\n // if tld is located after found link - no need to check fuzzy pattern\n if (this.__index__ < 0 || tld_pos < this.__index__) {\n if ((ml = text.match(this.__opts__.fuzzyIP ? this.re.link_fuzzy : this.re.link_no_ip_fuzzy)) !== null) {\n shift = ml.index + ml[1].length\n\n if (this.__index__ < 0 || shift < this.__index__) {\n this.__schema__ = ''\n this.__index__ = shift\n this.__last_index__ = ml.index + ml[0].length\n }\n }\n }\n }\n }\n\n if (this.__opts__.fuzzyEmail && this.__compiled__['mailto:']) {\n // guess schemaless emails\n at_pos = text.indexOf('@')\n if (at_pos >= 0) {\n // We can't skip this check, because this cases are possible:\n // 192.168.1.1@gmail.com, my.in@example.com\n if ((me = text.match(this.re.email_fuzzy)) !== null) {\n shift = me.index + me[1].length\n next = me.index + me[0].length\n\n if (this.__index__ < 0 || shift < this.__index__ ||\n (shift === this.__index__ && next > this.__last_index__)) {\n this.__schema__ = 'mailto:'\n this.__index__ = shift\n this.__last_index__ = next\n }\n }\n }\n }\n\n return this.__index__ >= 0\n}\n\n/**\n * LinkifyIt#pretest(text) -> Boolean\n *\n * Very quick check, that can give false positives. Returns true if link MAY BE\n * can exists. Can be used for speed optimization, when you need to check that\n * link NOT exists.\n **/\nLinkifyIt.prototype.pretest = function pretest (text) {\n return this.re.pretest.test(text)\n}\n\n/**\n * LinkifyIt#testSchemaAt(text, name, position) -> Number\n * - text (String): text to scan\n * - name (String): rule (schema) name\n * - position (Number): text offset to check from\n *\n * Similar to [[LinkifyIt#test]] but checks only specific protocol tail exactly\n * at given position. Returns length of found pattern (0 on fail).\n **/\nLinkifyIt.prototype.testSchemaAt = function testSchemaAt (text, schema, pos) {\n // If not supported schema check requested - terminate\n if (!this.__compiled__[schema.toLowerCase()]) {\n return 0\n }\n return this.__compiled__[schema.toLowerCase()].validate(text, pos, this)\n}\n\n/**\n * LinkifyIt#match(text) -> Array|null\n *\n * Returns array of found link descriptions or `null` on fail. We strongly\n * recommend to use [[LinkifyIt#test]] first, for best speed.\n *\n * ##### Result match description\n *\n * - __schema__ - link schema, can be empty for fuzzy links, or `//` for\n * protocol-neutral links.\n * - __index__ - offset of matched text\n * - __lastIndex__ - index of next char after mathch end\n * - __raw__ - matched text\n * - __text__ - normalized text\n * - __url__ - link, generated from matched text\n **/\nLinkifyIt.prototype.match = function match (text) {\n const result = []\n let shift = 0\n\n // Try to take previous element from cache, if .test() called before\n if (this.__index__ >= 0 && this.__text_cache__ === text) {\n result.push(createMatch(this, shift))\n shift = this.__last_index__\n }\n\n // Cut head if cache was used\n let tail = shift ? text.slice(shift) : text\n\n // Scan string until end reached\n while (this.test(tail)) {\n result.push(createMatch(this, shift))\n\n tail = tail.slice(this.__last_index__)\n shift += this.__last_index__\n }\n\n if (result.length) {\n return result\n }\n\n return null\n}\n\n/**\n * LinkifyIt#matchAtStart(text) -> Match|null\n *\n * Returns fully-formed (not fuzzy) link if it starts at the beginning\n * of the string, and null otherwise.\n **/\nLinkifyIt.prototype.matchAtStart = function matchAtStart (text) {\n // Reset scan cache\n this.__text_cache__ = text\n this.__index__ = -1\n\n if (!text.length) return null\n\n const m = this.re.schema_at_start.exec(text)\n if (!m) return null\n\n const len = this.testSchemaAt(text, m[2], m[0].length)\n if (!len) return null\n\n this.__schema__ = m[2]\n this.__index__ = m.index + m[1].length\n this.__last_index__ = m.index + m[0].length + len\n\n return createMatch(this, 0)\n}\n\n/** chainable\n * LinkifyIt#tlds(list [, keepOld]) -> this\n * - list (Array): list of tlds\n * - keepOld (Boolean): merge with current list if `true` (`false` by default)\n *\n * Load (or merge) new tlds list. Those are user for fuzzy links (without prefix)\n * to avoid false positives. By default this algorythm used:\n *\n * - hostname with any 2-letter root zones are ok.\n * - biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф\n * are ok.\n * - encoded (`xn--...`) root zones are ok.\n *\n * If list is replaced, then exact match for 2-chars root zones will be checked.\n **/\nLinkifyIt.prototype.tlds = function tlds (list, keepOld) {\n list = Array.isArray(list) ? list : [list]\n\n if (!keepOld) {\n this.__tlds__ = list.slice()\n this.__tlds_replaced__ = true\n compile(this)\n return this\n }\n\n this.__tlds__ = this.__tlds__.concat(list)\n .sort()\n .filter(function (el, idx, arr) {\n return el !== arr[idx - 1]\n })\n .reverse()\n\n compile(this)\n return this\n}\n\n/**\n * LinkifyIt#normalize(match)\n *\n * Default normalizer (if schema does not define it's own).\n **/\nLinkifyIt.prototype.normalize = function normalize (match) {\n // Do minimal possible changes by default. Need to collect feedback prior\n // to move forward https://github.com/markdown-it/linkify-it/issues/1\n\n if (!match.schema) { match.url = 'http://' + match.url }\n\n if (match.schema === 'mailto:' && !/^mailto:/i.test(match.url)) {\n match.url = 'mailto:' + match.url\n }\n}\n\n/**\n * LinkifyIt#onCompile()\n *\n * Override to modify basic RegExp-s.\n **/\nLinkifyIt.prototype.onCompile = function onCompile () {\n}\n\nexport default LinkifyIt\n","import { Any, Cc, Z, P } from 'uc.micro'\n\nexport default function (opts) {\n const re = {}\n opts = opts || {}\n\n re.src_Any = Any.source\n re.src_Cc = Cc.source\n re.src_Z = Z.source\n re.src_P = P.source\n\n // \\p{\\Z\\P\\Cc\\CF} (white spaces + control + format + punctuation)\n re.src_ZPCc = [re.src_Z, re.src_P, re.src_Cc].join('|')\n\n // \\p{\\Z\\Cc} (white spaces + control)\n re.src_ZCc = [re.src_Z, re.src_Cc].join('|')\n\n // Experimental. List of chars, completely prohibited in links\n // because can separate it from other part of text\n const text_separators = '[><\\uff5c]'\n\n // All possible word characters (everything without punctuation, spaces & controls)\n // Defined via punctuation & spaces to save space\n // Should be something like \\p{\\L\\N\\S\\M} (\\w but without `_`)\n re.src_pseudo_letter = '(?:(?!' + text_separators + '|' + re.src_ZPCc + ')' + re.src_Any + ')'\n // The same as abothe but without [0-9]\n // var src_pseudo_letter_non_d = '(?:(?![0-9]|' + src_ZPCc + ')' + src_Any + ')';\n\n re.src_ip4 =\n\n '(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'\n\n // Prohibit any of \"@/[]()\" in user/pass to avoid wrong domain fetch.\n re.src_auth = '(?:(?:(?!' + re.src_ZCc + '|[@/\\\\[\\\\]()]).)+@)?'\n\n re.src_port =\n\n '(?::(?:6(?:[0-4]\\\\d{3}|5(?:[0-4]\\\\d{2}|5(?:[0-2]\\\\d|3[0-5])))|[1-5]?\\\\d{1,4}))?'\n\n re.src_host_terminator =\n\n '(?=$|' + text_separators + '|' + re.src_ZPCc + ')' +\n '(?!' + (opts['---'] ? '-(?!--)|' : '-|') + '_|:\\\\d|\\\\.-|\\\\.(?!$|' + re.src_ZPCc + '))'\n\n re.src_path =\n\n '(?:' +\n '[/?#]' +\n '(?:' +\n '(?!' + re.src_ZCc + '|' + text_separators + '|[()[\\\\]{}.,\"\\'?!\\\\-;]).|' +\n '\\\\[(?:(?!' + re.src_ZCc + '|\\\\]).)*\\\\]|' +\n '\\\\((?:(?!' + re.src_ZCc + '|[)]).)*\\\\)|' +\n '\\\\{(?:(?!' + re.src_ZCc + '|[}]).)*\\\\}|' +\n '\\\\\"(?:(?!' + re.src_ZCc + '|[\"]).)+\\\\\"|' +\n \"\\\\'(?:(?!\" + re.src_ZCc + \"|[']).)+\\\\'|\" +\n\n // allow `I'm_king` if no pair found\n \"\\\\'(?=\" + re.src_pseudo_letter + '|[-])|' +\n\n // google has many dots in \"google search\" links (#66, #81).\n // github has ... in commit range links,\n // Restrict to\n // - english\n // - percent-encoded\n // - parts of file path\n // - params separator\n // until more examples found.\n '\\\\.{2,}[a-zA-Z0-9%/&]|' +\n\n '\\\\.(?!' + re.src_ZCc + '|[.]|$)|' +\n (opts['---']\n ? '\\\\-(?!--(?:[^-]|$))(?:-*)|' // `---` => long dash, terminate\n : '\\\\-+|'\n ) +\n // allow `,,,` in paths\n ',(?!' + re.src_ZCc + '|$)|' +\n\n // allow `;` if not followed by space-like char\n ';(?!' + re.src_ZCc + '|$)|' +\n\n // allow `!!!` in paths, but not at the end\n '\\\\!+(?!' + re.src_ZCc + '|[!]|$)|' +\n\n '\\\\?(?!' + re.src_ZCc + '|[?]|$)' +\n ')+' +\n '|\\\\/' +\n ')?'\n\n // Allow anything in markdown spec, forbid quote (\") at the first position\n // because emails enclosed in quotes are far more common\n re.src_email_name =\n\n '[\\\\-;:&=\\\\+\\\\$,\\\\.a-zA-Z0-9_][\\\\-;:&=\\\\+\\\\$,\\\\\"\\\\.a-zA-Z0-9_]*'\n\n re.src_xn =\n\n 'xn--[a-z0-9\\\\-]{1,59}'\n\n // More to read about domain names\n // http://serverfault.com/questions/638260/\n\n re.src_domain_root =\n\n // Allow letters & digits (http://test1)\n '(?:' +\n re.src_xn +\n '|' +\n re.src_pseudo_letter + '{1,63}' +\n ')'\n\n re.src_domain =\n\n '(?:' +\n re.src_xn +\n '|' +\n '(?:' + re.src_pseudo_letter + ')' +\n '|' +\n '(?:' + re.src_pseudo_letter + '(?:-|' + re.src_pseudo_letter + '){0,61}' + re.src_pseudo_letter + ')' +\n ')'\n\n re.src_host =\n\n '(?:' +\n // Don't need IP check, because digits are already allowed in normal domain names\n // src_ip4 +\n // '|' +\n '(?:(?:(?:' + re.src_domain + ')\\\\.)*' + re.src_domain/* _root */ + ')' +\n ')'\n\n re.tpl_host_fuzzy =\n\n '(?:' +\n re.src_ip4 +\n '|' +\n '(?:(?:(?:' + re.src_domain + ')\\\\.)+(?:%TLDS%))' +\n ')'\n\n re.tpl_host_no_ip_fuzzy =\n\n '(?:(?:(?:' + re.src_domain + ')\\\\.)+(?:%TLDS%))'\n\n re.src_host_strict =\n\n re.src_host + re.src_host_terminator\n\n re.tpl_host_fuzzy_strict =\n\n re.tpl_host_fuzzy + re.src_host_terminator\n\n re.src_host_port_strict =\n\n re.src_host + re.src_port + re.src_host_terminator\n\n re.tpl_host_port_fuzzy_strict =\n\n re.tpl_host_fuzzy + re.src_port + re.src_host_terminator\n\n re.tpl_host_port_no_ip_fuzzy_strict =\n\n re.tpl_host_no_ip_fuzzy + re.src_port + re.src_host_terminator\n\n //\n // Main rules\n //\n\n // Rude test fuzzy links by host, for quick deny\n re.tpl_host_fuzzy_test =\n\n 'localhost|www\\\\.|\\\\.\\\\d{1,3}\\\\.|(?:\\\\.(?:%TLDS%)(?:' + re.src_ZPCc + '|>|$))'\n\n re.tpl_email_fuzzy =\n\n '(^|' + text_separators + '|\"|\\\\(|' + re.src_ZCc + ')' +\n '(' + re.src_email_name + '@' + re.tpl_host_fuzzy_strict + ')'\n\n re.tpl_link_fuzzy =\n // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n // but can start with > (markdown blockquote)\n '(^|(?![.:/\\\\-_@])(?:[$+<=>^`|\\uff5c]|' + re.src_ZPCc + '))' +\n '((?![$+<=>^`|\\uff5c])' + re.tpl_host_port_fuzzy_strict + re.src_path + ')'\n\n re.tpl_link_no_ip_fuzzy =\n // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n // but can start with > (markdown blockquote)\n '(^|(?![.:/\\\\-_@])(?:[$+<=>^`|\\uff5c]|' + re.src_ZPCc + '))' +\n '((?![$+<=>^`|\\uff5c])' + re.tpl_host_port_no_ip_fuzzy_strict + re.src_path + ')'\n\n return re\n}\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7F]/; // Note: U+007F DEL is excluded too.\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, callback) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = callback(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {String} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(domain, callback) {\n\tconst parts = domain.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tdomain = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tdomain = domain.replace(regexSeparators, '\\x2E');\n\tconst labels = domain.split('.');\n\tconst encoded = map(labels, callback).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see \n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = codePoints => String.fromCodePoint(...codePoints);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint >= 0x30 && codePoint < 0x3A) {\n\t\treturn 26 + (codePoint - 0x30);\n\t}\n\tif (codePoint >= 0x41 && codePoint < 0x5B) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint >= 0x61 && codePoint < 0x7B) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tconst oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\t\t\tif (digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tconst inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tconst basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue === n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.3.1',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see \n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport { ucs2decode, ucs2encode, decode, encode, toASCII, toUnicode };\nexport default punycode;\n","// Main parser class\n\nimport * as utils from './common/utils.mjs'\nimport * as helpers from './helpers/index.mjs'\nimport Renderer from './renderer.mjs'\nimport ParserCore from './parser_core.mjs'\nimport ParserBlock from './parser_block.mjs'\nimport ParserInline from './parser_inline.mjs'\nimport LinkifyIt from 'linkify-it'\nimport * as mdurl from 'mdurl'\nimport punycode from 'punycode.js'\n\nimport cfg_default from './presets/default.mjs'\nimport cfg_zero from './presets/zero.mjs'\nimport cfg_commonmark from './presets/commonmark.mjs'\n\nconst config = {\n default: cfg_default,\n zero: cfg_zero,\n commonmark: cfg_commonmark\n}\n\n//\n// This validator can prohibit more than really needed to prevent XSS. It's a\n// tradeoff to keep code simple and to be secure by default.\n//\n// If you need different setup - override validator method as you wish. Or\n// replace it with dummy function and use external sanitizer.\n//\n\nconst BAD_PROTO_RE = /^(vbscript|javascript|file|data):/\nconst GOOD_DATA_RE = /^data:image\\/(gif|png|jpeg|webp);/\n\nfunction validateLink (url) {\n // url should be normalized at this point, and existing entities are decoded\n const str = url.trim().toLowerCase()\n\n return BAD_PROTO_RE.test(str) ? GOOD_DATA_RE.test(str) : true\n}\n\nconst RECODE_HOSTNAME_FOR = ['http:', 'https:', 'mailto:']\n\nfunction normalizeLink (url) {\n const parsed = mdurl.parse(url, true)\n\n if (parsed.hostname) {\n // Encode hostnames in urls like:\n // `http://host/`, `https://host/`, `mailto:user@host`, `//host/`\n //\n // We don't encode unknown schemas, because it's likely that we encode\n // something we shouldn't (e.g. `skype:name` treated as `skype:host`)\n //\n if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {\n try {\n parsed.hostname = punycode.toASCII(parsed.hostname)\n } catch (er) { /**/ }\n }\n }\n\n return mdurl.encode(mdurl.format(parsed))\n}\n\nfunction normalizeLinkText (url) {\n const parsed = mdurl.parse(url, true)\n\n if (parsed.hostname) {\n // Encode hostnames in urls like:\n // `http://host/`, `https://host/`, `mailto:user@host`, `//host/`\n //\n // We don't encode unknown schemas, because it's likely that we encode\n // something we shouldn't (e.g. `skype:name` treated as `skype:host`)\n //\n if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {\n try {\n parsed.hostname = punycode.toUnicode(parsed.hostname)\n } catch (er) { /**/ }\n }\n }\n\n // add '%' to exclude list because of https://github.com/markdown-it/markdown-it/issues/720\n return mdurl.decode(mdurl.format(parsed), mdurl.decode.defaultChars + '%')\n}\n\n/**\n * class MarkdownIt\n *\n * Main parser/renderer class.\n *\n * ##### Usage\n *\n * ```javascript\n * // node.js, \"classic\" way:\n * var MarkdownIt = require('markdown-it'),\n * md = new MarkdownIt();\n * var result = md.render('# markdown-it rulezz!');\n *\n * // node.js, the same, but with sugar:\n * var md = require('markdown-it')();\n * var result = md.render('# markdown-it rulezz!');\n *\n * // browser without AMD, added to \"window\" on script load\n * // Note, there are no dash.\n * var md = window.markdownit();\n * var result = md.render('# markdown-it rulezz!');\n * ```\n *\n * Single line rendering, without paragraph wrap:\n *\n * ```javascript\n * var md = require('markdown-it')();\n * var result = md.renderInline('__markdown-it__ rulezz!');\n * ```\n **/\n\n/**\n * new MarkdownIt([presetName, options])\n * - presetName (String): optional, `commonmark` / `zero`\n * - options (Object)\n *\n * Creates parser instanse with given config. Can be called without `new`.\n *\n * ##### presetName\n *\n * MarkdownIt provides named presets as a convenience to quickly\n * enable/disable active syntax rules and options for common use cases.\n *\n * - [\"commonmark\"](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/commonmark.js) -\n * configures parser to strict [CommonMark](http://commonmark.org/) mode.\n * - [default](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/default.js) -\n * similar to GFM, used when no preset name given. Enables all available rules,\n * but still without html, typographer & autolinker.\n * - [\"zero\"](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/zero.js) -\n * all rules disabled. Useful to quickly setup your config via `.enable()`.\n * For example, when you need only `bold` and `italic` markup and nothing else.\n *\n * ##### options:\n *\n * - __html__ - `false`. Set `true` to enable HTML tags in source. Be careful!\n * That's not safe! You may need external sanitizer to protect output from XSS.\n * It's better to extend features via plugins, instead of enabling HTML.\n * - __xhtmlOut__ - `false`. Set `true` to add '/' when closing single tags\n * (`
`). This is needed only for full CommonMark compatibility. In real\n * world you will need HTML output.\n * - __breaks__ - `false`. Set `true` to convert `\\n` in paragraphs into `
`.\n * - __langPrefix__ - `language-`. CSS language class prefix for fenced blocks.\n * Can be useful for external highlighters.\n * - __linkify__ - `false`. Set `true` to autoconvert URL-like text to links.\n * - __typographer__ - `false`. Set `true` to enable [some language-neutral\n * replacement](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/replacements.js) +\n * quotes beautification (smartquotes).\n * - __quotes__ - `“”‘’`, String or Array. Double + single quotes replacement\n * pairs, when typographer enabled and smartquotes on. For example, you can\n * use `'«»„“'` for Russian, `'„“‚‘'` for German, and\n * `['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›']` for French (including nbsp).\n * - __highlight__ - `null`. Highlighter function for fenced code blocks.\n * Highlighter `function (str, lang)` should return escaped HTML. It can also\n * return empty string if the source was not changed and should be escaped\n * externaly. If result starts with ` or ``):\n *\n * ```javascript\n * var hljs = require('highlight.js') // https://highlightjs.org/\n *\n * // Actual default values\n * var md = require('markdown-it')({\n * highlight: function (str, lang) {\n * if (lang && hljs.getLanguage(lang)) {\n * try {\n * return '
' +\n *                hljs.highlight(str, { language: lang, ignoreIllegals: true }).value +\n *                '
';\n * } catch (__) {}\n * }\n *\n * return '
' + md.utils.escapeHtml(str) + '
';\n * }\n * });\n * ```\n *\n **/\nfunction MarkdownIt (presetName, options) {\n if (!(this instanceof MarkdownIt)) {\n return new MarkdownIt(presetName, options)\n }\n\n if (!options) {\n if (!utils.isString(presetName)) {\n options = presetName || {}\n presetName = 'default'\n }\n }\n\n /**\n * MarkdownIt#inline -> ParserInline\n *\n * Instance of [[ParserInline]]. You may need it to add new rules when\n * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n * [[MarkdownIt.enable]].\n **/\n this.inline = new ParserInline()\n\n /**\n * MarkdownIt#block -> ParserBlock\n *\n * Instance of [[ParserBlock]]. You may need it to add new rules when\n * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n * [[MarkdownIt.enable]].\n **/\n this.block = new ParserBlock()\n\n /**\n * MarkdownIt#core -> Core\n *\n * Instance of [[Core]] chain executor. You may need it to add new rules when\n * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n * [[MarkdownIt.enable]].\n **/\n this.core = new ParserCore()\n\n /**\n * MarkdownIt#renderer -> Renderer\n *\n * Instance of [[Renderer]]. Use it to modify output look. Or to add rendering\n * rules for new token types, generated by plugins.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * function myToken(tokens, idx, options, env, self) {\n * //...\n * return result;\n * };\n *\n * md.renderer.rules['my_token'] = myToken\n * ```\n *\n * See [[Renderer]] docs and [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.js).\n **/\n this.renderer = new Renderer()\n\n /**\n * MarkdownIt#linkify -> LinkifyIt\n *\n * [linkify-it](https://github.com/markdown-it/linkify-it) instance.\n * Used by [linkify](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/linkify.js)\n * rule.\n **/\n this.linkify = new LinkifyIt()\n\n /**\n * MarkdownIt#validateLink(url) -> Boolean\n *\n * Link validation function. CommonMark allows too much in links. By default\n * we disable `javascript:`, `vbscript:`, `file:` schemas, and almost all `data:...` schemas\n * except some embedded image types.\n *\n * You can change this behaviour:\n *\n * ```javascript\n * var md = require('markdown-it')();\n * // enable everything\n * md.validateLink = function () { return true; }\n * ```\n **/\n this.validateLink = validateLink\n\n /**\n * MarkdownIt#normalizeLink(url) -> String\n *\n * Function used to encode link url to a machine-readable format,\n * which includes url-encoding, punycode, etc.\n **/\n this.normalizeLink = normalizeLink\n\n /**\n * MarkdownIt#normalizeLinkText(url) -> String\n *\n * Function used to decode link url to a human-readable format`\n **/\n this.normalizeLinkText = normalizeLinkText\n\n // Expose utils & helpers for easy acces from plugins\n\n /**\n * MarkdownIt#utils -> utils\n *\n * Assorted utility functions, useful to write plugins. See details\n * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/common/utils.mjs).\n **/\n this.utils = utils\n\n /**\n * MarkdownIt#helpers -> helpers\n *\n * Link components parser functions, useful to write plugins. See details\n * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/helpers).\n **/\n this.helpers = utils.assign({}, helpers)\n\n this.options = {}\n this.configure(presetName)\n\n if (options) { this.set(options) }\n}\n\n/** chainable\n * MarkdownIt.set(options)\n *\n * Set parser options (in the same format as in constructor). Probably, you\n * will never need it, but you can change options after constructor call.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')()\n * .set({ html: true, breaks: true })\n * .set({ typographer, true });\n * ```\n *\n * __Note:__ To achieve the best possible performance, don't modify a\n * `markdown-it` instance options on the fly. If you need multiple configurations\n * it's best to create multiple instances and initialize each with separate\n * config.\n **/\nMarkdownIt.prototype.set = function (options) {\n utils.assign(this.options, options)\n return this\n}\n\n/** chainable, internal\n * MarkdownIt.configure(presets)\n *\n * Batch load of all options and compenent settings. This is internal method,\n * and you probably will not need it. But if you will - see available presets\n * and data structure [here](https://github.com/markdown-it/markdown-it/tree/master/lib/presets)\n *\n * We strongly recommend to use presets instead of direct config loads. That\n * will give better compatibility with next versions.\n **/\nMarkdownIt.prototype.configure = function (presets) {\n const self = this\n\n if (utils.isString(presets)) {\n const presetName = presets\n presets = config[presetName]\n if (!presets) { throw new Error('Wrong `markdown-it` preset \"' + presetName + '\", check name') }\n }\n\n if (!presets) { throw new Error('Wrong `markdown-it` preset, can\\'t be empty') }\n\n if (presets.options) { self.set(presets.options) }\n\n if (presets.components) {\n Object.keys(presets.components).forEach(function (name) {\n if (presets.components[name].rules) {\n self[name].ruler.enableOnly(presets.components[name].rules)\n }\n if (presets.components[name].rules2) {\n self[name].ruler2.enableOnly(presets.components[name].rules2)\n }\n })\n }\n return this\n}\n\n/** chainable\n * MarkdownIt.enable(list, ignoreInvalid)\n * - list (String|Array): rule name or list of rule names to enable\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable list or rules. It will automatically find appropriate components,\n * containing rules with given names. If rule not found, and `ignoreInvalid`\n * not set - throws exception.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')()\n * .enable(['sub', 'sup'])\n * .disable('smartquotes');\n * ```\n **/\nMarkdownIt.prototype.enable = function (list, ignoreInvalid) {\n let result = []\n\n if (!Array.isArray(list)) { list = [list] }\n\n ['core', 'block', 'inline'].forEach(function (chain) {\n result = result.concat(this[chain].ruler.enable(list, true))\n }, this)\n\n result = result.concat(this.inline.ruler2.enable(list, true))\n\n const missed = list.filter(function (name) { return result.indexOf(name) < 0 })\n\n if (missed.length && !ignoreInvalid) {\n throw new Error('MarkdownIt. Failed to enable unknown rule(s): ' + missed)\n }\n\n return this\n}\n\n/** chainable\n * MarkdownIt.disable(list, ignoreInvalid)\n * - list (String|Array): rule name or list of rule names to disable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * The same as [[MarkdownIt.enable]], but turn specified rules off.\n **/\nMarkdownIt.prototype.disable = function (list, ignoreInvalid) {\n let result = []\n\n if (!Array.isArray(list)) { list = [list] }\n\n ['core', 'block', 'inline'].forEach(function (chain) {\n result = result.concat(this[chain].ruler.disable(list, true))\n }, this)\n\n result = result.concat(this.inline.ruler2.disable(list, true))\n\n const missed = list.filter(function (name) { return result.indexOf(name) < 0 })\n\n if (missed.length && !ignoreInvalid) {\n throw new Error('MarkdownIt. Failed to disable unknown rule(s): ' + missed)\n }\n return this\n}\n\n/** chainable\n * MarkdownIt.use(plugin, params)\n *\n * Load specified plugin with given params into current parser instance.\n * It's just a sugar to call `plugin(md, params)` with curring.\n *\n * ##### Example\n *\n * ```javascript\n * var iterator = require('markdown-it-for-inline');\n * var md = require('markdown-it')()\n * .use(iterator, 'foo_replace', 'text', function (tokens, idx) {\n * tokens[idx].content = tokens[idx].content.replace(/foo/g, 'bar');\n * });\n * ```\n **/\nMarkdownIt.prototype.use = function (plugin /*, params, ... */) {\n const args = [this].concat(Array.prototype.slice.call(arguments, 1))\n plugin.apply(plugin, args)\n return this\n}\n\n/** internal\n * MarkdownIt.parse(src, env) -> Array\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Parse input string and return list of block tokens (special token type\n * \"inline\" will contain list of inline tokens). You should not call this\n * method directly, until you write custom renderer (for example, to produce\n * AST).\n *\n * `env` is used to pass data between \"distributed\" rules and return additional\n * metadata like reference info, needed for the renderer. It also can be used to\n * inject data in specific cases. Usually, you will be ok to pass `{}`,\n * and then pass updated object to renderer.\n **/\nMarkdownIt.prototype.parse = function (src, env) {\n if (typeof src !== 'string') {\n throw new Error('Input data should be a String')\n }\n\n const state = new this.core.State(src, this, env)\n\n this.core.process(state)\n\n return state.tokens\n}\n\n/**\n * MarkdownIt.render(src [, env]) -> String\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Render markdown string into html. It does all magic for you :).\n *\n * `env` can be used to inject additional metadata (`{}` by default).\n * But you will not need it with high probability. See also comment\n * in [[MarkdownIt.parse]].\n **/\nMarkdownIt.prototype.render = function (src, env) {\n env = env || {}\n\n return this.renderer.render(this.parse(src, env), this.options, env)\n}\n\n/** internal\n * MarkdownIt.parseInline(src, env) -> Array\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * The same as [[MarkdownIt.parse]] but skip all block rules. It returns the\n * block tokens list with the single `inline` element, containing parsed inline\n * tokens in `children` property. Also updates `env` object.\n **/\nMarkdownIt.prototype.parseInline = function (src, env) {\n const state = new this.core.State(src, this, env)\n\n state.inlineMode = true\n this.core.process(state)\n\n return state.tokens\n}\n\n/**\n * MarkdownIt.renderInline(src [, env]) -> String\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Similar to [[MarkdownIt.render]] but for single paragraph content. Result\n * will NOT be wrapped into `

` tags.\n **/\nMarkdownIt.prototype.renderInline = function (src, env) {\n env = env || {}\n\n return this.renderer.render(this.parseInline(src, env), this.options, env)\n}\n\nexport default MarkdownIt\n","// markdown-it default options\n\nexport default {\n options: {\n // Enable HTML tags in source\n html: false,\n\n // Use '/' to close single tags (
)\n xhtmlOut: false,\n\n // Convert '\\n' in paragraphs into
\n breaks: false,\n\n // CSS language prefix for fenced blocks\n langPrefix: 'language-',\n\n // autoconvert URL-like texts to links\n linkify: false,\n\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Could be either a String or an Array.\n //\n // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n quotes: '\\u201c\\u201d\\u2018\\u2019', /* “”‘’ */\n\n // Highlighter function. Should return escaped HTML,\n // or '' if the source string is not changed and should be escaped externaly.\n // If result starts with )\n xhtmlOut: false,\n\n // Convert '\\n' in paragraphs into
\n breaks: false,\n\n // CSS language prefix for fenced blocks\n langPrefix: 'language-',\n\n // autoconvert URL-like texts to links\n linkify: false,\n\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Could be either a String or an Array.\n //\n // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n quotes: '\\u201c\\u201d\\u2018\\u2019', /* “”‘’ */\n\n // Highlighter function. Should return escaped HTML,\n // or '' if the source string is not changed and should be escaped externaly.\n // If result starts with )\n xhtmlOut: true,\n\n // Convert '\\n' in paragraphs into
\n breaks: false,\n\n // CSS language prefix for fenced blocks\n langPrefix: 'language-',\n\n // autoconvert URL-like texts to links\n linkify: false,\n\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Could be either a String or an Array.\n //\n // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n quotes: '\\u201c\\u201d\\u2018\\u2019', /* “”‘’ */\n\n // Highlighter function. Should return escaped HTML,\n // or '' if the source string is not changed and should be escaped externaly.\n // If result starts with Emoji mapping.\n//\n// (!) Some patterns skipped, to avoid collisions\n// without increase matcher complicity. Than can change in future.\n//\n// Places to look for more emoticons info:\n//\n// - http://en.wikipedia.org/wiki/List_of_emoticons#Western\n// - https://github.com/wooorm/emoticon/blob/master/Support.md\n// - http://factoryjoe.com/projects/emoticons/\n//\n\n/* eslint-disable key-spacing */\n\nexport default {\n angry: ['>:(', '>:-('],\n blush: [':\")', ':-\")'],\n broken_heart: [' {\n if (options.enabled.indexOf(key) >= 0) acc[key] = emojies[key]\n return acc\n }, {})\n }\n\n // Flatten shortcuts to simple object: { alias: emoji_name }\n const shortcuts = Object.keys(options.shortcuts).reduce((acc, key) => {\n // Skip aliases for filtered emojies, to reduce regexp\n if (!emojies[key]) return acc\n\n if (Array.isArray(options.shortcuts[key])) {\n options.shortcuts[key].forEach(alias => { acc[alias] = key })\n return acc\n }\n\n acc[options.shortcuts[key]] = key\n return acc\n }, {})\n\n const keys = Object.keys(emojies)\n let names\n\n // If no definitions are given, return empty regex to avoid replacements with 'undefined'.\n if (keys.length === 0) {\n names = '^$'\n } else {\n // Compile regexp\n names = keys\n .map(name => { return `:${name}:` })\n .concat(Object.keys(shortcuts))\n .sort()\n .reverse()\n .map(name => { return quoteRE(name) })\n .join('|')\n }\n const scanRE = RegExp(names)\n const replaceRE = RegExp(names, 'g')\n\n return {\n defs: emojies,\n shortcuts,\n scanRE,\n replaceRE\n }\n};\n","// Emojies & shortcuts replacement logic.\n//\n// Note: In theory, it could be faster to parse :smile: in inline chain and\n// leave only shortcuts here. But, who care...\n//\nexport default function create_rule (md, emojies, shortcuts, scanRE, replaceRE) {\n const arrayReplaceAt = md.utils.arrayReplaceAt\n const ucm = md.utils.lib.ucmicro\n const has = md.utils.has\n const ZPCc = new RegExp([ucm.Z.source, ucm.P.source, ucm.Cc.source].join('|'))\n\n function splitTextToken (text, level, Token) {\n let last_pos = 0\n const nodes = []\n\n text.replace(replaceRE, function (match, offset, src) {\n let emoji_name\n // Validate emoji name\n if (has(shortcuts, match)) {\n // replace shortcut with full name\n emoji_name = shortcuts[match]\n\n // Don't allow letters before any shortcut (as in no \":/\" in http://)\n if (offset > 0 && !ZPCc.test(src[offset - 1])) return\n\n // Don't allow letters after any shortcut\n if (offset + match.length < src.length && !ZPCc.test(src[offset + match.length])) {\n return\n }\n } else {\n emoji_name = match.slice(1, -1)\n }\n\n // Add new tokens to pending list\n if (offset > last_pos) {\n const token = new Token('text', '', 0)\n token.content = text.slice(last_pos, offset)\n nodes.push(token)\n }\n\n const token = new Token('emoji', '', 0)\n token.markup = emoji_name\n token.content = emojies[emoji_name]\n nodes.push(token)\n\n last_pos = offset + match.length\n })\n\n if (last_pos < text.length) {\n const token = new Token('text', '', 0)\n token.content = text.slice(last_pos)\n nodes.push(token)\n }\n\n return nodes\n }\n\n return function emoji_replace (state) {\n let token\n const blockTokens = state.tokens\n let autolinkLevel = 0\n\n for (let j = 0, l = blockTokens.length; j < l; j++) {\n if (blockTokens[j].type !== 'inline') { continue }\n let tokens = blockTokens[j].children\n\n // We scan from the end, to keep position when new tags added.\n // Use reversed logic in links start/end match\n for (let i = tokens.length - 1; i >= 0; i--) {\n token = tokens[i]\n\n if (token.type === 'link_open' || token.type === 'link_close') {\n if (token.info === 'auto') { autolinkLevel -= token.nesting }\n }\n\n if (token.type === 'text' && autolinkLevel === 0 && scanRE.test(token.content)) {\n // replace current node\n blockTokens[j].children = tokens = arrayReplaceAt(\n tokens, i, splitTextToken(token.content, token.level, state.Token)\n )\n }\n }\n }\n }\n};\n","const consoleLogger = {\n type: 'logger',\n log(args) {\n this.output('log', args);\n },\n warn(args) {\n this.output('warn', args);\n },\n error(args) {\n this.output('error', args);\n },\n output(type, args) {\n if (console && console[type]) console[type].apply(console, args);\n }\n};\nclass Logger {\n constructor(concreteLogger) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.init(concreteLogger, options);\n }\n init(concreteLogger) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return this.forward(args, 'log', '', true);\n }\n warn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return this.forward(args, 'warn', '', true);\n }\n error() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n return this.forward(args, 'error', '');\n }\n deprecate() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (typeof args[0] === 'string') args[0] = `${prefix}${this.prefix} ${args[0]}`;\n return this.logger[lvl](args);\n }\n create(moduleName) {\n return new Logger(this.logger, {\n ...{\n prefix: `${this.prefix}:${moduleName}:`\n },\n ...this.options\n });\n }\n clone(options) {\n options = options || this.options;\n options.prefix = options.prefix || this.prefix;\n return new Logger(this.logger, options);\n }\n}\nvar baseLogger = new Logger();\n\nclass EventEmitter {\n constructor() {\n this.observers = {};\n }\n on(events, listener) {\n events.split(' ').forEach(event => {\n if (!this.observers[event]) this.observers[event] = new Map();\n const numListeners = this.observers[event].get(listener) || 0;\n this.observers[event].set(listener, numListeners + 1);\n });\n return this;\n }\n off(event, listener) {\n if (!this.observers[event]) return;\n if (!listener) {\n delete this.observers[event];\n return;\n }\n this.observers[event].delete(listener);\n }\n emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n if (this.observers[event]) {\n const cloned = Array.from(this.observers[event].entries());\n cloned.forEach(_ref => {\n let [observer, numTimesAdded] = _ref;\n for (let i = 0; i < numTimesAdded; i++) {\n observer(...args);\n }\n });\n }\n if (this.observers['*']) {\n const cloned = Array.from(this.observers['*'].entries());\n cloned.forEach(_ref2 => {\n let [observer, numTimesAdded] = _ref2;\n for (let i = 0; i < numTimesAdded; i++) {\n observer.apply(observer, [event, ...args]);\n }\n });\n }\n }\n}\n\nfunction defer() {\n let res;\n let rej;\n const promise = new Promise((resolve, reject) => {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n}\nfunction makeString(object) {\n if (object == null) return '';\n return '' + object;\n}\nfunction copy(a, s, t) {\n a.forEach(m => {\n if (s[m]) t[m] = s[m];\n });\n}\nconst lastOfPathSeparatorRegExp = /###/g;\nfunction getLastOfPath(object, path, Empty) {\n function cleanKey(key) {\n return key && key.indexOf('###') > -1 ? key.replace(lastOfPathSeparatorRegExp, '.') : key;\n }\n function canNotTraverseDeeper() {\n return !object || typeof object === 'string';\n }\n const stack = typeof path !== 'string' ? path : path.split('.');\n let stackIndex = 0;\n while (stackIndex < stack.length - 1) {\n if (canNotTraverseDeeper()) return {};\n const key = cleanKey(stack[stackIndex]);\n if (!object[key] && Empty) object[key] = new Empty();\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n ++stackIndex;\n }\n if (canNotTraverseDeeper()) return {};\n return {\n obj: object,\n k: cleanKey(stack[stackIndex])\n };\n}\nfunction setPath(object, path, newValue) {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n if (obj !== undefined || path.length === 1) {\n obj[k] = newValue;\n return;\n }\n let e = path[path.length - 1];\n let p = path.slice(0, path.length - 1);\n let last = getLastOfPath(object, p, Object);\n while (last.obj === undefined && p.length) {\n e = `${p[p.length - 1]}.${e}`;\n p = p.slice(0, p.length - 1);\n last = getLastOfPath(object, p, Object);\n if (last && last.obj && typeof last.obj[`${last.k}.${e}`] !== 'undefined') {\n last.obj = undefined;\n }\n }\n last.obj[`${last.k}.${e}`] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n obj[k] = obj[k] || [];\n if (concat) obj[k] = obj[k].concat(newValue);\n if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n const {\n obj,\n k\n } = getLastOfPath(object, path);\n if (!obj) return undefined;\n return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n const value = getPath(data, key);\n if (value !== undefined) {\n return value;\n }\n return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n for (const prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n return target;\n}\nfunction regexEscape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\nfunction escape(data) {\n if (typeof data === 'string') {\n return data.replace(/[&<>\"'\\/]/g, s => _entityMap[s]);\n }\n return data;\n}\nclass RegExpCache {\n constructor(capacity) {\n this.capacity = capacity;\n this.regExpMap = new Map();\n this.regExpQueue = [];\n }\n getRegExp(pattern) {\n const regExpFromCache = this.regExpMap.get(pattern);\n if (regExpFromCache !== undefined) {\n return regExpFromCache;\n }\n const regExpNew = new RegExp(pattern);\n if (this.regExpQueue.length === this.capacity) {\n this.regExpMap.delete(this.regExpQueue.shift());\n }\n this.regExpMap.set(pattern, regExpNew);\n this.regExpQueue.push(pattern);\n return regExpNew;\n }\n}\nconst chars = [' ', ',', '?', '!', ';'];\nconst looksLikeObjectPathRegExpCache = new RegExpCache(20);\nfunction looksLikeObjectPath(key, nsSeparator, keySeparator) {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n const possibleChars = chars.filter(c => nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0);\n if (possibleChars.length === 0) return true;\n const r = looksLikeObjectPathRegExpCache.getRegExp(`(${possibleChars.map(c => c === '?' ? '\\\\?' : c).join('|')})`);\n let matched = !r.test(key);\n if (!matched) {\n const ki = key.indexOf(keySeparator);\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n return matched;\n}\nfunction deepFind(obj, path) {\n let keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';\n if (!obj) return undefined;\n if (obj[path]) return obj[path];\n const tokens = path.split(keySeparator);\n let current = obj;\n for (let i = 0; i < tokens.length;) {\n if (!current || typeof current !== 'object') {\n return undefined;\n }\n let next;\n let nextPath = '';\n for (let j = i; j < tokens.length; ++j) {\n if (j !== i) {\n nextPath += keySeparator;\n }\n nextPath += tokens[j];\n next = current[nextPath];\n if (next !== undefined) {\n if (['string', 'number', 'boolean'].indexOf(typeof next) > -1 && j < tokens.length - 1) {\n continue;\n }\n i += j - i + 1;\n break;\n }\n }\n current = next;\n }\n return current;\n}\nfunction getCleanedCode(code) {\n if (code && code.indexOf('_') > 0) return code.replace('_', '-');\n return code;\n}\n\nclass ResourceStore extends EventEmitter {\n constructor(data) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n ns: ['translation'],\n defaultNS: 'translation'\n };\n super();\n this.data = data || {};\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n if (this.options.ignoreJSONStructure === undefined) {\n this.options.ignoreJSONStructure = true;\n }\n }\n addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n removeNamespaces(ns) {\n const index = this.options.ns.indexOf(ns);\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n getResource(lng, ns, key) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n const ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n let path;\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n } else {\n path = [lng, ns];\n if (key) {\n if (Array.isArray(key)) {\n path.push(...key);\n } else if (typeof key === 'string' && keySeparator) {\n path.push(...key.split(keySeparator));\n } else {\n path.push(key);\n }\n }\n }\n const result = getPath(this.data, path);\n if (!result && !ns && !key && lng.indexOf('.') > -1) {\n lng = path[0];\n ns = path[1];\n key = path.slice(2).join('.');\n }\n if (result || !ignoreJSONStructure || typeof key !== 'string') return result;\n return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);\n }\n addResource(lng, ns, key, value) {\n let options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n silent: false\n };\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n let path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n addResources(lng, ns, resources) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n silent: false\n };\n for (const m in resources) {\n if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n addResourceBundle(lng, ns, resources, deep, overwrite) {\n let options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n silent: false,\n skipCopy: false\n };\n let path = [lng, ns];\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n let pack = getPath(this.data, path) || {};\n if (!options.skipCopy) resources = JSON.parse(JSON.stringify(resources));\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = {\n ...pack,\n ...resources\n };\n }\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n if (this.options.compatibilityAPI === 'v1') return {\n ...{},\n ...this.getResource(lng, ns)\n };\n return this.getResource(lng, ns);\n }\n getDataByLanguage(lng) {\n return this.data[lng];\n }\n hasLanguageSomeTranslations(lng) {\n const data = this.getDataByLanguage(lng);\n const n = data && Object.keys(data) || [];\n return !!n.find(v => data[v] && Object.keys(data[v]).length > 0);\n }\n toJSON() {\n return this.data;\n }\n}\n\nvar postProcessor = {\n processors: {},\n addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle(processors, value, key, options, translator) {\n processors.forEach(processor => {\n if (this.processors[processor]) value = this.processors[processor].process(value, key, options, translator);\n });\n return value;\n }\n};\n\nconst checkedLoadedFor = {};\nclass Translator extends EventEmitter {\n constructor(services) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super();\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, this);\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n this.logger = baseLogger.create('translator');\n }\n changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n exists(key) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n if (key === undefined || key === null) {\n return false;\n }\n const resolved = this.resolve(key, options);\n return resolved && resolved.res !== undefined;\n }\n extractFromKey(key, options) {\n let nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n let namespaces = options.ns || this.options.defaultNS || [];\n const wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n const seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n const m = key.match(this.interpolator.nestingRegexp);\n if (m && m.length > 0) {\n return {\n key,\n namespaces\n };\n }\n const parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n if (typeof namespaces === 'string') namespaces = [namespaces];\n return {\n key,\n namespaces\n };\n }\n translate(keys, options, lastKey) {\n if (typeof options !== 'object' && this.options.overloadTranslationOptionHandler) {\n options = this.options.overloadTranslationOptionHandler(arguments);\n }\n if (typeof options === 'object') options = {\n ...options\n };\n if (!options) options = {};\n if (keys === undefined || keys === null) return '';\n if (!Array.isArray(keys)) keys = [String(keys)];\n const returnDetails = options.returnDetails !== undefined ? options.returnDetails : this.options.returnDetails;\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n const {\n key,\n namespaces\n } = this.extractFromKey(keys[keys.length - 1], options);\n const namespace = namespaces[namespaces.length - 1];\n const lng = options.lng || this.language;\n const appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n if (lng && lng.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n const nsSeparator = options.nsSeparator || this.options.nsSeparator;\n if (returnDetails) {\n return {\n res: `${namespace}${nsSeparator}${key}`,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(options)\n };\n }\n return `${namespace}${nsSeparator}${key}`;\n }\n if (returnDetails) {\n return {\n res: key,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(options)\n };\n }\n return key;\n }\n const resolved = this.resolve(keys, options);\n let res = resolved && resolved.res;\n const resUsedKey = resolved && resolved.usedKey || key;\n const resExactUsedKey = resolved && resolved.exactUsedKey || key;\n const resType = Object.prototype.toString.apply(res);\n const noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n const joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n const handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n const handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n if (!options.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n const r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, {\n ...options,\n ns: namespaces\n }) : `key '${key} (${this.language})' returned an object instead of string.`;\n if (returnDetails) {\n resolved.res = r;\n resolved.usedParams = this.getUsedParamsDetails(options);\n return resolved;\n }\n return r;\n }\n if (keySeparator) {\n const resTypeIsArray = resType === '[object Array]';\n const copy = resTypeIsArray ? [] : {};\n const newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n for (const m in res) {\n if (Object.prototype.hasOwnProperty.call(res, m)) {\n const deepKey = `${newKeyToUse}${keySeparator}${m}`;\n copy[m] = this.translate(deepKey, {\n ...options,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n if (copy[m] === deepKey) copy[m] = res[m];\n }\n }\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, options, lastKey);\n } else {\n let usedDefault = false;\n let usedKey = false;\n const needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n const hasDefaultValue = Translator.hasDefaultValue(options);\n const defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : '';\n const defaultValueSuffixOrdinalFallback = options.ordinal && needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, {\n ordinal: false\n }) : '';\n const needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && this.pluralResolver.shouldUseIntlApi();\n const defaultValue = needsZeroSuffixLookup && options[`defaultValue${this.options.pluralSeparator}zero`] || options[`defaultValue${defaultValueSuffix}`] || options[`defaultValue${defaultValueSuffixOrdinalFallback}`] || options.defaultValue;\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n const missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n const resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n const updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n if (keySeparator) {\n const fk = this.resolve(key, {\n ...options,\n keySeparator: false\n });\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n let lngs = [];\n const fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (let i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n } else {\n lngs.push(options.lng || this.language);\n }\n const send = (l, k, specificDefaultValue) => {\n const defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n if (this.options.missingKeyHandler) {\n this.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);\n } else if (this.backendConnector && this.backendConnector.saveMissing) {\n this.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);\n }\n this.emit('missingKey', l, namespace, k, res);\n };\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(language => {\n const suffixes = this.pluralResolver.getSuffixes(language, options);\n if (needsZeroSuffixLookup && options[`defaultValue${this.options.pluralSeparator}zero`] && suffixes.indexOf(`${this.options.pluralSeparator}zero`) < 0) {\n suffixes.push(`${this.options.pluralSeparator}zero`);\n }\n suffixes.forEach(suffix => {\n send([language], key + suffix, options[`defaultValue${suffix}`] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n res = this.extendTranslation(res, keys, options, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = `${namespace}:${key}`;\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n if (this.options.compatibilityAPI !== 'v1') {\n res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? `${namespace}:${key}` : key, usedDefault ? res : undefined);\n } else {\n res = this.options.parseMissingKeyHandler(res);\n }\n }\n }\n if (returnDetails) {\n resolved.res = res;\n resolved.usedParams = this.getUsedParamsDetails(options);\n return resolved;\n }\n return res;\n }\n extendTranslation(res, key, options, resolved, lastKey) {\n var _this = this;\n if (this.i18nFormat && this.i18nFormat.parse) {\n res = this.i18nFormat.parse(res, {\n ...this.options.interpolation.defaultVariables,\n ...options\n }, options.lng || this.language || resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved\n });\n } else if (!options.skipInterpolation) {\n if (options.interpolation) this.interpolator.init({\n ...options,\n ...{\n interpolation: {\n ...this.options.interpolation,\n ...options.interpolation\n }\n }\n });\n const skipOnVariables = typeof res === 'string' && (options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n let nestBef;\n if (skipOnVariables) {\n const nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n let data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n if (this.options.interpolation.defaultVariables) data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n if (skipOnVariables) {\n const na = res.match(this.interpolator.nestingRegexp);\n const nestAft = na && na.length;\n if (nestBef < nestAft) options.nest = false;\n }\n if (!options.lng && this.options.compatibilityAPI !== 'v1' && resolved && resolved.res) options.lng = resolved.usedLng;\n if (options.nest !== false) res = this.interpolator.nest(res, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (lastKey && lastKey[0] === args[0] && !options.context) {\n _this.logger.warn(`It seems you are nesting recursively key: ${args[0]} in key: ${key[0]}`);\n return null;\n }\n return _this.translate(...args, key);\n }, options);\n if (options.interpolation) this.interpolator.reset();\n }\n const postProcess = options.postProcess || this.options.postProcess;\n const postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? {\n i18nResolved: {\n ...resolved,\n usedParams: this.getUsedParamsDetails(options)\n },\n ...options\n } : options, this);\n }\n return res;\n }\n resolve(keys) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let found;\n let usedKey;\n let exactUsedKey;\n let usedLng;\n let usedNS;\n if (typeof keys === 'string') keys = [keys];\n keys.forEach(k => {\n if (this.isValidLookup(found)) return;\n const extracted = this.extractFromKey(k, options);\n const key = extracted.key;\n usedKey = key;\n let namespaces = extracted.namespaces;\n if (this.options.fallbackNS) namespaces = namespaces.concat(this.options.fallbackNS);\n const needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n const needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && this.pluralResolver.shouldUseIntlApi();\n const needsContextHandling = options.context !== undefined && (typeof options.context === 'string' || typeof options.context === 'number') && options.context !== '';\n const codes = options.lngs ? options.lngs : this.languageUtils.toResolveHierarchy(options.lng || this.language, options.fallbackLng);\n namespaces.forEach(ns => {\n if (this.isValidLookup(found)) return;\n usedNS = ns;\n if (!checkedLoadedFor[`${codes[0]}-${ns}`] && this.utils && this.utils.hasLoadedNamespace && !this.utils.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[`${codes[0]}-${ns}`] = true;\n this.logger.warn(`key \"${usedKey}\" for languages \"${codes.join(', ')}\" won't get resolved as namespace \"${usedNS}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n codes.forEach(code => {\n if (this.isValidLookup(found)) return;\n usedLng = code;\n const finalKeys = [key];\n if (this.i18nFormat && this.i18nFormat.addLookupKeys) {\n this.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n } else {\n let pluralSuffix;\n if (needsPluralHandling) pluralSuffix = this.pluralResolver.getSuffix(code, options.count, options);\n const zeroSuffix = `${this.options.pluralSeparator}zero`;\n const ordinalPrefix = `${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;\n if (needsPluralHandling) {\n finalKeys.push(key + pluralSuffix);\n if (options.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n finalKeys.push(key + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n if (needsContextHandling) {\n const contextKey = `${key}${this.options.contextSeparator}${options.context}`;\n finalKeys.push(contextKey);\n if (needsPluralHandling) {\n finalKeys.push(contextKey + pluralSuffix);\n if (options.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n finalKeys.push(contextKey + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n let possibleKey;\n while (possibleKey = finalKeys.pop()) {\n if (!this.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = this.getResource(code, ns, possibleKey, options);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey,\n exactUsedKey,\n usedLng,\n usedNS\n };\n }\n isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n getResource(code, ns, key) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n getUsedParamsDetails() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const optionsKeys = ['defaultValue', 'ordinal', 'context', 'replace', 'lng', 'lngs', 'fallbackLng', 'ns', 'keySeparator', 'nsSeparator', 'returnObjects', 'returnDetails', 'joinArrays', 'postProcess', 'interpolation'];\n const useOptionsReplaceForData = options.replace && typeof options.replace !== 'string';\n let data = useOptionsReplaceForData ? options.replace : options;\n if (useOptionsReplaceForData && typeof options.count !== 'undefined') {\n data.count = options.count;\n }\n if (this.options.interpolation.defaultVariables) {\n data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n }\n if (!useOptionsReplaceForData) {\n data = {\n ...data\n };\n for (const key of optionsKeys) {\n delete data[key];\n }\n }\n return data;\n }\n static hasDefaultValue(options) {\n const prefix = 'defaultValue';\n for (const option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n return false;\n }\n}\n\nfunction capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\nclass LanguageUtil {\n constructor(options) {\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n getScriptPartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || code.indexOf('-') < 0) return null;\n const p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n getLanguagePartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || code.indexOf('-') < 0) return code;\n const p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n formatLanguageCode(code) {\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n const specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n let p = code.split('-');\n if (this.options.lowerCaseLng) {\n p = p.map(part => part.toLowerCase());\n } else if (p.length === 2) {\n p[0] = p[0].toLowerCase();\n p[1] = p[1].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n } else if (p.length === 3) {\n p[0] = p[0].toLowerCase();\n if (p[1].length === 2) p[1] = p[1].toUpperCase();\n if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n }\n return p.join('-');\n }\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n getBestMatchFromCodes(codes) {\n if (!codes) return null;\n let found;\n codes.forEach(code => {\n if (found) return;\n const cleanedLng = this.formatLanguageCode(code);\n if (!this.options.supportedLngs || this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n if (!found && this.options.supportedLngs) {\n codes.forEach(code => {\n if (found) return;\n const lngOnly = this.getLanguagePartFromCode(code);\n if (this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = this.options.supportedLngs.find(supportedLng => {\n if (supportedLng === lngOnly) return supportedLng;\n if (supportedLng.indexOf('-') < 0 && lngOnly.indexOf('-') < 0) return;\n if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n });\n });\n }\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n if (!code) return fallbacks.default || [];\n let found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks.default;\n return found || [];\n }\n toResolveHierarchy(code, fallbackCode) {\n const fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n const codes = [];\n const addCode = c => {\n if (!c) return;\n if (this.isSupportedCode(c)) {\n codes.push(c);\n } else {\n this.logger.warn(`rejecting language code not found in supportedLngs: ${c}`);\n }\n };\n if (typeof code === 'string' && (code.indexOf('-') > -1 || code.indexOf('_') > -1)) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (typeof code === 'string') {\n addCode(this.formatLanguageCode(code));\n }\n fallbackCodes.forEach(fc => {\n if (codes.indexOf(fc) < 0) addCode(this.formatLanguageCode(fc));\n });\n return codes;\n }\n}\n\nlet sets = [{\n lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n nr: [1, 2],\n fc: 1\n}, {\n lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kk', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n nr: [1, 2],\n fc: 2\n}, {\n lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n nr: [1],\n fc: 3\n}, {\n lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n nr: [1, 2, 5],\n fc: 4\n}, {\n lngs: ['ar'],\n nr: [0, 1, 2, 3, 11, 100],\n fc: 5\n}, {\n lngs: ['cs', 'sk'],\n nr: [1, 2, 5],\n fc: 6\n}, {\n lngs: ['csb', 'pl'],\n nr: [1, 2, 5],\n fc: 7\n}, {\n lngs: ['cy'],\n nr: [1, 2, 3, 8],\n fc: 8\n}, {\n lngs: ['fr'],\n nr: [1, 2],\n fc: 9\n}, {\n lngs: ['ga'],\n nr: [1, 2, 3, 7, 11],\n fc: 10\n}, {\n lngs: ['gd'],\n nr: [1, 2, 3, 20],\n fc: 11\n}, {\n lngs: ['is'],\n nr: [1, 2],\n fc: 12\n}, {\n lngs: ['jv'],\n nr: [0, 1],\n fc: 13\n}, {\n lngs: ['kw'],\n nr: [1, 2, 3, 4],\n fc: 14\n}, {\n lngs: ['lt'],\n nr: [1, 2, 10],\n fc: 15\n}, {\n lngs: ['lv'],\n nr: [1, 2, 0],\n fc: 16\n}, {\n lngs: ['mk'],\n nr: [1, 2],\n fc: 17\n}, {\n lngs: ['mnk'],\n nr: [0, 1, 2],\n fc: 18\n}, {\n lngs: ['mt'],\n nr: [1, 2, 11, 20],\n fc: 19\n}, {\n lngs: ['or'],\n nr: [2, 1],\n fc: 2\n}, {\n lngs: ['ro'],\n nr: [1, 2, 20],\n fc: 20\n}, {\n lngs: ['sl'],\n nr: [5, 1, 2, 3],\n fc: 21\n}, {\n lngs: ['he', 'iw'],\n nr: [1, 2, 20, 21],\n fc: 22\n}];\nlet _rulesPluralsTypes = {\n 1: function (n) {\n return Number(n > 1);\n },\n 2: function (n) {\n return Number(n != 1);\n },\n 3: function (n) {\n return 0;\n },\n 4: function (n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 5: function (n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n },\n 6: function (n) {\n return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n },\n 7: function (n) {\n return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 8: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n },\n 9: function (n) {\n return Number(n >= 2);\n },\n 10: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n },\n 11: function (n) {\n return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n },\n 12: function (n) {\n return Number(n % 10 != 1 || n % 100 == 11);\n },\n 13: function (n) {\n return Number(n !== 0);\n },\n 14: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n },\n 15: function (n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 16: function (n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n },\n 17: function (n) {\n return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n },\n 18: function (n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n },\n 19: function (n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n },\n 20: function (n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n },\n 21: function (n) {\n return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n },\n 22: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n }\n};\nconst nonIntlVersions = ['v1', 'v2', 'v3'];\nconst intlVersions = ['v4'];\nconst suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\nfunction createRules() {\n const rules = {};\n sets.forEach(set => {\n set.lngs.forEach(l => {\n rules[l] = {\n numbers: set.nr,\n plurals: _rulesPluralsTypes[set.fc]\n };\n });\n });\n return rules;\n}\nclass PluralResolver {\n constructor(languageUtils) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n if ((!this.options.compatibilityJSON || intlVersions.includes(this.options.compatibilityJSON)) && (typeof Intl === 'undefined' || !Intl.PluralRules)) {\n this.options.compatibilityJSON = 'v3';\n this.logger.error('Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.');\n }\n this.rules = createRules();\n }\n addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n getRule(code) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (this.shouldUseIntlApi()) {\n try {\n return new Intl.PluralRules(getCleanedCode(code === 'dev' ? 'en' : code), {\n type: options.ordinal ? 'ordinal' : 'cardinal'\n });\n } catch (err) {\n return;\n }\n }\n return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n }\n needsPlural(code) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const rule = this.getRule(code, options);\n if (this.shouldUseIntlApi()) {\n return rule && rule.resolvedOptions().pluralCategories.length > 1;\n }\n return rule && rule.numbers.length > 1;\n }\n getPluralFormsOfKey(code, key) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return this.getSuffixes(code, options).map(suffix => `${key}${suffix}`);\n }\n getSuffixes(code) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const rule = this.getRule(code, options);\n if (!rule) {\n return [];\n }\n if (this.shouldUseIntlApi()) {\n return rule.resolvedOptions().pluralCategories.sort((pluralCategory1, pluralCategory2) => suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2]).map(pluralCategory => `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${pluralCategory}`);\n }\n return rule.numbers.map(number => this.getSuffix(code, number, options));\n }\n getSuffix(code, count) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const rule = this.getRule(code, options);\n if (rule) {\n if (this.shouldUseIntlApi()) {\n return `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${rule.select(count)}`;\n }\n return this.getSuffixRetroCompatible(rule, count);\n }\n this.logger.warn(`no plural rule found for: ${code}`);\n return '';\n }\n getSuffixRetroCompatible(rule, count) {\n const idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n let suffix = rule.numbers[idx];\n if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n if (suffix === 2) {\n suffix = 'plural';\n } else if (suffix === 1) {\n suffix = '';\n }\n }\n const returnSuffix = () => this.options.prepend && suffix.toString() ? this.options.prepend + suffix.toString() : suffix.toString();\n if (this.options.compatibilityJSON === 'v1') {\n if (suffix === 1) return '';\n if (typeof suffix === 'number') return `_plural_${suffix.toString()}`;\n return returnSuffix();\n } else if (this.options.compatibilityJSON === 'v2') {\n return returnSuffix();\n } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n return returnSuffix();\n }\n return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n }\n shouldUseIntlApi() {\n return !nonIntlVersions.includes(this.options.compatibilityJSON);\n }\n}\n\nfunction deepFindWithDefaults(data, defaultData, key) {\n let keySeparator = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '.';\n let ignoreJSONStructure = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n let path = getPathWithDefaults(data, defaultData, key);\n if (!path && ignoreJSONStructure && typeof key === 'string') {\n path = deepFind(data, key, keySeparator);\n if (path === undefined) path = deepFind(defaultData, key, keySeparator);\n }\n return path;\n}\nclass Interpolator {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n this.format = options.interpolation && options.interpolation.format || (value => value);\n this.init(options);\n }\n init() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n const iOpts = options.interpolation;\n this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n this.resetRegExp();\n }\n reset() {\n if (this.options) this.init(this.options);\n }\n resetRegExp() {\n const getOrResetRegExp = (existingRegExp, pattern) => {\n if (existingRegExp && existingRegExp.source === pattern) {\n existingRegExp.lastIndex = 0;\n return existingRegExp;\n }\n return new RegExp(pattern, 'g');\n };\n this.regexp = getOrResetRegExp(this.regexp, `${this.prefix}(.+?)${this.suffix}`);\n this.regexpUnescape = getOrResetRegExp(this.regexpUnescape, `${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`);\n this.nestingRegexp = getOrResetRegExp(this.nestingRegexp, `${this.nestingPrefix}(.+?)${this.nestingSuffix}`);\n }\n interpolate(str, data, lng, options) {\n let match;\n let value;\n let replaces;\n const defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n function regexSafe(val) {\n return val.replace(/\\$/g, '$$$$');\n }\n const handleFormat = key => {\n if (key.indexOf(this.formatSeparator) < 0) {\n const path = deepFindWithDefaults(data, defaultData, key, this.options.keySeparator, this.options.ignoreJSONStructure);\n return this.alwaysFormat ? this.format(path, undefined, lng, {\n ...options,\n ...data,\n interpolationkey: key\n }) : path;\n }\n const p = key.split(this.formatSeparator);\n const k = p.shift().trim();\n const f = p.join(this.formatSeparator).trim();\n return this.format(deepFindWithDefaults(data, defaultData, k, this.options.keySeparator, this.options.ignoreJSONStructure), f, lng, {\n ...options,\n ...data,\n interpolationkey: k\n });\n };\n this.resetRegExp();\n const missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n const skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n const todos = [{\n regex: this.regexpUnescape,\n safeValue: val => regexSafe(val)\n }, {\n regex: this.regexp,\n safeValue: val => this.escapeValue ? regexSafe(this.escape(val)) : regexSafe(val)\n }];\n todos.forEach(todo => {\n replaces = 0;\n while (match = todo.regex.exec(str)) {\n const matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n const temp = missingInterpolationHandler(str, match, options);\n value = typeof temp === 'string' ? temp : '';\n } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n this.logger.warn(`missed to pass in variable ${matchedVar} for interpolating ${str}`);\n value = '';\n }\n } else if (typeof value !== 'string' && !this.useRawValueToEscape) {\n value = makeString(value);\n }\n const safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n if (skipOnVariables) {\n todo.regex.lastIndex += value.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n replaces++;\n if (replaces >= this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n nest(str, fc) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let match;\n let value;\n let clonedOptions;\n function handleHasOptions(key, inheritedOptions) {\n const sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n const c = key.split(new RegExp(`${sep}[ ]*{`));\n let optionsString = `{${c[1]}`;\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n const matchedSingleQuotes = optionsString.match(/'/g);\n const matchedDoubleQuotes = optionsString.match(/\"/g);\n if (matchedSingleQuotes && matchedSingleQuotes.length % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) {\n optionsString = optionsString.replace(/'/g, '\"');\n }\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = {\n ...inheritedOptions,\n ...clonedOptions\n };\n } catch (e) {\n this.logger.warn(`failed parsing options string in nesting for key ${key}`, e);\n return `${key}${sep}${optionsString}`;\n }\n delete clonedOptions.defaultValue;\n return key;\n }\n while (match = this.nestingRegexp.exec(str)) {\n let formatters = [];\n clonedOptions = {\n ...options\n };\n clonedOptions = clonedOptions.replace && typeof clonedOptions.replace !== 'string' ? clonedOptions.replace : clonedOptions;\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n let doReduce = false;\n if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n const r = match[1].split(this.formatSeparator).map(elem => elem.trim());\n match[1] = r.shift();\n formatters = r;\n doReduce = true;\n }\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && typeof value !== 'string') return value;\n if (typeof value !== 'string') value = makeString(value);\n if (!value) {\n this.logger.warn(`missed to resolve ${match[1]} for nesting ${str}`);\n value = '';\n }\n if (doReduce) {\n value = formatters.reduce((v, f) => this.format(v, f, options.lng, {\n ...options,\n interpolationkey: match[1].trim()\n }), value.trim());\n }\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n return str;\n }\n}\n\nfunction parseFormatStr(formatStr) {\n let formatName = formatStr.toLowerCase().trim();\n const formatOptions = {};\n if (formatStr.indexOf('(') > -1) {\n const p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n const optStr = p[1].substring(0, p[1].length - 1);\n if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n const opts = optStr.split(';');\n opts.forEach(opt => {\n if (!opt) return;\n const [key, ...rest] = opt.split(':');\n const val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n if (!formatOptions[key.trim()]) formatOptions[key.trim()] = val;\n if (val === 'false') formatOptions[key.trim()] = false;\n if (val === 'true') formatOptions[key.trim()] = true;\n if (!isNaN(val)) formatOptions[key.trim()] = parseInt(val, 10);\n });\n }\n }\n return {\n formatName,\n formatOptions\n };\n}\nfunction createCachedFormatter(fn) {\n const cache = {};\n return function invokeFormatter(val, lng, options) {\n const key = lng + JSON.stringify(options);\n let formatter = cache[key];\n if (!formatter) {\n formatter = fn(getCleanedCode(lng), options);\n cache[key] = formatter;\n }\n return formatter(val);\n };\n}\nclass Formatter {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.formats = {\n number: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n currency: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt,\n style: 'currency'\n });\n return val => formatter.format(val);\n }),\n datetime: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.DateTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n relativetime: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.RelativeTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val, opt.range || 'day');\n }),\n list: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.ListFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n })\n };\n this.init(options);\n }\n init(services) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n const iOpts = options.interpolation;\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n }\n add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n addCached(name, fc) {\n this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n }\n format(value, format, lng) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const formats = format.split(this.formatSeparator);\n const result = formats.reduce((mem, f) => {\n const {\n formatName,\n formatOptions\n } = parseFormatStr(f);\n if (this.formats[formatName]) {\n let formatted = mem;\n try {\n const valOptions = options && options.formatParams && options.formatParams[options.interpolationkey] || {};\n const l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = this.formats[formatName](mem, l, {\n ...formatOptions,\n ...options,\n ...valOptions\n });\n } catch (error) {\n this.logger.warn(error);\n }\n return formatted;\n } else {\n this.logger.warn(`there was no format function for ${formatName}`);\n }\n return mem;\n }, value);\n return result;\n }\n}\n\nfunction removePending(q, name) {\n if (q.pending[name] !== undefined) {\n delete q.pending[name];\n q.pendingCount--;\n }\n}\nclass Connector extends EventEmitter {\n constructor(backend, store, services) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n super();\n this.backend = backend;\n this.store = store;\n this.services = services;\n this.languageUtils = services.languageUtils;\n this.options = options;\n this.logger = baseLogger.create('backendConnector');\n this.waitingReads = [];\n this.maxParallelReads = options.maxParallelReads || 10;\n this.readingCalls = 0;\n this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n this.state = {};\n this.queue = [];\n if (this.backend && this.backend.init) {\n this.backend.init(services, options.backend, options);\n }\n }\n queueLoad(languages, namespaces, options, callback) {\n const toLoad = {};\n const pending = {};\n const toLoadLanguages = {};\n const toLoadNamespaces = {};\n languages.forEach(lng => {\n let hasAllNamespaces = true;\n namespaces.forEach(ns => {\n const name = `${lng}|${ns}`;\n if (!options.reload && this.store.hasResourceBundle(lng, ns)) {\n this.state[name] = 2;\n } else if (this.state[name] < 0) ; else if (this.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n this.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback\n });\n }\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n loaded(name, err, data) {\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n if (data) {\n this.store.addResourceBundle(lng, ns, data, undefined, undefined, {\n skipCopy: true\n });\n }\n this.state[name] = err ? -1 : 2;\n const loaded = {};\n this.queue.forEach(q => {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(l => {\n if (!loaded[l]) loaded[l] = {};\n const loadedKeys = q.loaded[l];\n if (loadedKeys.length) {\n loadedKeys.forEach(n => {\n if (loaded[l][n] === undefined) loaded[l][n] = true;\n });\n }\n });\n q.done = true;\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(q => !q.done);\n }\n read(lng, ns, fcName) {\n let tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n let wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : this.retryTimeout;\n let callback = arguments.length > 5 ? arguments[5] : undefined;\n if (!lng.length) return callback(null, {});\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng,\n ns,\n fcName,\n tried,\n wait,\n callback\n });\n return;\n }\n this.readingCalls++;\n const resolver = (err, data) => {\n this.readingCalls--;\n if (this.waitingReads.length > 0) {\n const next = this.waitingReads.shift();\n this.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n if (err && data && tried < this.maxRetries) {\n setTimeout(() => {\n this.read.call(this, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n callback(err, data);\n };\n const fc = this.backend[fcName].bind(this.backend);\n if (fc.length === 2) {\n try {\n const r = fc(lng, ns);\n if (r && typeof r.then === 'function') {\n r.then(data => resolver(null, data)).catch(resolver);\n } else {\n resolver(null, r);\n }\n } catch (err) {\n resolver(err);\n }\n return;\n }\n return fc(lng, ns, resolver);\n }\n prepareLoading(languages, namespaces) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let callback = arguments.length > 3 ? arguments[3] : undefined;\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n if (typeof namespaces === 'string') namespaces = [namespaces];\n const toLoad = this.queueLoad(languages, namespaces, options, callback);\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n toLoad.toLoad.forEach(name => {\n this.loadOne(name);\n });\n }\n load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n loadOne(name) {\n let prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, (err, data) => {\n if (err) this.logger.warn(`${prefix}loading namespace ${ns} for language ${lng} failed`, err);\n if (!err && data) this.logger.log(`${prefix}loaded namespace ${ns} for language ${lng}`, data);\n this.loaded(name, err, data);\n });\n }\n saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n let options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n let clb = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : () => {};\n if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n this.logger.warn(`did not save key \"${key}\" as the namespace \"${namespace}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n if (key === undefined || key === null || key === '') return;\n if (this.backend && this.backend.create) {\n const opts = {\n ...options,\n isUpdate\n };\n const fc = this.backend.create.bind(this.backend);\n if (fc.length < 6) {\n try {\n let r;\n if (fc.length === 5) {\n r = fc(languages, namespace, key, fallbackValue, opts);\n } else {\n r = fc(languages, namespace, key, fallbackValue);\n }\n if (r && typeof r.then === 'function') {\n r.then(data => clb(null, data)).catch(clb);\n } else {\n clb(null, r);\n }\n } catch (err) {\n clb(err);\n }\n } else {\n fc(languages, namespace, key, fallbackValue, clb, opts);\n }\n }\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n}\n\nfunction get() {\n return {\n debug: false,\n initImmediate: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: false,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: function handle(args) {\n let ret = {};\n if (typeof args[1] === 'object') ret = args[1];\n if (typeof args[1] === 'string') ret.defaultValue = args[1];\n if (typeof args[2] === 'string') ret.tDescription = args[2];\n if (typeof args[2] === 'object' || typeof args[3] === 'object') {\n const options = args[3] || args[2];\n Object.keys(options).forEach(key => {\n ret[key] = options[key];\n });\n }\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: value => value,\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n }\n };\n}\nfunction transformOptions(options) {\n if (typeof options.ns === 'string') options.ns = [options.ns];\n if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n return options;\n}\n\nfunction noop() {}\nfunction bindMemberFunctions(inst) {\n const mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(mem => {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n}\nclass I18n extends EventEmitter {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 ? arguments[1] : undefined;\n super();\n this.options = transformOptions(options);\n this.services = {};\n this.logger = baseLogger;\n this.modules = {\n external: []\n };\n bindMemberFunctions(this);\n if (callback && !this.isInitialized && !options.isClone) {\n if (!this.options.initImmediate) {\n this.init(options, callback);\n return this;\n }\n setTimeout(() => {\n this.init(options, callback);\n }, 0);\n }\n }\n init() {\n var _this = this;\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 ? arguments[1] : undefined;\n this.isInitializing = true;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (!options.defaultNS && options.defaultNS !== false && options.ns) {\n if (typeof options.ns === 'string') {\n options.defaultNS = options.ns;\n } else if (options.ns.indexOf('translation') < 0) {\n options.defaultNS = options.ns[0];\n }\n }\n const defOpts = get();\n this.options = {\n ...defOpts,\n ...this.options,\n ...transformOptions(options)\n };\n if (this.options.compatibilityAPI !== 'v1') {\n this.options.interpolation = {\n ...defOpts.interpolation,\n ...this.options.interpolation\n };\n }\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n function createClassOnDemand(ClassOrObject) {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n }\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n let formatter;\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else if (typeof Intl !== 'undefined') {\n formatter = Formatter;\n }\n const lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n const s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n compatibilityJSON: this.options.compatibilityJSON,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n s.formatter = createClassOnDemand(formatter);\n s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', function (event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n _this.emit(event, ...args);\n });\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n }\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n _this.emit(event, ...args);\n });\n this.modules.external.forEach(m => {\n if (m.init) m.init(this);\n });\n }\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n const codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n const storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(fcName => {\n this[fcName] = function () {\n return _this.store[fcName](...arguments);\n };\n });\n const storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(fcName => {\n this[fcName] = function () {\n _this.store[fcName](...arguments);\n return _this;\n };\n });\n const deferred = defer();\n const load = () => {\n const finish = (err, t) => {\n this.isInitializing = false;\n if (this.isInitialized && !this.initializedStoreOnce) this.logger.warn('init: i18next is already initialized. You should call init just once!');\n this.isInitialized = true;\n if (!this.options.isClone) this.logger.log('initialized', this.options);\n this.emit('initialized', this.options);\n deferred.resolve(t);\n callback(err, t);\n };\n if (this.languages && this.options.compatibilityAPI !== 'v1' && !this.isInitialized) return finish(null, this.t.bind(this));\n this.changeLanguage(this.options.lng, finish);\n };\n if (this.options.resources || !this.options.initImmediate) {\n load();\n } else {\n setTimeout(load, 0);\n }\n return deferred;\n }\n loadResources(language) {\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n let usedCallback = callback;\n const usedLng = typeof language === 'string' ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng && usedLng.toLowerCase() === 'cimode' && (!this.options.preload || this.options.preload.length === 0)) return usedCallback();\n const toLoad = [];\n const append = lng => {\n if (!lng) return;\n if (lng === 'cimode') return;\n const lngs = this.services.languageUtils.toResolveHierarchy(lng);\n lngs.forEach(l => {\n if (l === 'cimode') return;\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n if (!usedLng) {\n const fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(l => append(l));\n } else {\n append(usedLng);\n }\n if (this.options.preload) {\n this.options.preload.forEach(l => append(l));\n }\n this.services.backendConnector.load(toLoad, this.options.ns, e => {\n if (!e && !this.resolvedLanguage && this.language) this.setResolvedLanguage(this.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n reloadResources(lngs, ns, callback) {\n const deferred = defer();\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, err => {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n return this;\n }\n setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].indexOf(l) > -1) return;\n for (let li = 0; li < this.languages.length; li++) {\n const lngInLngs = this.languages[li];\n if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n }\n changeLanguage(lng, callback) {\n var _this2 = this;\n this.isLanguageChangingTo = lng;\n const deferred = defer();\n this.emit('languageChanging', lng);\n const setLngProps = l => {\n this.language = l;\n this.languages = this.services.languageUtils.toResolveHierarchy(l);\n this.resolvedLanguage = undefined;\n this.setResolvedLanguage(l);\n };\n const done = (err, l) => {\n if (l) {\n setLngProps(l);\n this.translator.changeLanguage(l);\n this.isLanguageChangingTo = undefined;\n this.emit('languageChanged', l);\n this.logger.log('languageChanged', l);\n } else {\n this.isLanguageChangingTo = undefined;\n }\n deferred.resolve(function () {\n return _this2.t(...arguments);\n });\n if (callback) callback(err, function () {\n return _this2.t(...arguments);\n });\n };\n const setLng = lngs => {\n if (!lng && !lngs && this.services.languageDetector) lngs = [];\n const l = typeof lngs === 'string' ? lngs : this.services.languageUtils.getBestMatchFromCodes(lngs);\n if (l) {\n if (!this.language) {\n setLngProps(l);\n }\n if (!this.translator.language) this.translator.changeLanguage(l);\n if (this.services.languageDetector && this.services.languageDetector.cacheUserLanguage) this.services.languageDetector.cacheUserLanguage(l);\n }\n this.loadResources(l, err => {\n done(err, l);\n });\n };\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n if (this.services.languageDetector.detect.length === 0) {\n this.services.languageDetector.detect().then(setLng);\n } else {\n this.services.languageDetector.detect(setLng);\n }\n } else {\n setLng(lng);\n }\n return deferred;\n }\n getFixedT(lng, ns, keyPrefix) {\n var _this3 = this;\n const fixedT = function (key, opts) {\n let options;\n if (typeof opts !== 'object') {\n for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n options = _this3.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n options = {\n ...opts\n };\n }\n options.lng = options.lng || fixedT.lng;\n options.lngs = options.lngs || fixedT.lngs;\n options.ns = options.ns || fixedT.ns;\n options.keyPrefix = options.keyPrefix || keyPrefix || fixedT.keyPrefix;\n const keySeparator = _this3.options.keySeparator || '.';\n let resultKey;\n if (options.keyPrefix && Array.isArray(key)) {\n resultKey = key.map(k => `${options.keyPrefix}${keySeparator}${k}`);\n } else {\n resultKey = options.keyPrefix ? `${options.keyPrefix}${keySeparator}${key}` : key;\n }\n return _this3.t(resultKey, options);\n };\n if (typeof lng === 'string') {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n t() {\n return this.translator && this.translator.translate(...arguments);\n }\n exists() {\n return this.translator && this.translator.exists(...arguments);\n }\n setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n hasLoadedNamespace(ns) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n const lng = options.lng || this.resolvedLanguage || this.languages[0];\n const fallbackLng = this.options ? this.options.fallbackLng : false;\n const lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n const loadNotPending = (l, n) => {\n const loadState = this.services.backendConnector.state[`${l}|${n}`];\n return loadState === -1 || loadState === 2;\n };\n if (options.precheck) {\n const preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n loadNamespaces(ns, callback) {\n const deferred = defer();\n if (!this.options.ns) {\n if (callback) callback();\n return Promise.resolve();\n }\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(n => {\n if (this.options.ns.indexOf(n) < 0) this.options.ns.push(n);\n });\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n loadLanguages(lngs, callback) {\n const deferred = defer();\n if (typeof lngs === 'string') lngs = [lngs];\n const preloaded = this.options.preload || [];\n const newLngs = lngs.filter(lng => preloaded.indexOf(lng) < 0);\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages && this.languages.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n const rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n const languageUtils = this.services && this.services.languageUtils || new LanguageUtil(get());\n return rtlLngs.indexOf(languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n static createInstance() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 ? arguments[1] : undefined;\n return new I18n(options, callback);\n }\n cloneInstance() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n const forkResourceStore = options.forkResourceStore;\n if (forkResourceStore) delete options.forkResourceStore;\n const mergedOptions = {\n ...this.options,\n ...options,\n ...{\n isClone: true\n }\n };\n const clone = new I18n(mergedOptions);\n if (options.debug !== undefined || options.prefix !== undefined) {\n clone.logger = clone.logger.clone(options);\n }\n const membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(m => {\n clone[m] = this[m];\n });\n clone.services = {\n ...this.services\n };\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n if (forkResourceStore) {\n clone.store = new ResourceStore(this.store.data, mergedOptions);\n clone.services.resourceStore = clone.store;\n }\n clone.translator = new Translator(clone.services, mergedOptions);\n clone.translator.on('*', function (event) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n clone.emit(event, ...args);\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = mergedOptions;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n}\nconst instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\n\nconst createInstance = instance.createInstance;\nconst dir = instance.dir;\nconst init = instance.init;\nconst loadResources = instance.loadResources;\nconst reloadResources = instance.reloadResources;\nconst use = instance.use;\nconst changeLanguage = instance.changeLanguage;\nconst getFixedT = instance.getFixedT;\nconst t = instance.t;\nconst exists = instance.exists;\nconst setDefaultNamespace = instance.setDefaultNamespace;\nconst hasLoadedNamespace = instance.hasLoadedNamespace;\nconst loadNamespaces = instance.loadNamespaces;\nconst loadLanguages = instance.loadLanguages;\n\nexport { changeLanguage, createInstance, instance as default, dir, exists, getFixedT, hasLoadedNamespace, init, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","import markdownit from 'markdown-it';\nimport { full } from 'markdown-it-emoji';\nimport i18next from 'i18next';\n\nclass MarkdownTextFormatter {\n markdown;\n constructor() {\n this.markdown = markdownit({\n html: false,\n xhtmlOut: false,\n breaks: true,\n langPrefix: 'ubits__',\n linkify: false,\n typographer: true,\n }).use(full);\n }\n render(text) {\n return this.markdown.render(text);\n }\n}\nconst markdownTextFormatter = new MarkdownTextFormatter();\n\nfunction utcConversion(date, utcDestination) {\n const timeMilliseconds = date.getTime();\n const currentOffset = date.getTimezoneOffset();\n const destinationOffset = -utcDestination * 60;\n const displacementDifference = destinationOffset - currentOffset;\n const newTimeMilliseconds = timeMilliseconds + displacementDifference * 60000;\n const currentDate = new Date(newTimeMilliseconds);\n return currentDate;\n}\n\nclass FormatDateIntlRepository {\n language;\n constructor(language) {\n this.language = language;\n }\n format(date, options) {\n return new Intl.DateTimeFormat(this.language, options).format(date);\n }\n convert(date, utcDestination) {\n return utcConversion(date, utcDestination);\n }\n}\n\nconst FormatDate = FormatDateIntlRepository;\n\nclass FormatNumberIntlRepository {\n language;\n constructor(language) {\n this.language = language;\n }\n format(value) {\n return new Intl.NumberFormat(this.language).format(value);\n }\n}\n\nconst FormatNumber = FormatNumberIntlRepository;\n\nvar InternationalizationLanguageEnum;\n(function (InternationalizationLanguageEnum) {\n InternationalizationLanguageEnum[\"SpanishColombia\"] = \"es-CO\";\n InternationalizationLanguageEnum[\"EnglishUnitedStates\"] = \"en-US\";\n InternationalizationLanguageEnum[\"PortugueseBrazil\"] = \"pt-BR\";\n})(InternationalizationLanguageEnum || (InternationalizationLanguageEnum = {}));\nvar InternationalizationEventEnum;\n(function (InternationalizationEventEnum) {\n InternationalizationEventEnum[\"LoadTranslation\"] = \"internationalizationLoadTranslation\";\n InternationalizationEventEnum[\"SetLanguage\"] = \"internationalizationSetLanguage\";\n})(InternationalizationEventEnum || (InternationalizationEventEnum = {}));\nvar InternationalizationResourceEnum;\n(function (InternationalizationResourceEnum) {\n})(InternationalizationResourceEnum || (InternationalizationResourceEnum = {}));\n\nfunction dispatchLoadTranslation() {\n document.dispatchEvent(new CustomEvent(InternationalizationEventEnum.LoadTranslation, { bubbles: true }));\n}\nfunction dispatchSetLanguage(language) {\n document.dispatchEvent(new CustomEvent(InternationalizationEventEnum.SetLanguage, { detail: language, bubbles: true }));\n}\nasync function updateInternationalizationElements() {\n const elements = getAllUbitsInternationalizationElements();\n for (const element of elements) {\n element?.['updateContent']()?.then();\n }\n}\nfunction getAllUbitsInternationalizationElements() {\n const tagNames = ['ubits-internationalization-translation'];\n const resultList = [];\n function findAllUbitsInternationalizationElements(node) {\n if (node instanceof HTMLElement && tagNames.includes(node.tagName.toLowerCase())) {\n resultList.push(node);\n }\n for (const child of Array.from(node.childNodes)) {\n if (child instanceof HTMLElement) {\n if (child.shadowRoot) {\n findAllUbitsInternationalizationElements(child.shadowRoot);\n }\n findAllUbitsInternationalizationElements(child);\n }\n }\n }\n findAllUbitsInternationalizationElements(document);\n return resultList;\n}\n\nclass TranslationI18nRepository {\n language;\n resource;\n i18nLibrary = i18next.createInstance();\n constructor(language, resource) {\n this.language = language;\n this.resource = resource;\n }\n async load() {\n const options = {\n lng: this.language,\n ns: this.resource,\n defaultNS: this.resource,\n resources: {},\n interpolation: { prefix: '${', suffix: '}' },\n };\n await this.i18nLibrary.init(options);\n }\n addResource(data) {\n const resource = this.resource;\n this.i18nLibrary.addResourceBundle(this.language, resource, data, true, true);\n }\n addDataToResource(data) {\n const resource = this.resource;\n this.i18nLibrary.addResourceBundle(this.language, resource, data, false, false);\n }\n getResourceData() {\n return this.i18nLibrary.getResourceBundle(this.language, this.resource);\n }\n translate(key, args) {\n let text = this.i18nLibrary.t(key, args) || '';\n if (text === key)\n text = `${this.language}:${this.resource}:${key}`;\n return text;\n }\n}\n\nconst TranslationRepository = TranslationI18nRepository;\n\nclass TranslationService {\n language;\n resourceCallback;\n translations = new Map();\n constructor(language, resourceCallback) {\n this.language = language;\n this.resourceCallback = resourceCallback;\n }\n async load(resources) {\n for (const resource of resources) {\n if (Object.keys(this.getResourceData(resource)).length)\n return;\n const data = await this.getDataFromResourceCallback(resource);\n const translation = await this.getNewTranslation(resource, data);\n this.translations.set(resource, translation);\n }\n dispatchLoadTranslation();\n }\n get(resources) {\n if (!resources.length)\n return Array.from(this.translations.values());\n const translations = [];\n resources.forEach(resource => {\n const translation = this.translations.get(resource);\n if (translation)\n translations.push(translation);\n });\n return translations;\n }\n getLoadedResources() {\n return Array.from(this.translations.keys());\n }\n setResourceCallback(resourceCallback) {\n this.resourceCallback = resourceCallback;\n }\n async getNewTranslation(resource, data) {\n const translation = new TranslationRepository(this.language, resource);\n await translation.load();\n translation.addResource(data);\n return translation;\n }\n async getDataFromResourceCallback(resource) {\n const data = (await this.resourceCallback(this.language, resource)) || {};\n return data;\n }\n getResourceData(resourceName) {\n const resource = this.translations.get(resourceName);\n const data = resource ? resource.getResourceData() : {};\n return data;\n }\n}\n\nclass TranslationProvider {\n language;\n resourceCallback = async () => ({});\n translationServices = new Map();\n constructor(language) {\n this.setLanguage(language).then();\n }\n setResourceCallback(resourceCallback) {\n this.resourceCallback = resourceCallback;\n this.updateResourceCallback(resourceCallback);\n }\n async setLanguage(language) {\n if (this.language === language || !language)\n return;\n const currentLoadedResources = this.getLoadedResourcesService(this.language);\n if (!this.translationServices.has(language))\n this.createNewService(language);\n await this.translationServices.get(language).load(currentLoadedResources);\n this.language = language;\n }\n getService() {\n if (!this.translationServices.has(this.language))\n this.createNewService(this.language);\n const service = this.translationServices.get(this.language);\n return service;\n }\n getLoadedResourcesService(language) {\n if (!this.translationServices.has(language))\n return [];\n const service = this.translationServices.get(language);\n return service.getLoadedResources();\n }\n createNewService(language) {\n if (!language || this.translationServices.has(language))\n return;\n this.translationServices.set(language, new TranslationService(language, this.resourceCallback));\n }\n updateResourceCallback(resourceCallback) {\n this.translationServices.forEach(translation => translation.setResourceCallback(resourceCallback));\n }\n}\n\nclass Internationalization {\n language = this.defaultLanguage;\n translationProvider = new TranslationProvider(this.language);\n async config({ language, resourceCallback }) {\n this.translationProvider.setResourceCallback(resourceCallback);\n await this.setLanguage(language);\n return this;\n }\n get translation() {\n return this.translationProvider.getService();\n }\n get formatDate() {\n return new FormatDate(this.language);\n }\n get formatNumber() {\n return new FormatNumber(this.language);\n }\n getLanguage() {\n return this.language;\n }\n async setLanguage(language) {\n if (this.language === language)\n return;\n if (!this.isLanguageValid(language))\n throw new Error('Unsupported languages');\n this.language = language;\n await this.translationProvider.setLanguage(this.language);\n dispatchSetLanguage(this.language);\n updateInternationalizationElements();\n }\n getBrowserLanguage() {\n const browserLanguage = navigator.language;\n return browserLanguage;\n }\n isLanguageValid(language) {\n return Object.values(InternationalizationLanguageEnum).includes(language);\n }\n get defaultLanguage() {\n return InternationalizationLanguageEnum.SpanishColombia;\n }\n}\nconst internationalization = (() => {\n const internationalizationKey = 'ubitsInternationalization';\n let classInstance = document[internationalizationKey];\n if (!classInstance) {\n classInstance = new Internationalization();\n document[internationalizationKey] = classInstance;\n }\n return classInstance;\n})();\n\nclass Translation {\n}\n\nclass TranslatorService {\n resources;\n translations = {};\n constructor(resources) {\n this.resources = resources;\n this.initializeTranslations();\n }\n initializeTranslations() {\n for (const key in this.resources) {\n const translations = internationalization?.translation?.get([this.resources[key]]);\n if (translations?.length) {\n this.translations[key] = translations[0];\n }\n }\n }\n async load() {\n await internationalization?.translation?.load(Object.values(this.resources));\n this.initializeTranslations();\n }\n getTranslation(key) {\n return this.translations[key];\n }\n}\nfunction createTranslatorService(resources) {\n const service = new TranslatorService(resources);\n return new Proxy(service, {\n get(target, prop) {\n if (prop in target) {\n return target[prop];\n }\n const translation = target.getTranslation(prop);\n if (translation) {\n return new Proxy(translation, {\n get(translationTarget, translationProp) {\n return translationTarget[translationProp];\n },\n });\n }\n return undefined;\n },\n });\n}\n\nexport { InternationalizationEventEnum, InternationalizationLanguageEnum, InternationalizationResourceEnum, Translation, TranslatorService, createTranslatorService, internationalization, markdownTextFormatter, utcConversion };\n//# sourceMappingURL=index.js.map\n","export class StoreTemporarily {\n private cache = new Map()\n private promises: {\n key: string\n callback: () => Promise\n resolve: (value?: any) => void\n }[] = []\n private resolving = false\n private autoRemove: number = 3000\n\n async load(key: string, callback: () => Promise): Promise {\n if (this.cache.has(key)) return this.getData(key)\n\n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async resolve => {\n this.promises.push({ key, callback, resolve })\n\n if (!this.resolving) {\n this.resolving = true\n await this.resolvePromiseQueue()\n this.resolving = false\n }\n })\n }\n\n private async resolvePromiseQueue() {\n while (this.promises.length > 0) {\n const { key, callback, resolve } = this.promises.pop()\n\n try {\n let response\n\n if (this.cache.has(key)) {\n response = this.getData(key)\n } else {\n response = await callback()\n this.cache.set(key, response)\n }\n\n resolve(response)\n } catch (error) {\n resolve(null)\n }\n }\n }\n\n private getData(key: string) {\n setTimeout(() => {\n this.cache.delete(key)\n }, this.autoRemove)\n\n return this.cache.get(key)\n }\n}\n","import {\n internationalization,\n InternationalizationConfig,\n InternationalizationEventEnum,\n InternationalizationLanguageEnum,\n InternationalizationTranslationData,\n} from '@ubits/library-internationalization'\nimport { StoreTemporarily } from '../utils'\n\nconst storeTemporarily = new StoreTemporarily()\nconst languageKeyId: string = 'ubitsLanguage'\n\nexport async function internationalizationService() {\n await configInternationalization()\n internationalizationOnSetLanguage()\n}\n\nasync function configInternationalization() {\n const options: InternationalizationConfig = {\n language: getLanguage(),\n resourceCallback,\n }\n\n await internationalization.config(options)\n}\n\nfunction internationalizationOnSetLanguage() {\n document.addEventListener(InternationalizationEventEnum.SetLanguage, (event: CustomEvent) => {\n const language: InternationalizationLanguageEnum = event.detail\n setLanguage(language)\n window.location.reload()\n })\n}\n\nfunction getLanguage(): InternationalizationLanguageEnum {\n let language = localStorage.getItem(languageKeyId) as InternationalizationLanguageEnum\n\n if (!language) {\n language = InternationalizationLanguageEnum.SpanishColombia\n setLanguage(language)\n }\n\n return language\n}\n\nfunction setLanguage(language: InternationalizationLanguageEnum) {\n localStorage.setItem(languageKeyId, language)\n}\n\nasync function resourceCallback(\n language: InternationalizationLanguageEnum,\n resource: string\n): Promise {\n const path: string = process.env['ASSETS_DOMAIN']\n\n const url = `${path}/i18n/${resource}/${language}.json`\n\n const httpRequest = async () => {\n try {\n const respuesta = await fetch(url)\n\n if (!respuesta.ok) {\n console.error('Error, resource does not exist')\n return null\n }\n\n const recursos = await respuesta.json()\n return recursos\n } catch (error) {\n console.error('Error:', error)\n return null\n }\n }\n\n return storeTemporarily.load(url, httpRequest)\n}\n","import { getMountedApps, unregisterApplication } from 'single-spa'\nimport { authManager, showLoading } from '@ubits/library-core'\n\nexport async function logout() {\n showLoading({ showHeader: false })\n await unmountApplications()\n await authManager.logout()\n}\n\nasync function unmountApplications() {\n const apps = getMountedApps()\n for (const app of apps) {\n await unregisterApplication(app)\n }\n}\n","import {\n authInformer,\n authManager,\n preferenceCompanyManager,\n preferenceUserManager,\n ubitsDispatchEvent,\n userInformer,\n} from '@ubits/library-core'\nimport { logout } from './logout.service'\n\nclass SessionManager {\n private anticipatedTime = 900000 // 15 minutes\n\n async main(): Promise {\n await this.loadData()\n this.registerEvents().then()\n }\n\n async isSessionActive(): Promise {\n const tokenExp: number = await authInformer.accessTokenExpirationTimestamp()\n const currentDate: number = new Date().getTime()\n // const currentDate: number = tokenExp + 100\n if (currentDate >= tokenExp) return false\n\n await authManager.checkSession()\n const isAuthenticated: boolean = await authInformer.isAuthenticated()\n return isAuthenticated\n }\n\n private async onUserLoggedIntoSystem() {\n const blacklist = ['/logout']\n const { pathname } = location\n\n if (blacklist.includes(pathname)) {\n return\n }\n const isSessionActive: boolean = await this.isSessionActive()\n if (!isSessionActive) await logout()\n }\n\n private async registerEvents() {\n await this.refreshTokenMessageTimer()\n window.addEventListener('visibilitychange', async () => {\n if (document.visibilityState === 'hidden') return\n await this.onUserLoggedIntoSystem()\n })\n\n /*window.addEventListener('focus', async () => await this.onUserLoggedIntoSystem())*/\n // window.addEventListener('blur', async () => await this.onUserLoggedIntoSystem())\n }\n\n private async anticipatedExp(): Promise {\n const exp: number = await authInformer.accessTokenExpirationTimestamp()\n const anticipatedTime = this.anticipatedTime / 1000\n return Promise.resolve(new Date(new Date(exp).setSeconds(-anticipatedTime)).getTime())\n }\n\n private async dispatchUpdateSessionMessage() {\n if (await this.isSessionActive()) {\n const currentDate: number = new Date().getTime()\n const anticipatedExp: number = await this.anticipatedExp()\n\n if (currentDate >= anticipatedExp) {\n ubitsDispatchEvent(new CustomEvent('updateSessionMessage', { bubbles: true }))\n }\n } else {\n await logout()\n }\n }\n\n private async refreshTokenMessageTimer() {\n const interval: number = 300000 // 5 minutes\n setInterval(async () => await this.dispatchUpdateSessionMessage(), interval)\n }\n\n private async loadData(): Promise {\n const user = await userInformer.get()\n\n if (!Boolean(user)) {\n await logout()\n return\n }\n\n if (Boolean(user.id)) {\n preferenceUserManager.loadData().then()\n preferenceCompanyManager.loadData().then()\n } else {\n await logout()\n }\n }\n}\n\nexport const sessionManager = new SessionManager()\n","import { navigateToUrl } from 'single-spa'\nimport {\n featureFlagsInformer,\n FeatureFlagsModel,\n subscriptionInformer,\n SubscriptionModel,\n} from '@ubits/library-core'\nimport {\n getCompanyPage,\n getHomepage,\n isAdminSetup,\n isCustomCourseCreator,\n logout,\n updateAppcuesPage,\n} from '../services'\nimport { routerList } from './router.list'\nimport { RouterModel } from './router.model'\n\nexport async function routerService() {\n await onRouterHashchange()\n sessionValidation()\n\n window.addEventListener('popstate', () => {\n onRouterHashchange().then()\n })\n}\n\nfunction getRouterItem(url: string): RouterModel {\n const origin = window.location.origin\n url = url.replace(origin, '')\n if (!url || url === '/') return null\n\n const routerKey: string = Object.keys(routerList).find((key: string) => {\n const routerItemUrl = routerList[key].url\n let isValid: boolean = url.includes(routerItemUrl)\n\n if (url.length > routerItemUrl.length && isValid)\n isValid = ['?', '/'].includes(url.replace(routerItemUrl, '')[0])\n\n return isValid\n })\n\n return routerKey ? routerList[routerKey] : null\n}\n\nfunction updateDocumentTitle() {\n const routerItem: RouterModel = getRouterItem(window.location.href)\n if (!routerItem) return\n\n const routerTitle = routerItem?.title || ''\n document.title = `Ubits ${routerTitle && '|'} ${routerTitle}`.trim()\n}\n\nasync function onRouterHashchange() {\n await reloadHandlerLogout()\n await reloadHandlerCourseCreator()\n await reloadHandlerAdmin()\n await reloadHandlerLMS()\n await reloadHandlerInitial()\n\n updateDocumentTitle()\n updateAppcuesPage()\n}\n\nasync function redirectToHomepage() {\n const isAdmin: boolean = await isAdminSetup()\n const url = isAdmin\n ? await getHomepage()\n : [await getCompanyPage(), await getHomepage()].find(url => getRouterItem(url))\n navigateToUrl(url)\n}\n\nasync function reloadHandlerCourseCreator() {\n const isCourseCreator: boolean = await isCustomCourseCreator()\n if (!isCourseCreator) return\n\n const regexUlmsUrl = new RegExp(/^\\/ulms\\/.*$/)\n const { pathname } = window.location\n const match = regexUlmsUrl.test(pathname)\n const featureFlagUlms: FeatureFlagsModel = await featureFlagsInformer.get('new_ulms')\n\n if (featureFlagUlms.active) {\n if (!match) navigateToUrl('/ulms/content')\n } else {\n const url = process.env['LMS_URL']\n window.location.href = `${url}/local/admincourses/index.php`\n }\n}\n\nasync function reloadHandlerInitial() {\n let { href } = window.location\n\n if (href.includes('/#/')) {\n window.location.href = href.replace('/#/', '/')\n href = href.replace('/#/', '/')\n }\n\n if (!getRouterItem(href)) await redirectToHomepage()\n}\n\nasync function reloadHandlerAdmin() {\n const regexAdminHRUrl = new RegExp(/^\\/admin-hr\\/.*$/)\n const { pathname } = window.location\n\n const match = regexAdminHRUrl.test(pathname)\n\n if ((await isAdminSetup()) && !match) navigateToUrl(await getHomepage())\n}\n\nasync function reloadHandlerLMS() {\n const whitelist = ['/lms-login']\n const { pathname } = window.location\n\n if (whitelist.some(item => pathname.includes(item))) {\n await redirectToHomepage()\n window.top.dispatchEvent(new CustomEvent('refreshLms', { bubbles: true }))\n }\n}\n\nasync function reloadHandlerLogout() {\n const whitelist = ['/logout']\n const { pathname } = window.location\n if (whitelist.includes(pathname)) {\n await logout()\n }\n}\n\nfunction sessionValidation() {\n subscriptionInformer.get().then((subscription: SubscriptionModel) => {\n const { subscriptionIsActive, userId } = subscription\n if (!subscriptionIsActive && Boolean(userId)) navigateToUrl('/verifyValidity')\n })\n}\n","export interface ILinkResources {\n domain: string\n resource: string\n relation?: string\n id?: string\n}\nexport function loadLinkResources({ domain, resource, relation, id }: ILinkResources) {\n const link = document.createElement('link')\n link.rel = relation || 'stylesheet'\n if (id) link.id = id\n link.href = `${domain || process.env.ASSETS_DOMAIN}/${resource}` // Ruta completa al archivo CSS generado\n document.head.appendChild(link)\n}\n\nexport function loadImportMap({ url }) {\n const script = document.createElement('script')\n script.type = 'systemjs-importmap'\n script.src = url\n document.head.appendChild(script)\n}\n\nexport const loadResources = resources => {\n resources.forEach(({ domain, resource, id, relation }) => {\n loadLinkResources({ domain, resource, id, relation })\n })\n}\n\nexport const loadImportMaps = (importMapUrl: string, importMaps: string[]) => {\n importMaps.forEach(map => {\n loadImportMap({ url: `${importMapUrl}/${map}` })\n })\n}\n","import './assets/styles/global.style.scss'\nimport { authInformer, authManager, envManager } from '@ubits/library-core'\nimport environment from './config/environment'\nimport { registerApplication, startApplication } from './register.application'\nimport { resources } from './resources.data'\nimport { routerService } from './router'\nimport { footerTycEventListener, ubitsManagerContentScroll } from './scripts'\nimport {\n appcuesService,\n dataLayerService,\n internationalizationService,\n refreshLmsService,\n sessionManager,\n} from './services'\nimport { devTools, getDevDependencies } from './utils'\nimport { loadResources } from './utils/load-resources'\n\nasync function initializeApp() {\n const envs = environment()\n envManager.set(envs)\n\n loadResources(resources)\n /* Dev Services */\n getDevDependencies()\n devTools()\n\n /* Auth Services */\n await authManager.initializeApp()\n const isAuthenticated: boolean = await authInformer.isAuthenticated()\n\n if (!isAuthenticated) return\n\n await sessionManager.main()\n await internationalizationService()\n await routerService()\n\n /* Application Services */\n registerApplication()\n startApplication()\n\n /* Additional services and scripts */\n appcuesService()\n dataLayerService()\n footerTycEventListener()\n ubitsManagerContentScroll()\n refreshLmsService()\n}\n\nPromise.resolve(initializeApp())\n\nexport * from './shared/index'\n","export default () => ({\n ENV: process.env.ENV || 'development',\n ACTIVITY_INTERVAL: process.env.ACTIVITY_INTERVAL,\n API_ACCESS_INTRANALYTICS: process.env.API_ACCESS_INTRANALYTICS,\n ASSETS_DOMAIN: process.env.ASSETS_DOMAIN,\n AUTH0_AUDIENCE: process.env.AUTH0_AUDIENCE,\n AUTH0_CLIENT_ID: process.env.AUTH0_CLIENT_ID,\n AUTH0_DOMAIN: process.env.AUTH0_DOMAIN,\n AUTHENTICATION_INTERVAL: process.env.AUTHENTICATION_INTERVAL,\n AXS_DOMAIN: process.env.AXS_DOMAIN,\n GLOBAL_API_GATEWAY_BACKOFFICE: process.env.GLOBAL_API_GATEWAY_BACKOFFICE,\n GLOBAL_API_GATEWAY: process.env.GLOBAL_API_GATEWAY,\n GLOBAL_ASSETS_DOMAIN: process.env.GLOBAL_ASSETS_DOMAIN,\n GLOBAL_IMPORTMAP_URL: process.env.GLOBAL_IMPORTMAP_URL,\n GLOBAL_PUB_APPS: process.env.GLOBAL_PUB_APPS,\n GLOBAL_PUBLIC_RESOURCES: process.env.GLOBAL_PUBLIC_RESOURCES,\n GTM_KEY_PORTAL_TRACK: process.env.GTM_KEY_PORTAL_TRACK,\n GTM_KEY: process.env.GTM_KEY,\n INTRANALYTICS_URL: process.env.INTRANALYTICS_URL,\n LANDING_URL: process.env.LANDING_URL,\n LMS_URL: process.env.LMS_URL,\n LEARNING_MAP_URL: process.env.LEARNING_MAP_URL,\n NEW_LMS_URL: process.env.NEW_LMS_URL,\n LMS_QUESTIONNAIRE_HOST: process.env.LMS_QUESTIONNAIRE_HOST,\n})\n","import packageCore from '@ubits/library-core/package.json'\nimport packageEnums from '@ubits/library-enums/package.json'\nimport packageEventsTrack from '@ubits/library-events-track/package.json'\nimport packageInternationalization from '@ubits/library-internationalization/package.json'\n\nexport function getDevDependencies() {\n const name = 'Manager'\n window[`devDependencies${name}`] = {\n '@ubits/library-core': packageCore.version,\n '@ubits/library-enums': packageEnums.version,\n '@ubits/library-events-track': packageEventsTrack.version,\n '@ubits/library-internationalization': packageInternationalization.version,\n }\n\n window['allDevDependencies'] = () => {\n return Object.keys(window)\n .filter(key => key.includes('devDependencies'))\n .reduce((obj, key) => {\n return Object.assign(obj, {\n [key]: window[key],\n })\n }, {})\n }\n\n window['environment'] = process.env.ENV\n}\n","import { registerApplication as registerApplicationSPA, start } from 'single-spa'\nimport { recordApplication } from './record.application'\n\nexport function registerApplication() {\n recordApplication.forEach(config => registerApplicationSPA(config))\n}\n\nexport function startApplication() {\n start()\n}\n","export function footerTycEventListener() {\n const linkElement = document.querySelector(\"[id='link-terms']\")\n if (linkElement)\n linkElement.addEventListener('click', () => {\n document.dispatchEvent(\n new CustomEvent('openTermsConditionsText', {\n bubbles: true,\n detail: { show: true },\n })\n )\n })\n}\n","export function ubitsManagerContentScroll() {\n const contentElement = document.querySelector('.ubits-manager__content')\n if (!contentElement) return\n\n contentElement.addEventListener('scroll', _ => {\n document.dispatchEvent(new CustomEvent('ubitsManagerContentScroll', { bubbles: true }))\n })\n}\n","export function refreshLmsService() {\n if (window.self !== window.top) {\n window.parent.postMessage({ status: 'refreshLms', origin: window.location.href }, '*')\n }\n}\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","exports","cssWithMappingToString","list","toString","this","map","item","content","needLayer","concat","length","join","i","modules","media","dedupe","supports","layer","undefined","alreadyImportedModules","k","_k","cssMapping","btoa","base64","unescape","encodeURIComponent","JSON","stringify","data","sourceMapping","hasProp","remove","icPart","Inflections","plurals","singulars","uncountables","humans","acronyms","acronymRegex","getInstance","locale","storage","process","g","__Inflector_Inflections","prototype","acronym","word","toLowerCase","values","key","RegExp","plural","rule","replacement","unshift","singular","irregular","s0","sRest","substr","p0","pRest","toUpperCase","sRestIC","pRestIC","uncountable","words","Array","slice","call","arguments","human","clear","scope","Transliterator","Methods","defaults","isFunc","Inflector","inflections","fn","transliterations","pluralize","_applyInflections","singularize","camelize","term","uppercaseFirstLetter","result","self","replace","a","capitalize","source","match","b","idx","string","underscore","camelCasedWord","$1","$2","humanize","lowerCaseAndUnderscoredWord","options","ii","test","indexOf","str","String","charAt","titleize","boundary","letter","tableize","className","classify","tableName","dasherize","underscoredWord","foreignKey","separateWithUnderscore","ordinal","number","absNumber","Math","abs","Number","mod100","ordinalize","transliterate","parameterize","separator","separatorRegex","rules","regex","DEFAULT_APPROXIMATIONS","c","approximations","approximate","__Inflector_Transliterator","en","inflect","hasOwnProp","Object","hasOwnProperty","obj","split","splice","arr","elem","Serializer","Deserializer","Error","isPlainObject","isFunction","_find","_extend","_transform","jsonapi","opts","isComplexType","isArray","keyForAttribute","attribute","value","attr","caserize","extractAttributes","from","dest","attributes","typeAsAttribute","type","meta","extractRelationships","ancestry","relationships","Promise","all","keys","relationship","relationshipData","extractIncludes","then","includes","resolve","included","results","findIncluded","valueForRelationship","valueForRelationshipFct","getValueForRelationship","perform","record","links","transform","DeserializerUtils","deserialize","callback","d","errors","forEach","error","status","code","title","detail","pointer","parameter","about","ErrorUtils","_merge","_identity","_mapValues","_mapKeys","_pick","_pickBy","_each","_isNil","collectionName","payload","includedSet","transformFunction","attributeFunction","keyForAttributeFunction","getId","getType","attrVal","typeForAttribute","pluralizeType","getLinks","current","getMeta","pickFunction","pick","serialize","ref","serializeRef","ignoreRelationshipData","relationshipLinks","related","relationshipMeta","serializeNested","val","getRef","includedAttrs","nullIfMissing","filter","includedLinks","setKey","get","isCompoundDocumentIncluded","set","pushToIncluded","embeds","ret","embedsFunction","embed","dataLinks","dataMeta","splittedAttributes","attributeMap","SerializerUtils","records","that","Map","topLevelLinks","serializerUtils","DataView","getNative","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","entries","index","entry","has","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","Set","setCacheAdd","setCacheHas","SetCache","__data__","add","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","size","Symbol","Uint8Array","WeakMap","func","thisArg","args","apply","array","iteratee","predicate","resIndex","baseTimes","isArguments","isBuffer","isIndex","isTypedArray","inherited","isArr","isArg","isBuff","isType","skipIndexes","offset","baseAssignValue","eq","object","objValue","defineProperty","isObject","objectCreate","create","baseCreate","proto","baseForOwn","baseEach","createBaseEach","fromIndex","fromRight","arrayPush","isFlattenable","baseFlatten","depth","isStrict","baseFor","createBaseFor","castPath","toKey","path","keysFunc","symbolsFunc","getRawTag","objectToString","symToStringTag","toStringTag","baseGetTag","isObjectLike","baseIsEqualDeep","baseIsEqual","other","bitmask","customizer","stack","equalArrays","equalByTag","equalObjects","getTag","argsTag","arrayTag","objectTag","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","isMasked","toSource","reIsHostCtor","funcProto","Function","objectProto","funcToString","reIsNative","isLength","typedArrayTags","baseMatches","baseMatchesProperty","identity","property","isPrototype","nativeKeys","nativeKeysIn","isProto","baseIsMatch","getMatchData","matchesStrictComparable","hasIn","isKey","isStrictComparable","assignMergeValue","baseMergeDeep","keysIn","safeGet","baseMerge","srcIndex","newValue","cloneBuffer","cloneTypedArray","copyArray","initCloneObject","isArrayLikeObject","toPlainObject","mergeFunc","stacked","isCommon","isTyped","basePickBy","paths","baseGet","baseSet","overRest","setToString","start","assignValue","lastIndex","nested","constant","baseSetToString","n","arrayMap","isSymbol","symbolProto","symbolToString","baseToString","trimmedEndIndex","reTrimStart","cache","stringToPath","arrayBuffer","constructor","byteLength","root","freeExports","nodeType","freeModule","Buffer","allocUnsafe","buffer","isDeep","copy","cloneArrayBuffer","typedArray","byteOffset","props","isNew","coreJsData","baseRest","isIterateeCall","assigner","sources","guard","isArrayLike","eachFunc","collection","iterable","baseIteratee","findIndexFunc","e","arraySome","cacheHas","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","mapToArray","setToArray","symbolValueOf","valueOf","tag","name","message","convert","getAllKeys","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","flatten","freeGlobal","baseGetAllKeys","getSymbols","getSymbolsIn","isKeyable","baseIsNative","getValue","getPrototype","overArg","getPrototypeOf","nativeObjectToString","isOwn","unmasked","arrayFilter","stubArray","propertyIsEnumerable","nativeGetSymbols","getOwnPropertySymbols","symbol","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ArrayBuffer","Ctor","ctorString","hasFunc","nativeCreate","spreadableSymbol","isConcatSpreadable","reIsUint","reIsDeepProp","reIsPlainProp","uid","maskSrcKey","exec","IE_PROTO","assocIndexOf","pop","getMapData","memoize","freeProcess","nodeUtil","require","types","binding","arg","nativeMax","max","otherArgs","freeSelf","shortOut","nativeNow","Date","now","count","lastCalled","stamp","remaining","pairs","LARGE_ARRAY_SIZE","memoizeCapped","rePropName","reEscapeChar","charCodeAt","quote","subString","reWhitespace","copyObject","createAssigner","assignIn","find","createFind","baseFindIndex","toInteger","arrayEach","castFunction","defaultValue","baseHasIn","hasPath","baseIsArguments","stubFalse","objectCtorString","baseIsTypedArray","baseUnary","nodeIsTypedArray","arrayLikeKeys","baseKeys","baseKeysIn","resolver","TypeError","memoized","Cache","merge","basePick","flatRest","getAllKeysIn","prop","baseProperty","basePropertyDeep","toNumber","INFINITY","toFinite","remainder","baseTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","isBinary","accumulator","isArrLike","stylesInDOM","getIndexByIdentifier","identifier","modulesToDom","idCountMap","identifiers","base","indexByIdentifier","css","sourceMap","references","updater","addElementStyle","byIndex","api","domAPI","update","newObj","lastIdentifiers","newList","newLastIdentifiers","_i","_index","memo","insert","style","target","styleTarget","document","querySelector","window","HTMLIFrameElement","contentDocument","head","getTarget","appendChild","element","createElement","setAttributes","styleElement","nonce","setAttribute","insertStyleElement","styleTagTransform","parentNode","removeChild","removeStyleElement","styleSheet","cssText","firstChild","createTextNode","resolveDirectory","rootDirLevel","url","console","urlString","rootDirectoryLevel","href","pathname","numDirsProcessed","finalPath","protocol","host","isInteger","__WEBPACK_EXTERNAL_MODULE__1496__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","y","__system_context__","getter","__esModule","definition","o","enumerable","globalThis","r","nmd","children","p","nc","autoPublicPath","asyncGeneratorStep","gen","reject","_next","_throw","info","done","_asyncToGenerator","err","t","locals","SuppressedError","default","locked","addToLocked","isLocked","lock","unlock","setTimeout","delete","instance","__awaiter","next","s","throw","__generator","label","sent","trys","ops","return","iterator","getItem","localStorage","removeItem","setItem","keySync","getItemSync","clearSync","removeItemSync","setItemSync","u","floor","random","l","acquiredIatSet","storageHandler","acquireLock","bind","releaseLock","releaseLock__private__","waitForSomethingToChange","refreshLockWhileAcquired","waiters","h","m","iat","timeoutKey","timeAcquired","timeRefreshed","parse","lockCorrector","removeEventListener","removeFromWaiting","clearTimeout","addEventListener","addToWaiting","notifyWaiters","timeoutInSeconds","version","super","error_description","setPrototypeOf","fromPayload","state","appState","popup","mfa_token","f","audience","w","crypto","getRandomValues","v","clientId","URLSearchParams","reduce","assign","client_id","decodeURIComponent","atob","_","async","fetch","ok","json","O","auth","timeout","fetchUrl","fetchOptions","useFormData","MessageChannel","port1","onmessage","close","postMessage","port2","S","AbortController","signal","race","abort","finally","I","T","baseUrl","auth0Client","method","body","headers","j","Boolean","trim","C","prefix","suffix","fromKey","fromCacheEntry","z","allKeys","startsWith","P","enclosedCache","x","keyManifest","nowProvider","setIdToken","getIdTokenCacheKey","id_token","decodedToken","getIdToken","getCacheKeys","matchExistingCacheKey","expiresAt","refresh_token","wrapCacheEntry","expires_in","Z","cookieDomain","storageKey","save","daysUntilExpire","K","W","R","__assign","expires","setMilliseconds","getMilliseconds","toUTCString","domain","secure","sameSite","cookie","encode","getAll","U","L","D","X","location","N","J","sessionStorage","V","M","substring","Blob","URL","createObjectURL","F","Worker","A","B","manifestKey","createManifestKeyFrom","$","memory","localstorage","q","Q","openUrl","onRedirect","ee","te","userCache","defaultOptions","authorizationParams","useRefreshTokensFallback","_releaseLockOnPageHide","subtle","cacheLocation","warn","httpTimeoutMs","httpTimeoutInSeconds","cookieStorage","legacySameSiteCookie","orgHintCookieName","isAuthenticatedCookieName","sessionCheckExpiryDays","useCookiesForTransactions","useRefreshTokens","transactionManager","cacheManager","domainUrl","tokenIssuer","issuer","workerUrl","worker","_url","_authorizeUrl","_verifyIdToken","__raw","encoded","header","signature","claims","user","iss","sub","alg","aud","azp","max_age","auth_time","exp","leeway","setUTCSeconds","nbf","organization","org_id","org_name","E","_processOrgHint","_prepareAuthorizeUrl","fromCharCode","digest","TextEncoder","response_type","response_mode","redirect_uri","code_challenge","code_challenge_method","code_verifier","loginWithPopup","screenX","innerWidth","screenY","innerHeight","open","origin","setInterval","closed","clearInterval","response","authorizeTimeoutInSeconds","_requestToken","grant_type","nonceIn","getUser","_getIdTokenFromCache","getIdTokenClaims","loginWithRedirect","fragment","handleRedirectCallback","checkSession","getTokenSilently","cacheMode","_getTokenSilently","detailedResponse","access_token","_getEntryFromCache","_getTokenUsingRefreshToken","_getTokenFromIFrame","oauthTokenScope","getTokenWithPopup","isAuthenticated","_buildLogoutUrl","logoutParams","federated","logout","prompt","crossOriginIsolated","display","contains","_saveEntryInCache","UserPermission","CustomizationSectionEnum","CustomizationTypeEnum","FeatureFlagEnum","UbitsMaxProductsEnum","UbitsMaxCategoryEnum","UbitsPlaylistTypesEnum","UbitsPlaylistActionsEnum","SideMenuSectionsEnum","SideMenuPathsEnum","UbitsStatusCourseStudyZone","ContextMoodleEnum","PluginMoodleEnum","RoleTypeEnum","PlanTypeLabelEnum","PlanTypeEnum","GenderTypeEnum","EducationLevelEnum","RoleIdEnum","EnvironmentEnum","injectProperties","init","Auth0CredentialModel","Auth0UserModel","givenName","familyName","middleName","nickname","preferredUsername","profile","picture","website","email","emailVerified","gender","birthDate","zoneInfo","phoneNumber","phoneNumberVerified","address","updatedAt","username","loginsCount","userMetadata","Auth0UserMetadataModel","area","city","companyId","companyName","country","lastMetadataUpdate","mdlCompanyId","mdlUserId","organizationLevel","roleAuth0Id","roleAuth0Name","roleId","roleShortname","userId","position","auth0Repository","uuid","credentials","global","auth0","redirectUri","createClient","getAuthorizationParams","login","targetUrl","metadata","accessToken","catch","idToken","returnTo","HttpSimpleRepository","InterceptorSimpleRepository","originRepository","interceptor","originResponse","interceptorResponse","MemorySimpleRepository","BrowsersEnum","MonthFormatTypeEnum","SortEnum","FilterOperatorEnum","FilterLogicalOperatorEnum","clearData","clearStorage","caches","deleteCaches","cookieName","deleteAllCookies","ubitsDispatchEvent","event","dispatchEvent","normalizeString","normalize","filterObject","logicalOperator","items","currentArgs","getValidArgs","validations","operator","value1","deserializeData","value2","isValid","EqualTo","NotEqualTo","GreaterThan","GreaterThanOrEqualTo","LessThan","LessThanOrEqualTo","ILike","currentValue","toLocaleLowerCase","search","iLikeOperator","ContainsWord","words2","some","word1","word2","containsWordOperator","Includes","includesOperator","compareValues","validateItemValues","AND","every","validateByLogicalOperatorAnd","OR","primaryKeys","secondaryKeys","primary","validation","validateByLogicalOperatorOr","validateByLogicalOperator","sortObjects","sort","fa","fb","DESC","reverse","Long","Short","EnvManager","static","env","variables","envManager","HTTPResponseStatusCodesEnums","httpFetch","request","cause","errorMessage","expression","cases","BadRequest","NotFound","Unauthorized","InternalServerError","CustomEvent","bubbles","dispatchResponse","appendHeaderAuthorization","authInformer","append","Intl","DateTimeFormat","resolvedOptions","timeZone","httpRequest","isJson","Headers","Request","showLoading","showHeader","show","Strategy","storageService","WebStorageUnencryptedDataStrategy","WebStorageContext","strategy","createStrategy","dispatchChangeEvent","WebStorageSimpleRepository","reference","webStorageContext","accessTokenRepository","accessTokenInformer","decodeToken","token","tokenIsValid","accessTokenManager","setAccessToken","UserApkStorageRepository","TokenApkStorageRepository","apkManager","initializeApk","searchParams","setTokenApk","setUserApk","storedObject","localStorageKey","repository","userObject","auth0Informer","getPermissions","permissions","decodedAccessToken","permissionCandidate","userPermissionLike","pushPermissionOnce","auth0Manager","requestAccessToken","accessTokenExpirationDate","accessTokenExpirationTimestamp","getTime","originPageRepository","originPageID","originPage","OriginPageModel","originPageManager","load","AuthBroadcastChannelEnum","authBroadcastChannel","broadcastChannel","subscribe","BroadcastChannel","onBroadcastChannelMessage","unSubscribe","dispatchAction","action","Logout","onLogoutMessage","landingPage","authMoodleRepository","res","authManager","initializeApp","handleAuthenticatedUser","shouldParseRedirectResult","hash","replaceState","query","history","redirectTo","onLogoutCallback","userData","SubscriptionModel","userName","role","Student","lastName","firstName","learningId","policyAgreed","fullName","subscriptionType","timeCreated","subscriptionStartDate","subscriptionEndDate","subscriptionIsActive","planType","Demo","planName","linkedInUrl","educationLevel","companyAreaName","companyPosition","featuresMigrate","subscriptionData","Female","University","coBrandingData","titleLogo","description","descriptionLogo","UserModel","_permissions","setPermissions","userPermissions","permission","AdminHrCompanySwitch","hasPermission","userPermission","hasPermissions","userInformer","userEmail","loadData","providerFactory","providers","currentEnv","Development","HttpRepository","searchPaginator","inputFormat","outputFormat","MemoryRepository","ids","getArgsFilterSearch","order","currentItems","sliceData","countFilter","page","end","WebStorageRepository","getKeyId","elementKey","CoBrandingModel","CoBrandingMemoryRepository","CoBrandingHttpRepository","currentUrl","headerTitle","headerDescription","coBrandingRepository","Production","Test","Local","Mocked","ContactModel","phone","personalEmail","businessEmail","ContactMemoryRepository","ContactHttpRepository","endpoint","contactRepository","isUpdateRequired","contactData","updateRequired","FeatureFlagsModel","active","featureFlagsRepository","featureFlagsInformer","featureFlagsManager","SubscriptionSimpleMemoryRepository","SubscriptionHttpSimpleRepository","subscriptionMemorySimpleRepository","subscriptionOriginRepository","storageSimpleRepository","subscriptionRepository","subscriptionInformer","subscription","loadFeatureFlags","getBaseSubscription","featureFlag","isActive","clearStorageSubscription","CustomizationModel","section","sectionId","CustomizationMemoryRepository","CustomizationHttpRepository","customizations","addCustomization","customization","files","getFiles","loadImage","customValue","typeId","outputFormatCustomizationValue","getAllCustomizations","keyValue","src","fileName","getFileExtension","base64Data","bodyFiles","urlImages","defaultData","migrate","visible","currentCustomization","customizationOriginRepository","customizationStorageInterceptorRepository","customizationRepository","searchObjects","getById","setValues","updateCustomizations","deleteValue","dispatchCustomizationEvent","OnboardingModel","onboardingIsSkipped","onboardingSkippedUpdatedAt","onboardingData","OnboardingMemoryRepository","OnboardingHttpRepository","onboardingRepository","reload","dispatchUpdateOnboarding","PreferenceCompanyModel","partnership","homePage","onboarding","updateHomePage","preferenceCompanyData","PreferenceCompanyMemoryRepository","PreferenceCompanyHttpRepository","preferenceCompanyRepository","preferenceCompanyInformer","getHomePage","preferenceCompanyManager","PreferenceUserThemeEnum","PreferenceUserModel","theme","Light","preferenceUserData","PreferenceUserMemoryRepository","PreferenceUserHttpRepository","Dark","preferenceUserRepository","preferenceUserManager","dispatchUpdatePreferenceUser","ProfilePictureModel","image","profilePictureData","ProfilePictureMemoryRepository","ProfilePictureHttpRepository","currentDate","profilePictureRepository","TermsAndConditionsModel","currentVersionId","policyVersionCreated","acceptanceDate","isFirstPolicyAcceptance","termsAndConditionsData","TermsAndConditionsHttpRepository","termsAndConditionsRepository","termsAndConditions","recordApplication","app","System","activeWhen","customProps","localModules","ISLOCAL","resources","resource","relation","routerList","adminHRCertificates","adminHRCustomization","adminHRCompany","adminHRHelpCenter","adminHRHome","adminHRMetrics","adminHRUsers","adminHR","catalog","contentAuthoring","homeLearning","homePlaylist","homeProgram","homeCertificate","homeCompetence","homeStudyZone","homeUbitsMax","lmsCourse","lmsStudentMetrics","lmsCreator","lmsLearner","lmsUniversity","assessments360","objectives","organizationChart","surveys","portal","appcuesService","enableURLDetection","script","onload","_loadAppcues","loadAppcues","updateAppcuesPage","appcues","regeneratorRuntime","mark","_callee","wrap","_context","prev","abrupt","identify","stop","_classCallCheck","Constructor","_typeof","toPropertyKey","toPrimitive","_defineProperties","descriptor","configurable","writable","_createClass","protoProps","staticProps","_defineProperty","dataLayer","windowGlobal","documentGlobal","customDataLayer","insertGoogleTagManagerCode","insertGoogleTagManagerNoScript","emit","findScriptBySrc","currentScript","findIframeBySrc","noscriptElement","iframeElement","height","width","visibility","scripts","querySelectorAll","iFrames","iframe","DataLayerDirective","_ref","model","_loadDefaultData","_getValue","_dispatch","getDataLayer","eventModel","_callee2","_context2","loadDefaultData","_objectSpread","countryId","screenName","timeStamp","_callee3","_context3","dispatchDataLayer","internalEventName","tagName","_tagName","_tagName$trim","tabName","cardType","contentId","contentType","contentTitle","dataLayerDirective","dispatch","dispatchCurrentPageEvent","defaultHomePage","defaultAdminPage","isCustomCourseCreator","_isCustomCourseCreator","CustomCourseCreator","isAdminSetup","_isAdminSetup","AdminSetup","getHomepage","_getHomepage","isAdmin","getCompanyPage","_getCompanyPage","_callee4","_context4","decodeCache","decode","exclude","defaultChars","ch","getDecodeCache","seq","b1","b2","chr","b3","b4","componentChars","encodeCache","keepEscaped","getEncodeCache","nextCode","format","slashes","hostname","port","Url","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","hostlessProtocol","javascript","slashedProtocol","http","https","ftp","gopher","file","slashesDenoteHost","lowerProto","hec","rest","simplePath","atSign","hostEnd","lastIndexOf","parseHost","ipv6Hostname","hostparts","part","newpart","validParts","notHost","bit","qm","Uint16Array","_a","decodeMap","fromCodePoint","codePoint","output","CharCodes","BinTrieFlags","EntityDecoderState","DecodingMode","isNumber","ZERO","NINE","EntityDecoder","decodeTree","emitCodePoint","EntityStart","consumed","treeIndex","excess","decodeMode","Strict","startEntity","write","NUM","NumericStart","stateNumericStart","NamedEntity","stateNamedEntity","NumericDecimal","stateNumericDecimal","NumericHex","stateNumericHex","LOWER_X","addToNumericResult","digitCount","pow","startIdx","char","UPPER_A","UPPER_F","LOWER_A","LOWER_F","emitNumericEntity","lastCp","expectedLength","absenceOfDigitsInNumericCharacterReference","SEMI","replaceCodePoint","missingSemicolonAfterCharacterReference","validateNumericCharacterReference","valueLength","VALUE_LENGTH","determineBranch","Attribute","EQUALS","UPPER_Z","LOWER_Z","isAsciiAlphaNumeric","emitNotTerminatedNamedEntity","emitNamedEntityData","getDecoder","decoder","len","nodeIdx","branchCount","BRANCH_LENGTH","jumpOffset","JUMP_TABLE","lo","hi","mid","midVal","htmlDecoder","mode","Legacy","restoreDiff","xmlCodeMap","getEscaper","lastIdx","EntityLevel","EncodingMode","isString","_class","codePointAt","_hasOwnProperty","arrayReplaceAt","pos","newElements","isValidEntityCode","surrogate1","surrogate2","UNESCAPE_MD_RE","UNESCAPE_ALL_RE","DIGITAL_ENTITY_TEST_RE","unescapeMd","unescapeAll","escaped","entity","decoded","replaceEntityPattern","HTML_ESCAPE_TEST_RE","HTML_ESCAPE_REPLACE_RE","HTML_REPLACEMENTS","replaceUnsafeChar","escapeHtml","REGEXP_ESCAPE_RE","escapeRE","isSpace","isWhiteSpace","isPunctChar","isMdAsciiPunct","normalizeReference","lib","mdurl","parseLinkLabel","disableNested","level","found","marker","prevPos","posMax","oldPos","md","inline","skipToken","labelEnd","parseLinkDestination","lines","parseLinkTitle","default_rules","Renderer","code_inline","tokens","slf","renderAttrs","code_block","fence","highlighted","langName","langAttrs","highlight","attrIndex","tmpAttrs","attrs","langPrefix","tmpToken","renderInlineAsText","renderToken","hardbreak","xhtmlOut","softbreak","breaks","text","html_block","html_inline","hidden","block","nesting","needLf","nextToken","renderInline","render","Ruler","__rules__","__cache__","__find__","__compile__","chains","enabled","alt","altName","chain","at","opt","before","beforeName","ruleName","after","afterName","enable","ignoreInvalid","enableOnly","disable","getRules","chainName","Token","markup","attrPush","attrData","attrSet","attrGet","attrJoin","StateCore","inlineMode","NEWLINES_RE","NULL_RE","isLinkClose","RARE_RE","SCOPED_ABBR_TEST_RE","SCOPED_ABBR_RE","SCOPED_ABBR","tm","replaceFn","replace_scoped","inlineTokens","inside_autolink","replace_rare","QUOTE_TEST_RE","QUOTE_RE","replaceAt","process_inlines","thisLevel","OUTER","canOpen","canClose","isSingle","lastChar","nextChar","isLastPunctChar","isNextPunctChar","isLastWhiteSpace","isNextWhiteSpace","single","openQuote","closeQuote","quotes","_rules","tok","blockTokens","linkify","pretest","htmlLinkLevel","currentToken","nodes","lastPos","ln","fullUrl","normalizeLink","validateLink","urlText","schema","normalizeLinkText","token_o","token_t","token_c","blkIdx","typographer","curr","last","Core","ruler","State","StateBlock","bMarks","eMarks","tShift","sCount","bsCount","blkIndent","line","lineMax","tight","ddIndent","listIndent","parentType","indent","indent_found","isEmpty","skipEmptyLines","skipSpaces","skipSpacesBack","min","skipChars","skipCharsBack","getLines","begin","keepLastLF","queue","lineIndent","lineStart","first","getLine","escapedSplit","isEscaped","skipBulletListMarker","startLine","skipOrderedListMarker","open_tag","close_tag","HTML_TAG_RE","HTML_OPEN_CLOSE_TAG_RE","HTML_SEQUENCES","endLine","silent","nextLine","firstCh","secondCh","lineText","columns","aligns","shift","columnCount","oldParentType","terminatorRules","tableLines","token_ho","token_il","tbodyLines","terminate","token_tdo","mem","params","haveEndMarker","oldLineMax","oldBMarks","oldBSCount","oldSCount","oldTShift","lastLineEmpty","isOutdented","spaceAfterMarker","adjustTab","initial","oldIndent","tokenize","cnt","isOrdered","markerValue","posAfterMarker","isTerminatingParagraph","markerCharCode","listTokIdx","listLines","prevEmptyEnd","contentStart","indentAfterMarker","itemLines","oldTight","oldListIndent","markTightParagraphs","_endLine","destRes","helpers","destEndPos","destEndLineNo","titleRes","html","tmp","token_i","ParserBlock","maxNesting","hasEmptyLines","prevLine","outTokens","StateInline","tokens_meta","pending","pendingLevel","delimiters","_prev_delimiters","backticks","backticksScanned","linkLevel","pushPending","token_meta","scanDelims","canSplitWord","can_open","can_close","left_flanking","right_flanking","isTerminatorChar","SCHEME_RE","ESCAPED","postProcess","loneMarkers","startDelim","endDelim","scanned","isStrong","EMAIL_RE","AUTOLINK_RE","DIGITAL_RE","NAMED_RE","processDelimiters","openersBottom","headerIdx","lastTokenIdx","jumps","closerIdx","closer","minOpenerIdx","openerIdx","newMinOpenerIdx","opener","isOddMatch","lastJump","link","matchAtStart","pmax","ws","ch1","escapedStr","ch2","origStr","openerLength","matchStart","matchEnd","closerLength","parseReference","labelStart","lc","isLetter","_rules2","ParserInline","ruler2","fuzzyLink","fuzzyEmail","fuzzyIP","defaultSchemas","validate","tail","re","src_auth","src_host_port_strict","src_path","no_http","src_domain","src_domain_root","src_port","src_host_terminator","mailto","src_email_name","src_host_strict","tlds_2ch_src_re","tlds_default","compile","src_Any","src_Cc","src_Z","src_P","src_ZPCc","src_ZCc","src_pseudo_letter","src_ip4","src_xn","src_host","tpl_host_fuzzy","tpl_host_no_ip_fuzzy","tpl_host_fuzzy_strict","tpl_host_port_fuzzy_strict","tpl_host_port_no_ip_fuzzy_strict","tpl_host_fuzzy_test","tpl_email_fuzzy","tpl_link_fuzzy","tpl_link_no_ip_fuzzy","__opts__","tlds","__tlds__","untpl","tpl","src_tlds","onCompile","__tlds_replaced__","email_fuzzy","link_fuzzy","link_no_ip_fuzzy","host_fuzzy_test","aliases","schemaError","__compiled__","__schemas__","compiled","createValidator","alias","slist","schema_test","schema_search","schema_at_start","__index__","__text_cache__","resetScanCache","Match","__last_index__","__schema__","raw","createMatch","LinkifyIt","schemas","acc","ml","me","tld_pos","at_pos","testSchemaAt","keepOld","el","maxInt","regexPunycode","regexNonASCII","regexSeparators","stringFromCharCode","RangeError","mapDomain","parts","ucs2decode","counter","extra","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","baseMinusTMin","input","inputLength","bias","basic","oldi","baseMinusT","out","basicLength","handledCPCount","handledCPCountPlusOne","qMinusT","codePoints","config","components","core","zero","rules2","commonmark","BAD_PROTO_RE","GOOD_DATA_RE","RECODE_HOSTNAME_FOR","parsed","er","MarkdownIt","presetName","renderer","utils","configure","presets","missed","use","plugin","parseInline","angry","blush","broken_heart","confused","cry","frowning","heart","imp","innocent","joy","kissing","laughing","neutral_face","open_mouth","rage","smile","smiley","smiling_imp","sob","stuck_out_tongue","sunglasses","sweat","sweat_smile","unamused","wink","emoji_html","defs","shortcuts","emojies","names","scanRE","replaceRE","normalize_opts","emoji","ucm","ucmicro","ZPCc","Cc","splitTextToken","last_pos","emoji_name","autolinkLevel","consoleLogger","log","Logger","concreteLogger","logger","debug","_len","_key","forward","_len2","_key2","_len3","_key3","deprecate","_len4","_key4","lvl","debugOnly","moduleName","clone","baseLogger","EventEmitter","observers","on","events","listener","numListeners","off","observer","numTimesAdded","_ref2","defer","rej","promise","makeString","lastOfPathSeparatorRegExp","getLastOfPath","Empty","cleanKey","canNotTraverseDeeper","stackIndex","setPath","getPath","deepExtend","overwrite","regexEscape","_entityMap","chars","looksLikeObjectPathRegExpCache","capacity","regExpMap","regExpQueue","getRegExp","pattern","regExpFromCache","regExpNew","deepFind","keySeparator","nextPath","getCleanedCode","ResourceStore","ns","defaultNS","ignoreJSONStructure","addNamespaces","removeNamespaces","getResource","lng","addResource","addResources","addResourceBundle","deep","skipCopy","pack","removeResourceBundle","hasResourceBundle","getResourceBundle","compatibilityAPI","getDataByLanguage","hasLanguageSomeTranslations","toJSON","postProcessor","processors","addPostProcessor","handle","translator","processor","checkedLoadedFor","Translator","services","changeLanguage","language","exists","interpolation","resolved","extractFromKey","nsSeparator","namespaces","wouldCheckForNsInKey","seemsNaturalLanguage","userDefinedKeySeparator","userDefinedNsSeparator","possibleChars","matched","ki","looksLikeObjectPath","interpolator","nestingRegexp","translate","lastKey","overloadTranslationOptionHandler","returnDetails","namespace","appendNamespaceToCIMode","usedKey","exactUsedKey","usedLng","usedNS","usedParams","getUsedParamsDetails","resUsedKey","resExactUsedKey","resType","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","returnObjects","returnedObjectHandler","resTypeIsArray","newKeyToUse","deepKey","extendTranslation","usedDefault","needsPluralHandling","hasDefaultValue","defaultValueSuffix","pluralResolver","getSuffix","defaultValueSuffixOrdinalFallback","needsZeroSuffixLookup","shouldUseIntlApi","pluralSeparator","isValidLookup","resForMissing","missingKeyNoValueFallbackToKey","updateMissing","fk","lngs","fallbackLngs","languageUtils","getFallbackCodes","fallbackLng","saveMissingTo","toResolveHierarchy","send","specificDefaultValue","defaultForMissing","missingKeyHandler","backendConnector","saveMissing","saveMissingPlurals","suffixes","getSuffixes","appendNamespaceToMissingKey","parseMissingKeyHandler","_this","defaultVariables","skipInterpolation","skipOnVariables","nestBef","nb","interpolate","na","nest","context","reset","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","extracted","fallbackNS","needsContextHandling","codes","hasLoadedNamespace","finalKeys","addLookupKeys","pluralSuffix","zeroSuffix","ordinalPrefix","contextKey","contextSeparator","possibleKey","returnNull","returnEmptyString","resourceStore","optionsKeys","useOptionsReplaceForData","option","LanguageUtil","supportedLngs","getScriptPartFromCode","formatLanguageCode","getLanguagePartFromCode","specialCases","lowerCaseLng","cleanCode","isSupportedCode","nonExplicitSupportedLngs","getBestMatchFromCodes","cleanedLng","lngOnly","supportedLng","fallbacks","fallbackCode","fallbackCodes","addCode","fc","sets","nr","_rulesPluralsTypes","nonIntlVersions","intlVersions","suffixesOrder","one","two","few","many","PluralResolver","compatibilityJSON","PluralRules","numbers","createRules","addRule","getRule","needsPlural","pluralCategories","getPluralFormsOfKey","pluralCategory1","pluralCategory2","pluralCategory","prepend","select","getSuffixRetroCompatible","noAbs","simplifyPluralSuffix","returnSuffix","deepFindWithDefaults","getPathWithDefaults","Interpolator","escapeValue","iOpts","escape","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapePrefix","unescapeSuffix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","getOrResetRegExp","existingRegExp","regexp","regexpUnescape","replaces","regexSafe","handleFormat","interpolationkey","missingInterpolationHandler","safeValue","todo","matchedVar","temp","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","matchedSingleQuotes","matchedDoubleQuotes","formatters","doReduce","createCachedFormatter","formatter","Formatter","formats","NumberFormat","currency","datetime","relativetime","RelativeTimeFormat","range","ListFormat","addCached","formatName","formatOptions","formatStr","optStr","isNaN","parseFormatStr","formatted","valOptions","formatParams","Connector","backend","store","waitingReads","maxParallelReads","readingCalls","maxRetries","retryTimeout","queueLoad","languages","toLoad","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","pendingCount","pushPath","removePending","loadedKeys","read","fcName","tried","wait","prepareLoading","loadOne","fallbackValue","isUpdate","clb","initImmediate","preload","partialBundledLanguages","tDescription","transformOptions","noop","I18n","inst","external","getOwnPropertyNames","isInitialized","isClone","isInitializing","defOpts","createClassOnDemand","ClassOrObject","lu","languageDetector","detection","deferred","finish","initializedStoreOnce","loadResources","usedCallback","resolvedLanguage","setResolvedLanguage","reloadResources","li","lngInLngs","_this2","isLanguageChangingTo","setLngProps","setLng","cacheUserLanguage","detect","getFixedT","keyPrefix","_this3","fixedT","resultKey","setDefaultNamespace","lastLng","loadNotPending","loadState","precheck","preResult","loadNamespaces","loadLanguages","preloaded","newLngs","dir","createInstance","cloneInstance","forkResourceStore","mergedOptions","markdown","FormatDate","date","utcDestination","timeMilliseconds","currentOffset","getTimezoneOffset","utcConversion","FormatNumber","InternationalizationLanguageEnum","InternationalizationEventEnum","InternationalizationResourceEnum","TranslationRepository","i18nLibrary","addDataToResource","getResourceData","TranslationService","resourceCallback","translations","getDataFromResourceCallback","translation","getNewTranslation","LoadTranslation","getLoadedResources","setResourceCallback","resourceName","TranslationProvider","translationServices","setLanguage","updateResourceCallback","currentLoadedResources","getLoadedResourcesService","createNewService","getService","Internationalization","defaultLanguage","translationProvider","formatDate","formatNumber","getLanguage","isLanguageValid","SetLanguage","dispatchSetLanguage","elements","tagNames","resultList","findAllUbitsInternationalizationElements","node","HTMLElement","child","childNodes","shadowRoot","getAllUbitsInternationalizationElements","updateInternationalizationElements","getBrowserLanguage","navigator","SpanishColombia","internationalization","internationalizationKey","classInstance","StoreTemporarily","_resolvePromiseQueue","_load","getData","promises","resolving","resolvePromiseQueue","_x3","_x","_x2","_this$promises$pop","t0","autoRemove","storeTemporarily","languageKeyId","internationalizationService","_internationalizationService","configInternationalization","_configInternationalization","_resourceCallback","respuesta","recursos","_logout","unmountApplications","_unmountApplications","apps","_iterator","_step","getMountedApps","_createForOfIteratorHelper","unregisterApplication","SessionManager","_loadData","_refreshTokenMessageTimer","_dispatchUpdateSessionMessage","_anticipatedExp","_registerEvents","_onUserLoggedIntoSystem","_isSessionActive","_main","registerEvents","tokenExp","blacklist","_location","isSessionActive","_callee5","_context5","refreshTokenMessageTimer","visibilityState","onUserLoggedIntoSystem","_callee6","anticipatedTime","_context6","setSeconds","_callee7","anticipatedExp","_context7","_callee9","_context9","_callee8","_context8","dispatchUpdateSessionMessage","_callee10","_context10","sessionManager","routerService","_routerService","onRouterHashchange","navigateToUrl","getRouterItem","routerKey","routerItemUrl","updateDocumentTitle","routerItem","routerTitle","_onRouterHashchange","reloadHandlerLogout","reloadHandlerCourseCreator","reloadHandlerAdmin","reloadHandlerLMS","reloadHandlerInitial","redirectToHomepage","_redirectToHomepage","t1","t2","_reloadHandlerCourseCreator","regexUlmsUrl","_reloadHandlerInitial","_reloadHandlerAdmin","regexAdminHRUrl","_reloadHandlerLMS","whitelist","top","_reloadHandlerLogout","_ref3","rel","loadLinkResources","_initializeApp","envs","ENV","ACTIVITY_INTERVAL","API_ACCESS_INTRANALYTICS","ASSETS_DOMAIN","AUTH0_AUDIENCE","AUTH0_CLIENT_ID","AUTH0_DOMAIN","AUTHENTICATION_INTERVAL","AXS_DOMAIN","GLOBAL_API_GATEWAY_BACKOFFICE","GLOBAL_API_GATEWAY","GLOBAL_ASSETS_DOMAIN","GLOBAL_IMPORTMAP_URL","GLOBAL_PUB_APPS","GLOBAL_PUBLIC_RESOURCES","GTM_KEY_PORTAL_TRACK","GTM_KEY","INTRANALYTICS_URL","LANDING_URL","LMS_URL","LEARNING_MAP_URL","NEW_LMS_URL","LMS_QUESTIONNAIRE_HOST","packageCore","packageEnums","packageEventsTrack","packageInternationalization","main","registerApplicationSPA","currentLocation","popstateEvent","componentKey","linkElement","contentElement","parent"],"sourceRoot":""}