{"version":3,"file":"./index.bundle.js","mappings":";;;;;;;;;AAAA,gHAA+C;;;;;;;;;;;;;;;;;;;;;ICA1BA;AACpB,iBAAc;AAAA;;AACb,SAAKC,mBAAL,GAA2B,EAA3B;AACA,SAAKC,gBAAL,GAAwB,EAAxB;AACA,SAAKC,uBAAL,GAA+B,CAA/B;AACA,SAAKC,cAAL,GAAsB,IAAtB;AACA,SAAKC,cAAL,GAAsB,KAAtB;AAEA,SAAKC,mBAAL,GAA2B,EAA3B;AACA,SAAKC,gBAAL,GAAwB,EAAxB;AACA,SAAKC,uBAAL,GAA+B,CAA/B;AACA,SAAKC,cAAL,GAAsB,IAAtB;AACA,SAAKC,cAAL,GAAsB,KAAtB;AAEA,SAAKC,gCAAL,GAAwC,GAAxC;AAEA,SAAKC,cAAL,GAAsB,IAAtB;AAEA,SAAKC,YAAL,GAAoB,EAApB;AAEA,SAAKC,WAAL,GAAmB;AAClBC,MAAAA,EAAE,EAAE;AACHC,QAAAA,MAAM,EAAE,EADL;AAEHC,QAAAA,IAAI,EAAE;AAFH,OADc;AAKlBC,MAAAA,EAAE,EAAE;AACHF,QAAAA,MAAM,EAAE,EADL;AAEHC,QAAAA,IAAI,EAAE;AAFH,OALc;AASlBE,MAAAA,EAAE,EAAE;AACHH,QAAAA,MAAM,EAAE,EADL;AAEHC,QAAAA,IAAI,EAAE;AAFH,OATc;AAalBG,MAAAA,EAAE,EAAE;AACHJ,QAAAA,MAAM,EAAE,EADL;AAEHC,QAAAA,IAAI,EAAE;AAFH,OAbc;AAiBlBI,MAAAA,EAAE,EAAE;AACHL,QAAAA,MAAM,EAAE,EADL;AAEHC,QAAAA,IAAI,EAAE;AAFH,OAjBc;AAqBlBK,MAAAA,EAAE,EAAE;AACHN,QAAAA,MAAM,EAAE,EADL;AAEHC,QAAAA,IAAI,EAAE;AAFH;AArBc,KAAnB;AA2BA,SAAKM,iBAAL,GAAyB,GAAzB;AACA;;;;WAED,gBAAO;AACN,WAAKC,aAAL;AACA,WAAKC,iBAAL;AACA,WAAKC,kBAAL;AACA,WAAKC,wBAAL;AACA,WAAKC,kBAAL;AACA,WAAKC,kBAAL;AACA,WAAKC,WAAL;AACA,WAAKC,oBAAL;AACA,WAAKC,aAAL;AACA,WAAKC,SAAL;AACA,WAAKC,QAAL;AACA,WAAKC,YAAL;AACA,WAAKC,eAAL;AACA,WAAKC,iBAAL;AACA,WAAKC,cAAL;AACA,WAAKC,kBAAL;AAEA,aAAO,IAAP;AACA;;;WAED,6BAAoB;AACnBC,MAAAA,MAAM,CAACC,gBAAP,CAAwB,QAAxB,EAAkC,KAAKC,MAAL,CAAYC,IAAZ,CAAiB,IAAjB,CAAlC,EAA0D;AACzDC,QAAAA,OAAO,EAAE;AADgD,OAA1D;AAGAC,MAAAA,QAAQ,CAACJ,gBAAT,CAA0B,QAA1B,EAAoC,KAAKK,MAAL,CAAYH,IAAZ,CAAiB,IAAjB,CAApC,EAA4D;AAC3DC,QAAAA,OAAO,EAAE;AADkD,OAA5D;AAIAC,MAAAA,QAAQ,CAACE,gBAAT,CAA0B,iBAA1B,EAA6CC,OAA7C,CAAqD,UAAAC,KAAK,EAAI;AAC7DA,QAAAA,KAAK,CAACR,gBAAN,CAAuB,SAAvB,EAAkC,UAAAS,CAAC,EAAI;AACtC,cAAIA,CAAC,CAACC,GAAF,CAAMC,WAAN,GAAoBC,MAApB,CAA2B,CAA3B,EAA8B,CAA9B,KAAoC,KAAxC,EAA+C;AAC9CJ,YAAAA,KAAK,CAACK,KAAN;AACA;AACD,SAJD;AAKA,OAND;AAQAC,MAAAA,KAAK,CAACC,IAAN,CAAWX,QAAQ,CAACE,gBAAT,CAA0B,GAA1B,CAAX,EAA2CU,MAA3C,CAAkD,UAAAC,CAAC;AAAA,eAAI,CAACA,CAAC,CAACC,YAAF,CAAe,MAAf,CAAL;AAAA,OAAnD,EAAgFX,OAAhF,CAAwF,UAAAU,CAAC,EAAI;AAC5F,YAAI,CAACA,CAAC,CAACC,YAAF,CAAe,UAAf,CAAL,EAAiC;AAChCD,UAAAA,CAAC,CAACE,YAAF,CAAe,UAAf,EAA2B,GAA3B;AACA;;AAEDF,QAAAA,CAAC,CAACjB,gBAAF,CAAmB,SAAnB,EAA8B,UAAAS,CAAC,EAAI;AAClC,cAAIA,CAAC,CAACC,GAAF,CAAMC,WAAN,GAAoBC,MAApB,CAA2B,CAA3B,EAA8B,CAA9B,KAAoC,KAAxC,EAA+C;AAC9CK,YAAAA,CAAC,CAACJ,KAAF;AACA;AACD,SAJD;AAKA,OAVD;AAWA;;;WAED,kBAAS;AAAA;;AACR,UAAMO,YAAY,GAAG,SAAfA,YAAe,GAAM;AAC1B,aAAK,IAAIC,CAAC,GAAG,CAAR,EAAWC,MAAM,GAAG,KAAI,CAAC9D,mBAAL,CAAyB8D,MAAlD,EAA0DD,CAAC,GAAGC,MAA9D,EAAsED,CAAC,EAAvE,EAA2E;AAC1E,eAAI,CAAC7D,mBAAL,CAAyB6D,CAAzB;AACA;AACD,OAJD;;AAKA,UAAI,KAAK1D,cAAL,KAAwB,IAA5B,EAAkC;AACjC;AACA;;AACDyD,MAAAA,YAAY;;AACZ,UAAI,KAAKxD,cAAT,EAAyB;AACxB,aAAKD,cAAL,GAAsB4D,UAAU,CAAC,YAAM;AACtC,eAAI,CAAC5D,cAAL,GAAsB,IAAtB;AACAyD,UAAAA,YAAY;AACZ,SAH+B,EAG7B,KAAKxD,cAHwB,CAAhC;AAIA;AACD;AAED;AACD;AACA;;;;WACC,6BAAoB4D,IAApB,EAA0B;AAAA;;AACzB,WAAK/D,gBAAL,CAAsB,KAAKC,uBAA3B,IAAsD8D,IAAtD;AACA,WAAK9D,uBAAL,GAA+B,KAAKA,uBAAL,GAA+B,CAA9D,CAFyB,CAIzB;;AACA,WAAKF,mBAAL,GAA2B,EAA3B;AACAiE,MAAAA,MAAM,CAACC,IAAP,CAAY,KAAKjE,gBAAjB,EAAmC8C,OAAnC,CAA2C,UAAAG,GAAG,EAAI;AACjD,cAAI,CAAClD,mBAAL,CAAyBmE,IAAzB,CAA8B,MAAI,CAAClE,gBAAL,CAAsBiD,GAAtB,CAA9B;AACA,OAFD;AAIA,aAAO,KAAKhD,uBAAL,GAA+B,CAAtC;AACA;AAED;AACD;AACA;;;;WACC,+BAAsB8D,IAAtB,EAA4B;AAAA;;AAC3B,UAAI,KAAK/D,gBAAL,CAAsB+D,IAAtB,CAAJ,EAAiC;AAChC;AACA,eAAO,KAAK/D,gBAAL,CAAsB+D,IAAtB,CAAP,CAFgC,CAIhC;;AACA,aAAKhE,mBAAL,GAA2B,EAA3B;AACAiE,QAAAA,MAAM,CAACC,IAAP,CAAY,KAAKjE,gBAAjB,EAAmC8C,OAAnC,CAA2C,UAAAG,GAAG,EAAI;AACjD,gBAAI,CAAClD,mBAAL,CAAyBmE,IAAzB,CAA8B,MAAI,CAAClE,gBAAL,CAAsBiD,GAAtB,CAA9B;AACA,SAFD;AAIA,eAAO,IAAP;AACA,OAXD,MAWO;AACN;AACA,eAAO,KAAP;AACA;AACD;AAED;AACD;AACA;;;;WACC,kBAAS;AAAA;;AACR,UAAMU,YAAY,GAAG,SAAfA,YAAe,GAAM;AAC1B,aAAK,IAAIC,CAAC,GAAG,CAAR,EAAWC,MAAM,GAAG,MAAI,CAACzD,mBAAL,CAAyByD,MAAlD,EAA0DD,CAAC,GAAGC,MAA9D,EAAsED,CAAC,EAAvE,EAA2E;AAC1E,gBAAI,CAACxD,mBAAL,CAAyBwD,CAAzB;AACA;AACD,OAJD;;AAKA,UAAI,KAAKrD,cAAL,KAAwB,IAA5B,EAAkC;AACjC;AACA;;AACDoD,MAAAA,YAAY;;AACZ,UAAI,KAAKnD,cAAT,EAAyB;AACxB,aAAKD,cAAL,GAAsBuD,UAAU,CAAC,YAAM;AACtC,gBAAI,CAACvD,cAAL,GAAsB,IAAtB;AACAoD,UAAAA,YAAY;AACZ,SAH+B,EAG7B,KAAKnD,cAHwB,CAAhC;AAIA;AACD;AAED;AACD;AACA;;;;WACC,6BAAoBuD,IAApB,EAA0B;AAAA;;AACzB,WAAK1D,gBAAL,CAAsB,KAAKC,uBAA3B,IAAsDyD,IAAtD;AACA,WAAKzD,uBAAL,GAA+B,KAAKA,uBAAL,GAA+B,CAA9D,CAFyB,CAIzB;;AACA,WAAKF,mBAAL,GAA2B,EAA3B;AACA4D,MAAAA,MAAM,CAACC,IAAP,CAAY,KAAK5D,gBAAjB,EAAmCyC,OAAnC,CAA2C,UAAAG,GAAG,EAAI;AACjD,cAAI,CAAC7C,mBAAL,CAAyB8D,IAAzB,CAA8B,MAAI,CAAC7D,gBAAL,CAAsB4C,GAAtB,CAA9B;AACA,OAFD;AAIA,aAAO,KAAK3C,uBAAL,GAA+B,CAAtC;AACA;AAED;AACD;AACA;;;;WACC,+BAAsByD,IAAtB,EAA4B;AAAA;;AAC3B,UAAI,KAAK1D,gBAAL,CAAsB0D,IAAtB,CAAJ,EAAiC;AAChC;AACA,eAAO,KAAK1D,gBAAL,CAAsB0D,IAAtB,CAAP,CAFgC,CAIhC;;AACA,aAAK3D,mBAAL,GAA2B,EAA3B;AACA4D,QAAAA,MAAM,CAACC,IAAP,CAAY,KAAK5D,gBAAjB,EAAmCyC,OAAnC,CAA2C,UAAAG,GAAG,EAAI;AACjD,gBAAI,CAAC7C,mBAAL,CAAyB8D,IAAzB,CAA8B,MAAI,CAAC7D,gBAAL,CAAsB4C,GAAtB,CAA9B;AACA,SAFD;AAIA,eAAO,IAAP;AACA,OAXD,MAWO;AACN;AACA,eAAO,KAAP;AACA;AACD;AAED;AACD;AACA;;;;WACC,oCAA2B;AAAA;;AAC1B,WAAKkB,WAAL,GAAmB,IAAnB;AACA,WAAKC,WAAL,GAAmB9B,MAAM,CAAC+B,UAA1B;AACA,WAAKC,mBAAL,CAAyB,YAAM;AAC9B,YAAIhC,MAAM,CAAC+B,UAAP,KAAsB,MAAI,CAACD,WAA/B,EAA4C;AAC3CzB,UAAAA,QAAQ,CAAC4B,eAAT,CAAyBC,SAAzB,CAAmCC,GAAnC,CAAuC,mBAAvC;AACAC,UAAAA,YAAY,CAAC,MAAI,CAACP,WAAN,CAAZ;AAEA,gBAAI,CAACA,WAAL,GAAmBL,UAAU,CAAC,YAAM;AACnCnB,YAAAA,QAAQ,CAAC4B,eAAT,CAAyBC,SAAzB,CAAmCG,MAAnC,CAA0C,mBAA1C;AACA,WAF4B,EAE1B,MAAI,CAAClE,gCAFqB,CAA7B;AAIA,gBAAI,CAAC2D,WAAL,GAAmB9B,MAAM,CAAC+B,UAA1B;AACA;AACD,OAXD;AAYA;AAED;AACD;AACA;;;;WACC,8BAAqB;AACpB,UAAMO,UAAU,GAAG,SAAbA,UAAa,GAAM;AACxBjC,QAAAA,QAAQ,CAAC4B,eAAT,CAAyBM,KAAzB,CAA+BC,WAA/B,CAA2C,cAA3C,YAA8DxC,MAAM,CAACyC,WAArE;AACA,OAFD;;AAGA,WAAKT,mBAAL,CAAyBM,UAAzB;AACAA,MAAAA,UAAU;AACV;AAED;AACD;AACA;;;;WACC,yBAAgB;AACf;AACA,UAAII,OAAO,GAAI,CAAC,CAAC1C,MAAM,CAAC2C,GAAT,IAAgB,CAAC,CAACA,GAAG,CAACC,MAAvB,IAAkC,CAAC,CAAC5C,MAAM,CAAC6C,KAA3C,IAAoDC,SAAS,CAACC,SAAV,CAAoBC,OAApB,CAA4B,OAA5B,KAAwC,CAA1G,CAFe,CAIf;;AACA,UAAIC,SAAS,GAAG,OAAOC,cAAP,KAA0B,WAA1C;AAEA,UAAIC,QAAQ,GAAGnD,MAAM,CAAC8C,SAAP,CAAiBC,SAAjB,CAA2BK,KAA3B,CAAiC,SAAjC,CAAf;AAEA,UAAIC,MAAM,GAAGrD,MAAM,CAAC8C,SAAP,CAAiBC,SAAjB,CAA2BK,KAA3B,CAAiC,OAAjC,CAAb;AAEA,UAAIE,QAAQ,GAAGtD,MAAM,CAAC8C,SAAP,CAAiBC,SAAjB,CAA2BK,KAA3B,CAAiC,SAAjC,MAAgDpD,MAAM,CAAC8C,SAAP,CAAiBC,SAAjB,CAA2BK,KAA3B,CAAiC,SAAjC,KAA+CpD,MAAM,CAAC8C,SAAP,CAAiBC,SAAjB,CAA2BK,KAA3B,CAAiC,OAAjC,CAA/C,IAA4FpD,MAAM,CAAC8C,SAAP,CAAiBC,SAAjB,CAA2BK,KAA3B,CAAiC,QAAjC,CAA5I,CAAf,CAXe,CAaf;;AACA,UAAIG,IAAI;AAAG;AAAa,YAAK,IAAI,CAAC,CAAClD,QAAQ,CAACmD,YAA5C,CAde,CAgBf;;AACA,UAAIC,MAAM,GAAG,CAACF,IAAD,IAAS,CAAC,CAACvD,MAAM,CAAC0D,UAA/B,CAjBe,CAmBf;;AACA,UAAIC,QAAQ,GAAG,SAASC,IAAT,CAAcd,SAAS,CAACC,SAAxB,KAAsC,aAAaa,IAAb,CAAkBd,SAAS,CAACe,MAA5B,CAArD,CApBe,CAsBf;;AACA,UAAIC,OAAO,GAAG,CAACH,QAAQ,IAAIjB,OAAb,KAAyB,CAAC,CAAC1C,MAAM,CAAC+D,GAAhD;;AAEA,UAAIrB,OAAJ,EAAa;AACZrC,QAAAA,QAAQ,CAAC4B,eAAT,CAAyBC,SAAzB,CAAmCC,GAAnC,CAAuC,OAAvC;AACA;;AAED,UAAIc,SAAJ,EAAe;AACd5C,QAAAA,QAAQ,CAAC4B,eAAT,CAAyBC,SAAzB,CAAmCC,GAAnC,CAAuC,SAAvC;AACA;;AAED,UAAImB,QAAJ,EAAc;AACbjD,QAAAA,QAAQ,CAAC4B,eAAT,CAAyBC,SAAzB,CAAmCC,GAAnC,CAAuC,QAAvC;AACA;;AAED,UAAIgB,QAAJ,EAAc;AACb9C,QAAAA,QAAQ,CAAC4B,eAAT,CAAyBC,SAAzB,CAAmCC,GAAnC,CAAuC,QAAvC;AACA;;AAED,UAAIkB,MAAJ,EAAY;AACXhD,QAAAA,QAAQ,CAAC4B,eAAT,CAAyBC,SAAzB,CAAmCC,GAAnC,CAAuC,MAAvC;AACA;;AAED,UAAIoB,IAAJ,EAAU;AACTlD,QAAAA,QAAQ,CAAC4B,eAAT,CAAyBC,SAAzB,CAAmCC,GAAnC,CAAuC,IAAvC;AACA;;AAED,UAAIsB,MAAJ,EAAY;AACXpD,QAAAA,QAAQ,CAAC4B,eAAT,CAAyBC,SAAzB,CAAmCC,GAAnC,CAAuC,MAAvC;AACA;;AAED,UAAIwB,QAAJ,EAAc;AACbtD,QAAAA,QAAQ,CAAC4B,eAAT,CAAyBC,SAAzB,CAAmCC,GAAnC,CAAuC,QAAvC;AACA;;AAED,UAAI2B,OAAJ,EAAa;AACZzD,QAAAA,QAAQ,CAAC4B,eAAT,CAAyBC,SAAzB,CAAmCC,GAAnC,CAAuC,OAAvC;AACA;AACD;AAED;AACD;AACA;;;;WACC,8BAAqB;AAAA;;AACpB,UAAInC,MAAM,CAACgE,gBAAX,EAA6B;AAC5B,YAAMC,eAAe,GAAGD,gBAAgB,CAAC3D,QAAQ,CAAC4B,eAAV,CAAxC;AACAP,QAAAA,MAAM,CAACC,IAAP,CAAY,KAAKrD,WAAjB,EAA8BkC,OAA9B,CAAsC,UAAA0D,UAAU,EAAI;AACnD,cAAID,eAAe,CAACE,gBAAhB,wBAAiDD,UAAjD,eACHE,QAAQ,CAACH,eAAe,CAACE,gBAAhB,wBAAiDD,UAAjD,WAAD,CAAR,KAAkFG,GADnF,EACwF;AACvF,kBAAI,CAAC/F,WAAL,CAAiB4F,UAAjB,EAA6BzF,IAA7B,GAAoC2F,QAAQ,CAACH,eAAe,CAACE,gBAAhB,wBAAiDD,UAAjD,WAAD,CAA5C;AACA;;AAED,cAAID,eAAe,CAACE,gBAAhB,wBAAiDD,UAAjD,iBACHE,QAAQ,CAACH,eAAe,CAACE,gBAAhB,wBAAiDD,UAAjD,aAAD,CAAR,KAAoFG,GADrF,EAC0F;AACzF,kBAAI,CAAC/F,WAAL,CAAiB4F,UAAjB,EAA6B1F,MAA7B,GAAsC4F,QAAQ,CAACH,eAAe,CAACE,gBAAhB,wBAAiDD,UAAjD,aAAD,CAA9C;AACA;AACD,SAVD,EAF4B,CAc5B;;AACA,YAAID,eAAe,CAACE,gBAAhB,2BACHC,QAAQ,CAACH,eAAe,CAACE,gBAAhB,uBAAD,CAAR,KAAsEE,GADvE,EAC4E;AAC3E,eAAKtF,iBAAL,GAAyBqF,QAAQ,CAACH,eAAe,CAACE,gBAAhB,uBAAD,CAAjC;AACA;AACD;AACD;AAED;AACD;AACA;;;;WACC,8BAAqB;AACpB,UAAIG,IAAI,GAAG,6BAAX;;AACA,UAAIjE,QAAQ,CAACkE,aAAT,CAAuB,wBAAvB,CAAJ,EAAsD;AACrDD,QAAAA,IAAI,GAAGjE,QAAQ,CAACkE,aAAT,CAAuB,wBAAvB,EAAiDC,OAAjD,CAAyDC,aAAhE;AACA;;AAEDpE,MAAAA,QAAQ,CAACE,gBAAT,CAA0B,oBAA1B,EAAgDC,OAAhD,CAAwD,UAAAU,CAAC,EAAI;AAC5DA,QAAAA,CAAC,CAACE,YAAF,CAAe,OAAf,EAAwB,UAAGF,CAAC,CAACwD,YAAF,CAAe,OAAf,IAA0BxD,CAAC,CAACwD,YAAF,CAAe,OAAf,CAA1B,GAAoD,EAAvD,cAA6DJ,IAA7D,EAAoEK,IAApE,GAA2EC,OAA3E,CAAmF,KAAnF,EAA0F,GAA1F,CAAxB;AACA,OAFD;AAGA;AAED;AACD;AACA;;;;WACC,uBAAc;AACbvE,MAAAA,QAAQ,CAACE,gBAAT,CAA0B,GAA1B,EAA+BC,OAA/B,CAAuC,UAAAU,CAAC,EAAI;AAC3C,YAAIA,CAAC,CAAC2D,IAAF,IAAU,CAAC3D,CAAC,CAACC,YAAF,CAAe,KAAf,CAAf,EAAsC;AACrC,cAAID,CAAC,CAAC4D,QAAF,IAAcC,QAAQ,CAACD,QAA3B,EAAqC;AACpC5D,YAAAA,CAAC,CAACE,YAAF,CAAe,KAAf,EAAsB,UAAtB;AACA;AACD;AACD,OAND;AAOA;AAED;AACD;AACA;;;;WACC,gCAAuB;AACtB;AACAL,MAAAA,KAAK,CAACC,IAAN,CAAWX,QAAQ,CAACE,gBAAT,CAA0B,OAA1B,CAAX,EAA+CU,MAA/C,CAAsD,UAAAC,CAAC;AAAA,eAAI,CAACA,CAAC,CAAC2D,IAAP;AAAA,OAAvD,EAAoErE,OAApE,CAA4E,UAAAU,CAAC,EAAI;AAChF;AACA,YAAIA,CAAC,CAAC8D,aAAN,EAAqB;AACpB9D,UAAAA,CAAC,CAAC8D,aAAF,CAAgB9C,SAAhB,CAA0BC,GAA1B,CAA8B,UAA9B;AACA;AACD,OALD,EAFsB,CAStB;;AACApB,MAAAA,KAAK,CAACC,IAAN,CAAWX,QAAQ,CAACE,gBAAT,CAA0B,SAA1B,CAAX,EAAiDU,MAAjD,CAAwD,UAAAC,CAAC;AAAA,eAAIA,CAAC,CAAC+D,IAAF,IAAU/D,CAAC,CAAC+D,IAAF,IAAU,EAApB,IAA0B/D,CAAC,CAACwD,YAAF,CAAe,MAAf,EAAuB7D,MAAvB,CAA8B,CAA9B,EAAiC,CAAjC,KAAuC,GAAjE,IAAwE,CAACK,CAAC,CAACsD,OAAF,CAAUU,QAAvF;AAAA,OAAzD,EAA0J1E,OAA1J,CAAkK,UAAAU,CAAC,EAAI;AACtKA,QAAAA,CAAC,CAACsD,OAAF,CAAUU,QAAV,GAAqBhE,CAAC,CAAC+D,IAAvB;AACA,OAFD;AAGA;AAED;AACD;AACA;;;;WACC,wBAAe;AAAA;;AACd,UAAIjF,MAAM,CAACkF,QAAX,EAAqB;AACpB7E,QAAAA,QAAQ,CAACE,gBAAT,CAA0B,kBAA1B,EAA8CC,OAA9C,CAAsD,UAAA2E,EAAE,EAAI;AAC3DA,UAAAA,EAAE,CAAClF,gBAAH,CAAoB,OAApB,EAA6B,UAAAS,CAAC,EAAI;AACjCA,YAAAA,CAAC,CAAC0E,cAAF;AACA,gBAAMC,MAAM,GAAGhF,QAAQ,CAACkE,aAAT,CAAuBY,EAAE,CAACX,OAAH,CAAWU,QAAlC,CAAf;AAEA,gBAAMI,cAAc,GAAG,MAAI,CAACC,aAAL,CAAmBF,MAAnB,EAA2BG,GAA3B,IAAkCxF,MAAM,CAAC+B,UAAP,GAAoB,MAAI,CAACzD,WAAL,CAAiBK,EAAjB,CAAoBF,IAAxC,GAA+C,GAA/C,GAAqD,EAAvF,CAAvB;AACAuB,YAAAA,MAAM,CAACkF,QAAP,CAAgB;AACfM,cAAAA,GAAG,EAAEF,cADU;AAEfG,cAAAA,QAAQ,EAAE;AAFK,aAAhB;AAIA,WATD;AAUA,SAXD;AAYA;AACD;;;WAED,kBAASC,QAAT,EAAmB;AAClB,UAAIL,MAAJ;;AACA,UAAI,OAAOK,QAAP,IAAmB,QAAvB,EAAiC;AAChCL,QAAAA,MAAM,GAAGhF,QAAQ,CAACkE,aAAT,CAAuBmB,QAAvB,CAAT;AACA,OAFD,MAEO;AACNL,QAAAA,MAAM,GAAGK,QAAT;AACA;;AAED,UAAIL,MAAJ,EAAY;AACX,YAAMC,cAAc,GAAG,KAAKC,aAAL,CAAmBF,MAAnB,EAA2BG,GAA3B,IAAkCxF,MAAM,CAAC+B,UAAP,GAAoB,KAAKzD,WAAL,CAAiBK,EAAjB,CAAoBF,IAAxC,GAA+C,GAA/C,GAAqD,EAAvF,CAAvB;AACAuB,QAAAA,MAAM,CAACkF,QAAP,CAAgB;AACfM,UAAAA,GAAG,EAAEF,cADU;AAEfG,UAAAA,QAAQ,EAAE;AAFK,SAAhB;AAIA;AACD;AAED;AACD;AACA;AACA;AACA;AACA;;;;WACC,gBAAOE,GAAP,EAAYC,GAAZ,EAAiB;AAChB,aAAOC,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,MAAL,MAAiBH,GAAG,GAAGD,GAAN,GAAY,CAA7B,IAAkCA,GAA7C,CAAP;AACA;AAED;AACD;AACA;AACA;AACA;;;;WACC,sBAAapE,MAAb,EAAqB;AACpB,UAAIyE,MAAM,GAAG,EAAb;AACA,UAAMC,UAAU,GAAG,6EAAnB;AACA,UAAMC,gBAAgB,GAAGD,UAAU,CAAC1E,MAApC;;AACA,WAAK,IAAID,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGC,MAApB,EAA4BD,CAAC,EAA7B,EAAiC;AAChC0E,QAAAA,MAAM,IAAIC,UAAU,CAACE,MAAX,CAAkBN,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,MAAL,KAAgBG,gBAA3B,CAAlB,CAAV;AACA;;AACD,aAAOF,MAAM,CAACrB,IAAP,GAAcC,OAAd,CAAsB,OAAtB,EAA+B,GAA/B,CAAP;AACA;AAED;AACD;AACA;AACA;AACA;;;;WACC,uBAAcO,EAAd,EAAkB;AACjB,UAAMiB,GAAG,GAAGjB,EAAE,CAACkB,qBAAH,EAAZ;AAEA,UAAMC,IAAI,GAAGjG,QAAQ,CAACiG,IAAtB;AACA,UAAMC,KAAK,GAAGlG,QAAQ,CAAC4B,eAAvB;AAEA,UAAMuE,SAAS,GAAGxG,MAAM,CAACyG,WAAP,IAAsBF,KAAK,CAACC,SAA5B,IAAyCF,IAAI,CAACE,SAAhE;AACA,UAAME,UAAU,GAAG1G,MAAM,CAAC2G,WAAP,IAAsBJ,KAAK,CAACG,UAA5B,IAA0CJ,IAAI,CAACI,UAAlE;AAEA,UAAME,SAAS,GAAGL,KAAK,CAACK,SAAN,IAAmBN,IAAI,CAACM,SAAxB,IAAqC,CAAvD;AACA,UAAMC,UAAU,GAAGN,KAAK,CAACM,UAAN,IAAoBP,IAAI,CAACO,UAAzB,IAAuC,CAA1D;AAEA,UAAMrB,GAAG,GAAGY,GAAG,CAACZ,GAAJ,GAAUgB,SAAV,GAAsBI,SAAlC;AACA,UAAME,IAAI,GAAGV,GAAG,CAACU,IAAJ,GAAWJ,UAAX,GAAwBG,UAArC;AAEA,aAAO;AACNrB,QAAAA,GAAG,EAAEK,IAAI,CAACkB,KAAL,CAAWvB,GAAX,CADC;AAENsB,QAAAA,IAAI,EAAEjB,IAAI,CAACkB,KAAL,CAAWD,IAAX;AAFA,OAAP;AAIA;;;WAED,2BAAkB;AAAA;;AACjB,WAAKE,oBAAL,GAA4B3G,QAAQ,CAACkE,aAAT,CAAuB,cAAvB,CAA5B;;AAEA,UAAI,KAAKyC,oBAAT,EAA+B;AAC9B,YAAMC,MAAM,GAAG,KAAKD,oBAAL,CAA0BzC,aAA1B,CAAwC,QAAxC,CAAf;;AACA,YAAMjE,MAAM,GAAG,SAATA,MAAS,GAAM;AACpB,cAAID,QAAQ,CAAC4B,eAAT,CAAyBuE,SAAzB,GAAqC,GAAzC,EAA8C;AAC7C,mBAAI,CAACQ,oBAAL,CAA0B9E,SAA1B,CAAoCC,GAApC,CAAwC,QAAxC;AACA,WAFD,MAEO;AACN,mBAAI,CAAC6E,oBAAL,CAA0B9E,SAA1B,CAAoCG,MAApC,CAA2C,QAA3C;AACA;AACD,SAND;;AAQA,aAAK6E,mBAAL,CAAyB5G,MAAM,CAACH,IAAP,CAAY,IAAZ,CAAzB;AAEA8G,QAAAA,MAAM,CAAChH,gBAAP,CAAwB,OAAxB,EAAiC,YAAM;AACtC,iBAAI,CAAC+G,oBAAL,CAA0B9E,SAA1B,CAAoCC,GAApC,CAAwC,QAAxC;;AACA8E,UAAAA,MAAM,CAACE,IAAP;AACAnH,UAAAA,MAAM,CAACkF,QAAP,CAAgB;AACfM,YAAAA,GAAG,EAAE,CADU;AAEfC,YAAAA,QAAQ,EAAE;AAFK,WAAhB;AAIAjE,UAAAA,UAAU,CAAC;AAAA,mBAAM,OAAI,CAACwF,oBAAL,CAA0B9E,SAA1B,CAAoCG,MAApC,CAA2C,QAA3C,CAAN;AAAA,WAAD,EAA6D,IAA7D,CAAV;AACA,SARD;AASA;AACD;;;WAED,yBAAgB;AAAA;;AACf,UAAIhC,QAAQ,CAACE,gBAAT,CAA0B,0BAA1B,EAAsDgB,MAA1D,EAAkE;AACjE,YAAI;AACH,yNAAgE6F,IAAhE,CAAqE,YAAM;AAC1E/G,YAAAA,QAAQ,CAACE,gBAAT,CAA0B,0BAA1B,EAAsDC,OAAtD,CAA8D,UAAA6G,MAAM,EAAI;AACvEC,cAAAA,CAAC,CAACD,MAAD,CAAD,CAAUE,SAAV,CAAoB;AACnBC,gBAAAA,iBAAiB;AADE,eAApB;;AAKA,kBAAIH,MAAM,CAACnF,SAAP,CAAiBuF,QAAjB,CAA0B,kBAA1B,CAAJ,EAAmD;AAClD;AACAH,gBAAAA,CAAC,CAACD,MAAD,CAAD,CAAUE,SAAV,GAAsBG,EAAtB,CAAyB,kBAAzB,EAA6C,YAAW;AACvD3C,kBAAAA,QAAQ,CAACF,IAAT,GAAgByC,CAAC,CAAC,IAAD,CAAD,CAAQK,GAAR,EAAhB;AACA,iBAFD;AAGA;;AAAA,eAXsE,CAavE;;AACAL,cAAAA,CAAC,CAAC,kBAAD,CAAD,CAAsBM,IAAtB,CAA2B,2DAA3B;;AAEA,qBAAI,CAACvJ,YAAL,CAAkBmC,OAAlB,CAA0B,UAAAqH,EAAE,EAAI;AAC/BA,gBAAAA,EAAE;AACF,eAFD;;AAIA,qBAAI,CAACxJ,YAAL,GAAoB,EAApB;AACA,aArBD;AAsBA,WAvBD;AAwBA,SAzBD,CAyBE,OAAOqC,CAAP,EAAU;AACXoH,UAAAA,OAAO,CAACC,KAAR,CAAcrH,CAAd;AACA;AACD;AACD;AAED;AACD;AACA;;;;WACC,qBAAY;AACX,UAAIL,QAAQ,CAACE,gBAAT,CAA0B,sBAA1B,EAAkDgB,MAAlD,IAA4DlB,QAAQ,CAACE,gBAAT,CAA0B,qBAA1B,EAAiDgB,MAAjH,EAAyH;AACxH,YAAI;AACH,sMAA8D6F,IAA9D,CAAmE,UAAA1G,CAAC,EAAI;AACvE,gBAAMsH,KAAK,GAAGtH,CAAC,WAAf;AACAsH,YAAAA,KAAK,CAAC,sBAAD,CAAL;AAEA,gBAAI3H,QAAQ,CAACE,gBAAT,CAA0B,qBAA1B,EAAiDC,OAAjD,CAAyD,UAAAyH,MAAM,EAAI;AACrE,kBAAM5C,MAAM,GAAGhF,QAAQ,CAACkE,aAAT,gCAA8C0D,MAAM,CAACzD,OAAP,CAAe0D,WAA7D,SAAf;;AACA,kBAAI7C,MAAJ,EAAY;AACX2C,gBAAAA,KAAK,CAACC,MAAD,EAAS;AACbE,kBAAAA,SAAS,EAAE,IADE;AAEbC,kBAAAA,OAAO,EAAE/C,MAAM,CAACgD,SAFH;AAGbC,kBAAAA,WAAW,EAAEjD,MAAM,CAAC9E,gBAAP,CAAwB,WAAxB,EAAqCgB,MAArC,GAA8C;AAH9C,iBAAT,CAAL;AAKA;AACD,aATE,CAAJ,EASI;AACJ,WAdD;AAeA,SAhBD,CAgBE,OAAOb,CAAP,EAAU;AACXoH,UAAAA,OAAO,CAACC,KAAR,CAAcrH,CAAd;AACA;AACD;AAED;AAED;AACD;AACA;;;;WACC,oBAAW;AAAA;;AACVL,MAAAA,QAAQ,CAACE,gBAAT,CAA0B,aAA1B,EAAyCC,OAAzC,CAAiD,UAAA2E,EAAE,EAAI;AACtDA,QAAAA,EAAE,CAAClF,gBAAH,CAAoB,OAApB,EAA6B,YAAM;AAClC,cAAI;AACH,gBAAMsI,WAAW,GAAGpD,EAAE,CAACX,OAAH,CAAWgE,IAA/B;AACA,gBAAMC,KAAK,GAAGpI,QAAQ,CAACqI,aAAT,CAAuB,OAAvB,CAAd;AAEAD,YAAAA,KAAK,CAACE,IAAN,GAAa,MAAb;AACAF,YAAAA,KAAK,CAAClG,KAAN,CAAYqG,QAAZ,GAAuB,UAAvB;AACAH,YAAAA,KAAK,CAAClG,KAAN,CAAYsG,MAAZ,GAAqB,CAArB;AACAJ,YAAAA,KAAK,CAAClG,KAAN,CAAYuG,QAAZ,GAAuB,QAAvB;AACAL,YAAAA,KAAK,CAACM,KAAN,GAAcR,WAAd;AAEAlI,YAAAA,QAAQ,CAACiG,IAAT,CAAc0C,WAAd,CAA0BP,KAA1B;AACAA,YAAAA,KAAK,CAACpB,MAAN;AACAhH,YAAAA,QAAQ,CAAC4I,WAAT,CAAqB,MAArB;AACAR,YAAAA,KAAK,CAACS,UAAN,CAAiBC,WAAjB,CAA6BV,KAA7B;AACA,WAdD,CAcE,OAAO/H,CAAP,EAAU;AACX,mBAAI,CAAC0I,KAAL,CAAW,iCAAX,EAA8C,OAA9C;;AACAtB,YAAAA,OAAO,CAACC,KAAR,CAAcrH,CAAd;AACA;AACD,SAnBD;AAoBA,OArBD;AAsBA;;;WAED,6BAAoB;AAAA;;AACnB,WAAK2I,UAAL,GAAkBtI,KAAK,CAACC,IAAN,CAAWX,QAAQ,CAACE,gBAAT,CAA0B,cAA1B,CAAX,CAAlB;;AAEA,UAAI,KAAK8I,UAAL,CAAgB9H,MAApB,EAA4B;AAC3B,YAAI+H,aAAa,GAAG,EAApB;AAEAtJ,QAAAA,MAAM,CAACC,gBAAP,CAAwB,aAAxB,EAAuC,UAAAS,CAAC,EAAI;AAC3C,iBAAI,CAAC2I,UAAL,CAAgB7I,OAAhB,CAAwB,UAAA+I,WAAW,EAAI;AACtC,gBAAIC,IAAI,GAAGnJ,QAAQ,CAACqI,aAAT,CAAuB,MAAvB,CAAX;AACAc,YAAAA,IAAI,CAACnB,SAAL,GAAiBkB,WAAW,CAAC/E,OAAZ,CAAoBiF,KAArC;AACAD,YAAAA,IAAI,CAACtH,SAAL,CAAeC,GAAf,CAAmB,WAAnB;AAEAmH,YAAAA,aAAa,CAAC1H,IAAd,CAAmB4H,IAAnB;AAEAD,YAAAA,WAAW,CAACP,WAAZ,CAAwBQ,IAAxB;AACA,WARD;AASA,SAVD;AAYAxJ,QAAAA,MAAM,CAACC,gBAAP,CAAwB,YAAxB,EAAsC,UAAAS,CAAC,EAAI;AAC1C4I,UAAAA,aAAa,CAAC9I,OAAd,CAAsB,UAAAkJ,YAAY,EAAI;AACrCA,YAAAA,YAAY,CAACrH,MAAb;AACA,WAFD;AAIAiH,UAAAA,aAAa,GAAG,EAAhB;AACA,SAND;AAOA;AACD;;;WAED,0BAAiB;AAChBjJ,MAAAA,QAAQ,CAACE,gBAAT,CAA0B,YAA1B,EAAwCC,OAAxC,CAAgD,UAAAC,KAAK,EAAI;AACxDA,QAAAA,KAAK,CAACR,gBAAN,CAAuB,SAAvB,EAAkC,UAAAS,CAAC,EAAI;AAEtC,kBAAQA,CAAC,CAACC,GAAF,CAAMC,WAAN,EAAR;AACC,iBAAK,GAAL;AACCF,cAAAA,CAAC,CAAC0E,cAAF;;AACD,iBAAK,OAAL;AACA,iBAAK,OAAL;AACC3E,cAAAA,KAAK,CAACK,KAAN;AACA;AANF;AAQA,SAVD;AAWA,OAZD;AAaA;;;WAED,gCAAuB;AAAA;;AACtB,UAAM6I,KAAK,GAAG3J,MAAM,CAAC+B,UAArB;AACA,UAAMzD,WAAW,GAAGoD,MAAM,CAACC,IAAP,CAAY,KAAKrD,WAAjB,EAA8BsL,OAA9B,EAApB;AAEA,UAAIC,iBAAiB,GAAGvL,WAAW,CAACA,WAAW,CAACiD,MAAZ,GAAqB,CAAtB,CAAnC;AAEAjD,MAAAA,WAAW,CAACkC,OAAZ,CAAoB,UAAA0D,UAAU,EAAI;AACjC,YAAIyF,KAAK,IAAI,OAAI,CAACrL,WAAL,CAAiB4F,UAAjB,EAA6BzF,IAA1C,EAAgD;AAC/CoL,UAAAA,iBAAiB,GAAG3F,UAApB;AACA;AACD,OAJD;AAMA,aAAO2F,iBAAP;AACA;;;WAED,eAAMC,OAAN,EAAiC;AAAA,UAAlBnB,IAAkB,uEAAX,SAAW;;AAChC,UAAI,KAAKoB,eAAT,EAA0B;AACzB,aAAKA,eAAL,QAAyBD,OAAzB,EAAkCnB,IAAlC;AACA,OAFD,MAEO;AACNb,QAAAA,OAAO,CAACC,KAAR,CAAc,8CAAd;AACAD,QAAAA,OAAO,CAACkC,GAAR,YAAgBrB,IAAhB,eAAyBmB,OAAzB;AACA;AACD;;;WAED,sBAAaG,IAAb,EAAmB;AAClB,UAAIjE,MAAM,GAAG,IAAb;AAAA,UACCkE,GAAG,GAAG,EADP;AAEA,UAAIC,KAAK,GAAGpF,QAAQ,CAACqF,MAAT,CAAgBvJ,MAAhB,CAAuB,CAAvB,EAA0BwJ,KAA1B,CAAgC,GAAhC,CAAZ;;AACA,WAAK,IAAIC,KAAK,GAAG,CAAjB,EAAoBA,KAAK,GAAGH,KAAK,CAAC5I,MAAlC,EAA0C+I,KAAK,EAA/C,EAAmD;AAClDJ,QAAAA,GAAG,GAAGC,KAAK,CAACG,KAAD,CAAL,CAAaD,KAAb,CAAmB,GAAnB,CAAN;;AACA,YAAIH,GAAG,CAAC,CAAD,CAAH,KAAWD,IAAf,EAAqB;AACpBjE,UAAAA,MAAM,GAAGuE,kBAAkB,CAACL,GAAG,CAAC,CAAD,CAAJ,CAA3B;AACA;;AACD,YAAIlE,MAAM,KAAK,WAAf,EAA4B;AAC3BA,UAAAA,MAAM,GAAG,IAAT;AACA;AACD;;AACD,aAAOA,MAAP;AACA;;;WAED,yBAAgB;AACf,WAAKwE,yBAAL;AACA,WAAKC,kBAAL;AACA;;;WAED,8BAAqB;AACpB,UAAIC,MAAM,GAAGrK,QAAQ,CAACqI,aAAT,CAAuB,KAAvB,CAAb;AACAgC,MAAAA,MAAM,CAACxI,SAAP,CAAiBC,GAAjB,CAAqB,cAArB;AACA,UAAIwI,IAAI,KAAR;;AACA,WAAK,IAAIrJ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,EAApB,EAAwBA,CAAC,EAAzB,EAA6B;AAC5BqJ,QAAAA,IAAI,4CAAJ;AACA;;AACDD,MAAAA,MAAM,CAACrC,SAAP,yDAA8DsC,IAA9D;AACAtK,MAAAA,QAAQ,CAACiG,IAAT,CAAc0C,WAAd,CAA0B0B,MAA1B;AACA;;;WAED,qCAA4B;AAC3B,UAAMpM,WAAW,GAAGoD,MAAM,CAACC,IAAP,CAAY,KAAKrD,WAAjB,CAApB;AACA,UAAIsM,MAAM,KAAV;AACAtM,MAAAA,WAAW,CAACkC,OAAZ,CAAoB,UAAC0D,UAAD,EAAaoG,KAAb,EAAuB;AAC1C,YAAIO,OAAO,GAAG,MAAd;;AACA,YAAIP,KAAK,IAAI,CAAb,EAAgB;AACfO,UAAAA,OAAO,gBAASvM,WAAW,CAACgM,KAAK,GAAG,CAAT,CAApB,UAAP;AACA,SAFD,MAEO,IAAIA,KAAK,IAAIhM,WAAW,CAACiD,MAAZ,GAAqB,CAAlC,EAAqC;AAC3CsJ,UAAAA,OAAO,uBAAgB3G,UAAhB,WAAP;AACA,SAFM,MAEA;AACN2G,UAAAA,OAAO,uBAAgB3G,UAAhB,sBAAsC5F,WAAW,CAACgM,KAAK,GAAG,CAAT,CAAjD,UAAP;AACA;;AACDM,QAAAA,MAAM,2BAAmBC,OAAnB,mDAAgE3G,UAAhE,iBAAN;AACA,OAVD;AAaA,UAAIwG,MAAM,GAAGrK,QAAQ,CAACqI,aAAT,CAAuB,KAAvB,CAAb;AACAgC,MAAAA,MAAM,CAACxI,SAAP,CAAiBC,GAAjB,CAAqB,sBAArB;AAEAuI,MAAAA,MAAM,CAACrC,SAAP,yDAA8DuC,MAA9D;AACAvK,MAAAA,QAAQ,CAACiG,IAAT,CAAc0C,WAAd,CAA0B0B,MAA1B;AACA;AAED;AACD;AACA;;;;WACC,mBAAU;AAAA;;AACT;AACA,WAAKjN,mBAAL,GAA2B,EAA3B;AACA,WAAKC,gBAAL,GAAwB,EAAxB;AACA,WAAKC,uBAAL,GAA+B,CAA/B;AAEA,WAAKG,mBAAL,GAA2B,EAA3B;AACA,WAAKC,gBAAL,GAAwB,EAAxB;AACA,WAAKC,uBAAL,GAA+B,CAA/B,CARS,CAUT;;AACAgC,MAAAA,MAAM,CAAC8K,QAAP,CAAgBC,EAAhB,GAXS,CAaT;;AACA,UAAIC,qBAAqB,GAAG,EAA5B;AACAtJ,MAAAA,MAAM,CAACC,IAAP,CAAY,IAAZ,EAAkBnB,OAAlB,CAA0B,UAAAG,GAAG,EAAI;AAChC,YAAI,OAAI,CAACsK,cAAL,CAAoBtK,GAApB,KAA4BA,GAAG,CAACqC,OAAJ,CAAY,YAAZ,IAA4B,CAAC,CAA7D,EAAgE;AAC/D,cAAMkI,GAAG,GAAG,OAAI,CAACvK,GAAD,CAAhB;;AACA,cAAIuK,GAAG,IAAI,IAAP,IAAeA,GAAG,CAACC,OAAnB,IAA8B,OAAOD,GAAG,CAACC,OAAX,IAAsB,UAAxD,EAAoE;AACnED,YAAAA,GAAG,CAACC,OAAJ;AACA,WAFD,MAEO;AACN,gBAAI,OAAI,CAAC/M,cAAT,EAAyB;AACxB4M,cAAAA,qBAAqB,CAACpJ,IAAtB,CAA2BjB,GAA3B;AACA;AACD;AACD;AACD,OAXD,EAfS,CA4BT;;AACA,UAAI,KAAKvC,cAAL,IAAuB4M,qBAAqB,CAACzJ,MAAjD,EAAyD;AACxDuG,QAAAA,OAAO,CAACsD,IAAR,sDAAkE,gBAAlE,oBAAsGJ,qBAAqB,CAACK,IAAtB,CAA2B,QAA3B,CAAtG;AACA,eAAO,KAAKjN,cAAZ;AACA;AACD;;;WAED,8BAAqB;AACpB,UAAIiC,QAAQ,CAACE,gBAAT,CAA0B,0BAA1B,EAAsDgB,MAA1D,EAAkE;AACjE,YAAM+J,KAAK,GAAGjL,QAAQ,CAACE,gBAAT,CAA0B,kBAA1B,CAAd;AAEA+K,QAAAA,KAAK,CAAC9K,OAAN,CAAc,UAAA+K,IAAI,EAAI;AACrBA,UAAAA,IAAI,CAACtL,gBAAL,CAAsB,OAAtB,EAA+B,YAAM;AACpC,gBAAIuL,SAAS,GAAGD,IAAI,CAAC/G,OAAL,CAAaiH,MAA7B;AAEA,gBAAMrD,OAAO,GAAG/H,QAAQ,CAACE,gBAAT,CAA0B,mCAA1B,CAAhB;AACA,gBAAMmL,KAAK,GAAGrL,QAAQ,CAACE,gBAAT,CAA0B,8CAA1B,CAAd;AAEA,gBAAMoL,aAAa,GAAGtL,QAAQ,CAACkE,aAAT,CAAuB,uDAAuDiH,SAAvD,GAAmE,IAA1F,CAAtB;AACA,gBAAMI,UAAU,GAAGvL,QAAQ,CAACkE,aAAT,CAAuB,mCAAmCiH,SAAnC,GAA+C,IAAtE,CAAnB;AACA,gBAAMK,WAAW,GAAGxL,QAAQ,CAACkE,aAAT,CAAuB,8DAA8DiH,SAA9D,GAA0E,IAAjG,CAApB;;AAEA,gBAAIG,aAAa,CAACzJ,SAAd,CAAwBuF,QAAxB,CAAiC,MAAjC,CAAJ,EAA8C,CAC9C;AACC,aAFD,MAEO;AACNW,cAAAA,OAAO,CAAC5H,OAAR,CAAgB,UAAAmL,aAAa,EAAI;AAChCA,gBAAAA,aAAa,CAACzJ,SAAd,CAAwBG,MAAxB,CAA+B,MAA/B;AACAsJ,gBAAAA,aAAa,CAACpJ,KAAd,CAAoBsG,MAApB,aAAgC8C,aAAa,CAACG,YAA9C;AACqBH,gBAAAA,aAAa,CAACI,YAAd;AACAJ,gBAAAA,aAAa,CAACpJ,KAAd,CAAoBsG,MAApB,GAA6B,CAA7B;AACrB,eALD;AAOAyC,cAAAA,KAAK,CAAC9K,OAAN,CAAc,UAAAoL,UAAU,EAAI;AAC3BA,gBAAAA,UAAU,CAAC1J,SAAX,CAAqBG,MAArB,CAA4B,MAA5B;AACA,eAFD;AAIAqJ,cAAAA,KAAK,CAAClL,OAAN,CAAc,UAAAwL,YAAY,EAAI;AAC7BA,gBAAAA,YAAY,CAAC9J,SAAb,CAAuBG,MAAvB,CAA8B,MAA9B;AACA,eAFD;AAIAsJ,cAAAA,aAAa,CAACzJ,SAAd,CAAwBC,GAAxB,CAA4B,MAA5B;AACAyJ,cAAAA,UAAU,CAAC1J,SAAX,CAAqBC,GAArB,CAAyB,MAAzB;AACA0J,cAAAA,WAAW,CAAC3J,SAAZ,CAAsBC,GAAtB,CAA0B,MAA1B;AAEAwJ,cAAAA,aAAa,CAACpJ,KAAd,CAAoBsG,MAApB,aAAgC8C,aAAa,CAACG,YAA9C;AACAH,cAAAA,aAAa,CAACI,YAAd;AACAJ,cAAAA,aAAa,CAACpJ,KAAd,CAAoBsG,MAApB,aAAgC8C,aAAa,CAACM,YAA9C;AACA;;AAAA,aAnCmC,CAqCpC;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA,WAhDD;AAiDA,SAlDD;AAmDA;;AAAA;AAED;;;WAED,iBAAQ,CACP;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;ACtyBF;;IAEqBE;AACpB,2BAAc;AAAA;;AACb,SAAKC,oBAAL,GAA4BF,qDAAA,CAAY,gBAAZ,IAAgCI,IAAI,CAACC,KAAL,CAAWL,qDAAA,CAAY,gBAAZ,CAAX,CAAhC,GAA4EM,SAAxG;AACA,SAAKC,SAAL,GAAiBpM,QAAQ,CAACkE,aAAT,CAAuB,YAAvB,CAAjB;AACAvE,IAAAA,MAAM,CAAC0M,SAAP,GAAmB1M,MAAM,CAAC0M,SAAP,IAAoB,EAAvC;AAEA1M,IAAAA,MAAM,CAAC0M,SAAP,CAAiB9K,IAAjB,CAAsB;AACrB,eAAS,qBADY;AAErB,mBAAa,KAAK+K,wBAFG;AAGrB,kBAAY,KAAKC;AAHI,KAAtB;;AAKA,QAAIvM,QAAQ,CAACkE,aAAT,CAAuB,sBAAvB,MAAmD,IAAvD,EAA6D;AAC5DlE,MAAAA,QAAQ,CAACkE,aAAT,CAAuB,iBAAvB,EAA0CsI,OAA1C,GAAoD,KAAKF,wBAAzD;AACAtM,MAAAA,QAAQ,CAACkE,aAAT,CAAuB,gBAAvB,EAAyCsI,OAAzC,GAAmD,KAAKD,uBAAxD;AACA;;AAED,SAAKE,cAAL;AACA,SAAKC,SAAL;AACA,SAAKC,iBAAL;AACA;;;;SAED,eAAgC;AAC/B,UAAI,KAAKZ,oBAAL,KAA8BI,SAAlC,EAA6C,OAAO,KAAP;AAE7C,aAAO,KAAKJ,oBAAL,CAA0Ba,UAAjC;AACA;;;SAED,eAA+B;AAC9B,UAAI,KAAKb,oBAAL,KAA8BI,SAAlC,EAA6C,OAAO,IAAP;AAE7C,aAAO,KAAKJ,oBAAL,CAA0Bc,SAAjC;AACA;;;SAED,eAA8B;AAC7B,UAAI,KAAKd,oBAAL,KAA8BI,SAAlC,EAA6C,OAAO,KAAP;AAE7C,aAAO,KAAKJ,oBAAL,CAA0Be,QAAjC;AACA;;;WAED,sCAA6BC,UAA7B,EAAyCC,SAAzC,EAAoDC,QAApD,EAA8D;AAC7D,WAAKlB,oBAAL,GAA4B;AAC3Ba,QAAAA,UAAU,EAAEG,UADe;AAE3BF,QAAAA,SAAS,EAAEG,SAFgB;AAG3BF,QAAAA,QAAQ,EAAEG;AAHiB,OAA5B;AAMAtN,MAAAA,MAAM,CAAC0M,SAAP,GAAmB1M,MAAM,CAAC0M,SAAP,IAAoB,EAAvC;AAEA1M,MAAAA,MAAM,CAAC0M,SAAP,CAAiB9K,IAAjB,CAAsB;AACrB,qBAAa,KAAK+K,wBADG;AAErB,oBAAY,KAAKC,uBAFI;AAGrB,iBAAS;AAHY,OAAtB;AAMAV,MAAAA,qDAAA,CAAY,gBAAZ,EAA8BI,IAAI,CAACkB,SAAL,CAAe,KAAKpB,oBAApB,CAA9B,EAAyE;AACxEqB,QAAAA,OAAO,EAAE;AAD+D,OAAzE;AAGA,WAAKV,SAAL;AACA;;;WAED,6BAAoB;AAAA;;AACnB,UAAI1M,QAAQ,CAACkE,aAAT,CAAuB,uBAAvB,CAAJ,EAAqD;AACpDlE,QAAAA,QAAQ,CAACkE,aAAT,CAAuB,uBAAvB,EAAgDtE,gBAAhD,CAAiE,OAAjE,EAA0E,KAAKyN,YAAL,CAAkBvN,IAAlB,CAAuB,IAAvB,CAA1E;;AACA,YAAIE,QAAQ,CAACkE,aAAT,CAAuB,sBAAvB,MAAmD,IAAvD,EAA6D;AAC5DlE,UAAAA,QAAQ,CAACkE,aAAT,CAAuB,sBAAvB,EAA+CtE,gBAA/C,CAAgE,QAAhE,EAA0E,UAAC0N,KAAD,EAAW;AACpFA,YAAAA,KAAK,CAACvI,cAAN;;AACA,iBAAI,CAACwI,eAAL;AACA,WAHD;AAIA;AACD;;AAED,UAAIvN,QAAQ,CAACkE,aAAT,CAAuB,0BAAvB,CAAJ,EAAwD;AACvD,YAAMsJ,eAAe,GAAGxN,QAAQ,CAACkE,aAAT,CAAuB,0BAAvB,CAAxB;AAEAsJ,QAAAA,eAAe,CAAC5N,gBAAhB,CAAiC,YAAjC,EAA+C;AAAA,iBAAM,KAAI,CAAC6N,qBAAL,EAAN;AAAA,SAA/C;AACAD,QAAAA,eAAe,CAAC5N,gBAAhB,CAAiC,OAAjC,EAA0C,UAAAS,CAAC,EAAI;AAC9CA,UAAAA,CAAC,CAAC0E,cAAF;;AACA,eAAI,CAAC2I,sBAAL;AACA,SAHD;AAIA;AACD;;;WAED,0BAAiB;AAAA;;AAChB1N,MAAAA,QAAQ,CAACE,gBAAT,CAA0B,wBAA1B,EAAoDC,OAApD,CAA4D,UAAAwN,QAAQ,EAAI;AACvE,cAAI,CAACC,oBAAL,CAA0BD,QAAQ,CAACxJ,OAAT,CAAiB0J,MAA3C;AACA,OAFD;AAGA;;;WAED,8BAAqBC,OAArB,EAA8B;AAC7B,OAAC,UAAUC,CAAV,EAAaC,CAAb,EAAgBC,CAAhB,EAAmBC,CAAnB,EAAsBjN,CAAtB,EAAyB;AACzB8M,QAAAA,CAAC,CAACG,CAAD,CAAD,GAAOH,CAAC,CAACG,CAAD,CAAD,IAAQ,EAAf;AACAH,QAAAA,CAAC,CAACG,CAAD,CAAD,CAAK3M,IAAL,CAAU;AACT,uBAAa,IAAI4M,IAAJ,GAAWC,OAAX,EADJ;AAETd,UAAAA,KAAK,EAAE;AAFE,SAAV;AAIA,YAAIe,CAAC,GAAGL,CAAC,CAACM,oBAAF,CAAuBL,CAAvB,EAA0B,CAA1B,CAAR;AAAA,YACCM,CAAC,GAAGP,CAAC,CAAC3F,aAAF,CAAgB4F,CAAhB,CADL;AAAA,YAECO,EAAE,GAAGN,CAAC,IAAI,WAAL,GAAmB,QAAQA,CAA3B,GAA+B,EAFrC;AAGAK,QAAAA,CAAC,CAACE,KAAF,GAAU,IAAV;AACAF,QAAAA,CAAC,CAACG,GAAF,GACC,gDAAgDzN,CAAhD,GAAoDuN,EADrD;AAEAH,QAAAA,CAAC,CAACxF,UAAF,CAAa8F,YAAb,CAA0BJ,CAA1B,EAA6BF,CAA7B;AACA,OAbD,EAcC1O,MAdD,EAcSK,QAdT,EAcmB,QAdnB,EAc6B,WAd7B,EAc0C8N,OAd1C;AAeA;;;WAED,wBAAe;AACd,WAAKc,4BAAL,CAAkC,IAAlC,EAAwC,IAAxC,EAA8C,IAA9C;AACA;;;WAED,qBAAY;AAAA;;AACX,UAAI,KAAKxC,SAAL,IAAkB,IAAtB,EAA4B;AAC3B,YAAI,KAAKL,oBAAL,KAA8BI,SAAlC,EAA6C;AAC5C,cAAInM,QAAQ,CAACkE,aAAT,CAAuB,iCAAvB,EAA0DM,IAA1D,KAAmExE,QAAQ,CAAC0E,QAAT,CAAkBmK,QAAlB,EAAvE,EAAqG;AACpG,iBAAKzC,SAAL,CAAevK,SAAf,CAAyBC,GAAzB,CAA6B,MAA7B;AAEAX,YAAAA,UAAU,CAAC,YAAM;AAChB,oBAAI,CAACsM,qBAAL;AACA,aAFS,EAEP,GAFO,CAAV;AAGA;AACD,SARD,MAQO;AACN,eAAKrB,SAAL,CAAevK,SAAf,CAAyBG,MAAzB,CAAgC,MAAhC;AACA;AACD;AACD;;;WAED,2BAAkB;AACjB,WAAK4M,4BAAL,CAAkC5O,QAAQ,CAAC8O,cAAT,CAAwB,YAAxB,EAAsCtC,OAAxE,EAAiFxM,QAAQ,CAAC8O,cAAT,CAAwB,WAAxB,EAAqCtC,OAAtH,EAA+HxM,QAAQ,CAAC8O,cAAT,CAAwB,UAAxB,EAAoCtC,OAAnK;AACA,UAAIuC,gBAAgB,GAAG/O,QAAQ,CAACkE,aAAT,CAAuB,sCAAvB,CAAvB;;AACA,UAAI6K,gBAAgB,KAAK,IAAzB,EAA+B;AAC9BA,QAAAA,gBAAgB,CAAClN,SAAjB,CAA2BC,GAA3B,CAA+B,SAA/B;AACAX,QAAAA,UAAU,CAAC,YAAY;AACtB4N,UAAAA,gBAAgB,CAAClN,SAAjB,CAA2BG,MAA3B,CAAkC,SAAlC;AACA,SAFS,EAEP,IAFO,CAAV;AAGA;AACD;;;WAED,iCAAwB;AAAA;;AACvB,UAAI,KAAKgN,aAAT,EAAwB;AACvB,eAAO,KAAKA,aAAZ;AACA;;AAED,UAAMhK,MAAM,GAAGhF,QAAQ,CAACkE,aAAT,CAAuB,0BAAvB,EAAmDM,IAAlE;AAEA,WAAKwK,aAAL,GAAqBC,KAAK,CAACjK,MAAD,CAAL,CAAc+B,IAAd,CAAmB,UAAAmI,QAAQ,EAAI;AACnD,eAAOA,QAAQ,CAACjL,IAAT,EAAP;AACA,OAFoB,EAElB8C,IAFkB,CAEb,UAAAoI,IAAI,EAAI;AACf,YAAMC,MAAM,GAAG,IAAIC,SAAJ,EAAf;AACA,YAAMC,GAAG,GAAGF,MAAM,CAACG,eAAP,CAAuBJ,IAAvB,EAA6B,WAA7B,CAAZ;;AAEA,YAAIG,GAAG,CAACpL,aAAJ,CAAkB,mBAAlB,CAAJ,EAA4C;AAC3C,iBAAO,IAAIsL,OAAJ,CAAY,UAAAC,OAAO,EAAI;AAC7B,gBAAIC,OAAO,GAAG,IAAIC,KAAJ,EAAd;AACAD,YAAAA,OAAO,CAACE,MAAR,GAAiBH,OAAO,CAAC3P,IAAR,CAAa,MAAb,EAAmBwP,GAAnB,CAAjB;AACAI,YAAAA,OAAO,CAACG,OAAR,GAAkBJ,OAAO,CAAC3P,IAAR,CAAa,MAAb,EAAmBwP,GAAnB,CAAlB;AACAI,YAAAA,OAAO,CAAChB,GAAR,GAAcY,GAAG,CAACpL,aAAJ,CAAkB,mBAAlB,EAAuCwK,GAArD;AACA,WALM,CAAP;AAMA;;AAED,YAAIY,GAAG,CAACpL,aAAJ,CAAkB,sBAAlB,CAAJ,EAA+C;AAC9C,iBAAOoL,GAAG,CAACpL,aAAJ,CAAkB,sBAAlB,CAAP;AACA,SAFD,MAEO;AACN,gBAAM,IAAI4L,KAAJ,CAAU,8BAAV,CAAN;AACA;AACD,OApBoB,CAArB;AAsBA,aAAO,KAAKd,aAAZ;AACA;;;WAED,kCAAyB;AAAA;;AACxB,WAAKvB,qBAAL,GAA6B1G,IAA7B,CAAkC,UAAAgJ,IAAI,EAAI;AACzC,YAAMC,KAAK,GAAGhQ,QAAQ,CAACqI,aAAT,CAAuB,KAAvB,CAAd;AACA2H,QAAAA,KAAK,CAACC,EAAN,GAAW,aAAX;AACAD,QAAAA,KAAK,CAAChI,SAAN;AAiBAgI,QAAAA,KAAK,CAAC9L,aAAN,CAAoB,aAApB,EAAmCyE,WAAnC,CAA+CoH,IAA/C;AAEAA,QAAAA,IAAI,CAACnQ,gBAAL,CAAsB,QAAtB,EAAgC,UAAA0N,KAAK,EAAI;AACxCA,UAAAA,KAAK,CAACvI,cAAN;;AACA,gBAAI,CAACwI,eAAL;;AACA,gBAAI,CAAC2C,uBAAL;AACA,SAJD;;AAMA,YAAMC,UAAU,GAAG,SAAbA,UAAa,GAAM;AACxB,cAAInQ,QAAQ,CAACkE,aAAT,CAAuB,cAAvB,CAAJ,EAA4C;AAC3ClE,YAAAA,QAAQ,CAACkE,aAAT,CAAuB,cAAvB,EAAuClC,MAAvC;AACA;AACD,SAJD;;AAMArC,QAAAA,MAAM,CAACC,gBAAP,CAAwB,SAAxB,EAAmC,UAAAS,CAAC,EAAI;AACvC,cAAIA,CAAC,CAACC,GAAF,CAAMC,WAAN,GAAoBC,MAApB,CAA2B,CAA3B,EAA8B,CAA9B,KAAoC,KAAxC,EAA+C;AAC9C2P,YAAAA,UAAU;AACV;AACD,SAJD;AAMAH,QAAAA,KAAK,CAAC9L,aAAN,CAAoB,aAApB,EAAmCtE,gBAAnC,CAAoD,OAApD,EAA6D,UAAAS,CAAC,EAAI;AACjEA,UAAAA,CAAC,CAAC0E,cAAF;AACAoL,UAAAA,UAAU;AACV,SAHD;AAKAH,QAAAA,KAAK,CAACpQ,gBAAN,CAAuB,OAAvB,EAAgC,UAAAS,CAAC,EAAI;AACpC,cAAIA,CAAC,CAAC2E,MAAF,CAASoC,QAAT,CAAkB4I,KAAK,CAAC9L,aAAN,CAAoB,QAApB,CAAlB,CAAJ,EAAsD;AACrD7D,YAAAA,CAAC,CAAC0E,cAAF;AACAoL,YAAAA,UAAU;AACV;AACD,SALD;;AAOA,YAAInQ,QAAQ,CAACkE,aAAT,CAAuB,MAAvB,CAAJ,EAAoC;AACnClE,UAAAA,QAAQ,CAACkE,aAAT,CAAuB,MAAvB,EAA+ByE,WAA/B,CAA2CqH,KAA3C;AACA,SAFD,MAEO;AACNhQ,UAAAA,QAAQ,CAACiG,IAAT,CAAc0C,WAAd,CAA0BqH,KAA1B;AACA;AACD,OAzDD;AA0DA;;;WAED,mCAA0B;AACzB,UAAMA,KAAK,GAAGhQ,QAAQ,CAAC8O,cAAT,CAAwB,aAAxB,CAAd;;AACA,UAAIkB,KAAJ,EAAW;AACV7O,QAAAA,UAAU,CAAC,YAAM;AAChB,cAAI6O,KAAJ,EAAW;AACVA,YAAAA,KAAK,CAACnO,SAAN,CAAgBC,GAAhB,CAAoB,SAApB;AACA;;AAEDX,UAAAA,UAAU,CAAC,YAAM;AAChB,gBAAI6O,KAAK,IAAIA,KAAK,CAACrL,aAAnB,EAAkC;AACjCqL,cAAAA,KAAK,CAACrL,aAAN,CAAoBmE,WAApB,CAAgCkH,KAAhC;AACA;AACD,WAJS,EAIP,GAJO,CAAV;AAKA,SAVS,EAUP,IAVO,CAAV;AAWA;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;ACvPF;;IAEqBK;AACpB,8BAAc;AAAA;;AACb,SAAKC,aAAL,GAAqB,IAArB;AACA,SAAKC,UAAL,GAAkB,IAAlB;AAEA,SAAKC,cAAL,GAAsB,CAAtB;AACA,SAAKC,aAAL,GAAqB,CAArB;AACA,SAAKC,SAAL,GAAiB,GAAjB;AAEA,SAAKC,IAAL;AACA,SAAK9Q,MAAL;AAEA,SAAK+Q,sBAAL,GAA8B,IAAIR,qDAAJ,EAA9B;AACA;;;;WAED,gBAAO;AACN,WAAKE,aAAL,GAAqBtQ,QAAQ,CAACkE,aAAT,CAAuB,QAAvB,CAArB;AACA,WAAKqM,UAAL,GAAkB,KAAKD,aAAL,CAAmBpM,aAAnB,CAAiC,aAAjC,CAAlB;AACA,WAAKsM,cAAL,GAAsB7Q,MAAM,CAACyG,WAA7B,CAHM,CAKN;;AACAzG,MAAAA,MAAM,CAACkR,GAAP,CAAWlP,mBAAX,CAA+B,KAAK9B,MAAL,CAAYC,IAAZ,CAAiB,IAAjB,CAA/B;AACAH,MAAAA,MAAM,CAACkR,GAAP,CAAWhK,mBAAX,CAA+B,KAAK5G,MAAL,CAAYH,IAAZ,CAAiB,IAAjB,CAA/B,EAPM,CASN;;AACA,WAAKyQ,UAAL,CAAgB3Q,gBAAhB,CAAiC,OAAjC,EAA0C,KAAKkR,UAAL,CAAgBhR,IAAhB,CAAqB,IAArB,CAA1C;AACA;;;WAED,sBAAa;AACZ,WAAKwQ,aAAL,CAAmBzO,SAAnB,CAA6BkP,MAA7B,CAAoC,kBAApC;AACA;;;WAED,kBAAS;AACR,WAAKP,cAAL,GAAsB7Q,MAAM,CAACyG,WAA7B;AACA,WAAKsK,SAAL,GAAiB,KAAKJ,aAAL,CAAmB7E,YAApC;AAEA,WAAKxL,MAAL;AACA;;;WAED,kBAAS;AACR;AACA,UAAI,KAAKuQ,cAAL,GAAsB7Q,MAAM,CAACyG,WAAjC,EAA8C;AAC7C;AACA,YAAI,KAAKqK,aAAL,GAAqB,CAAzB,EAA4B;AAC3B,eAAKA,aAAL,GAAqB,CAArB;AACA;;AAED,aAAKA,aAAL,IAAsB9Q,MAAM,CAACyG,WAAP,GAAqB,KAAKoK,cAAhD;AACA,OAPD,MAOO,IAAI,KAAKA,cAAL,GAAsB7Q,MAAM,CAACyG,WAAjC,EAA8C;AACpD;AACA,YAAI,KAAKqK,aAAL,GAAqB,CAAzB,EAA4B;AAC3B,eAAKA,aAAL,GAAqB,CAArB;AACA;;AAED,aAAKA,aAAL,IAAsB9Q,MAAM,CAACyG,WAAP,GAAqB,KAAKoK,cAAhD;AACA;;AAED,UAAI7Q,MAAM,CAACyG,WAAP,GAAqB,KAAKsK,SAA9B,EAAyC;AACxC,aAAKM,IAAL;AACA,OAFD,MAEO;AACN,YAAI,KAAKP,aAAL,GAAqB,KAAKC,SAA9B,EAAyC;AACxC,eAAKO,IAAL;AACA;;AAED,YAAI,KAAKR,aAAL,GAAqB,KAAKC,SAAL,GAAiB,CAAC,CAA3C,EAA8C;AAC7C,eAAKM,IAAL;AACA;AACD;;AAED,WAAKR,cAAL,GAAsB7Q,MAAM,CAACyG,WAA7B;AACA;;;WAED,gBAAO;AACN,WAAKkK,aAAL,CAAmBzO,SAAnB,CAA6BC,GAA7B,CAAiC,QAAjC;AACA;;;WAED,gBAAO;AACN,WAAKwO,aAAL,CAAmBzO,SAAnB,CAA6BG,MAA7B,CAAoC,QAApC;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChFF;AACA;AACA;;IAEqBoO;AACjB,oCAAc;AAAA;;AACV,SAAKL,IAAL,GAAY,IAAZ;AACA,SAAKsB,SAAL,GAAiB,IAAjB;AACA,SAAKC,sBAAL,GAA8B,IAA9B;AAEA,SAAKC,WAAL,GAAmB,4CAAnB;AAEA,SAAKC,eAAL,GAAuB,IAAvB,CAPU,CAOmB;;AAC7B,SAAKC,UAAL,GAAkB,GAAlB,CARU,CAQa;;AACvB,SAAKC,YAAL,GAAoB,IAApB,CATU,CASgB;;AAC1B,SAAKC,QAAL,GAAgB,CAAhB,CAVU,CAUS;;AAEnB,SAAKC,yBAAL,GAAiC,EAAjC;AACA,SAAKC,mBAAL,GAA2B,EAA3B;AAEA,SAAKC,IAAL,GAAY,IAAZ;;AAEA,QAAI9R,QAAQ,CAACkE,aAAT,CAAuB,uBAAvB,CAAJ,EAAqD;AACjD,WAAKyM,IAAL;AACH;AACJ;;;;WAED,gBAAO;AAAA;;AACH,WAAKZ,IAAL,GAAY/P,QAAQ,CAACkE,aAAT,CAAuB,uBAAvB,CAAZ;AACA,WAAKmN,SAAL,GAAiB,KAAKtB,IAAL,CAAU7L,aAAV,CAAwB,iBAAxB,CAAjB;AACA,WAAKoN,sBAAL,GAA8BtR,QAAQ,CAACkE,aAAT,CAAuB,sBAAvB,CAA9B;AACA,WAAK4N,IAAL,GAAY,IAAIV,gDAAJ,CAAS,KAAKE,sBAAL,CAA4BpN,aAA5B,CAA0C,IAA1C,CAAT,CAAZ;;AAEA,UAAI,qBAAqBvE,MAAzB,EAAiC;AAC7B,aAAK6R,eAAL,GAAuB,IAAIO,eAAJ,EAAvB;AACH,OARE,CAUH;;;AACA,WAAKT,sBAAL,CAA4BpR,gBAA5B,CAA6C,OAA7C,EAAsDC,OAAtD,CAA8D,UAAA6R,EAAE;AAAA,eAAI,KAAI,CAACJ,yBAAL,CAA+BrQ,IAA/B,CAAoCyQ,EAAE,CAACC,SAAH,CAAa,IAAb,CAApC,CAAJ;AAAA,OAAhE,EAXG,CAaH;;AACA,WAAKJ,mBAAL,GAA2B,KAAKP,sBAAL,CAA4BpN,aAA5B,CAA0C,qBAA1C,EAAiE8D,SAA5F;AAEA,WAAKpJ,iBAAL;AACH;;;WAED,6BAAoB;AAAA;;AAChB;AACA,WAAKyS,SAAL,CAAezR,gBAAf,CAAgC,OAAhC,EAAyC,KAAKsS,iBAAL,CAAuBpS,IAAvB,CAA4B,IAA5B,CAAzC;AACA,WAAKuR,SAAL,CAAezR,gBAAf,CAAgC,OAAhC,EAAyC,KAAKsS,iBAAL,CAAuBpS,IAAvB,CAA4B,IAA5B,CAAzC;;AACA,UAAIE,QAAQ,CAACkE,aAAT,CAAuB,6BAAvB,CAAJ,EAA2D;AACvDlE,QAAAA,QAAQ,CAACkE,aAAT,CAAuB,6BAAvB,EAAsDtE,gBAAtD,CAAuE,OAAvE,EAAgF,YAAM;AAClF,cAAII,QAAQ,CAACkE,aAAT,CAAuB,eAAvB,EAAwCrC,SAAxC,CAAkDuF,QAAlD,CAA2D,cAA3D,CAAJ,EAAgF;AAC5E,kBAAI,CAAC+K,iBAAL;AACH,WAFD,MAEO;AACH,kBAAI,CAACD,iBAAL;;AACA,kBAAI,CAACb,SAAL,CAAee,KAAf;AACH;AACJ,SAPD;AAQH,OAbe,CAehB;;;AACA,WAAKf,SAAL,CAAezR,gBAAf,CAAgC,OAAhC,EAAyC,KAAKyS,iBAAL,CAAuBvS,IAAvB,CAA4B,IAA5B,CAAzC,EAhBgB,CAkBhB;;AACA,WAAKwR,sBAAL,CAA4BpN,aAA5B,CAA0C,cAA1C,EAA0DtE,gBAA1D,CAA2E,OAA3E,EAAoF;AAAA,eAAM,MAAI,CAACmQ,IAAL,CAAUuC,MAAV,EAAN;AAAA,OAApF;AACA,WAAKvC,IAAL,CAAUnQ,gBAAV,CAA2B,QAA3B,EAAqC,UAAAS,CAAC,EAAI;AACtC,YAAI,CAAC,MAAI,CAACgR,SAAL,CAAe3I,KAAf,CAAqBpE,IAArB,EAAL,EAAkC;AAC9BjE,UAAAA,CAAC,CAAC0E,cAAF;;AACA,gBAAI,CAACsM,SAAL,CAAee,KAAf;;AACA,iBAAO,KAAP;AACH;;AACD,eAAO,IAAP;AACH,OAPD,EApBgB,CA6BhB;;AACA,WAAKrC,IAAL,CAAUnQ,gBAAV,CAA2B,OAA3B,EAAoC,UAAAS,CAAC,EAAI;AACrC,cAAI,CAACkS,YAAL;;AACA,cAAI,CAAClB,SAAL,CAAee,KAAf;AACH,OAHD,EA9BgB,CAmChB;;AACA,UAAI,KAAKd,sBAAL,CAA4BpN,aAA5B,CAA0C,cAA1C,CAAJ,EAA+D;AAC3D,aAAKoN,sBAAL,CAA4BpN,aAA5B,CAA0C,cAA1C,EAA0DtE,gBAA1D,CAA2E,OAA3E,EAAoF,UAAAS,CAAC,EAAI;AACrF,gBAAI,CAAC8R,iBAAL;;AACA,gBAAI,CAACd,SAAL,CAAevK,IAAf;AACH,SAHD;AAIH;;AAED9G,MAAAA,QAAQ,CAACJ,gBAAT,CAA0B,SAA1B,EAAqC,UAAAS,CAAC,EAAI;AAC/C,YAAIA,CAAC,CAACC,GAAF,CAAMC,WAAN,GAAoBC,MAApB,CAA2B,CAA3B,EAA8B,CAA9B,KAAoC,KAAxC,EAA+C;AAClC,gBAAI,CAAC2R,iBAAL;;AACA,gBAAI,CAACd,SAAL,CAAevK,IAAf;AACH;AACJ,OALD,EA3CgB,CAkDhB;;AACA,UAAM0L,WAAW,GAAG,KAAKzC,IAAL,CAAU7L,aAAV,CAAwB,cAAxB,CAApB;;AACA,UAAIsO,WAAJ,EAAiB;AACbA,QAAAA,WAAW,CAAC5S,gBAAZ,CAA6B,OAA7B,EAAsC;AAAA,iBAAM,MAAI,CAACyR,SAAL,CAAee,KAAf,EAAN;AAAA,SAAtC;AACH;;AAED,UAAMK,WAAW,GAAG,KAAK1C,IAAL,CAAU7L,aAAV,CAAwB,sBAAxB,CAApB;;AACA,UAAIuO,WAAJ,EAAiB;AACbA,QAAAA,WAAW,CAAC7S,gBAAZ,CAA6B,OAA7B,EAAsC,YAAM;AACxC,gBAAI,CAAC2S,YAAL;;AACA,gBAAI,CAAClB,SAAL,CAAee,KAAf;;AAEA,cAAII,WAAJ,EAAiB;AACbC,YAAAA,WAAW,CAAC1R,YAAZ,CAAyB,UAAzB,EAAqC,UAArC;AACAyR,YAAAA,WAAW,CAACE,eAAZ,CAA4B,UAA5B;AACH;AACJ,SARD;AASH;;AAED,WAAKrB,SAAL,CAAezR,gBAAf,CAAgC,SAAhC,EAA2C,UAAAS,CAAC,EAAI;AAC5C,YAAIA,CAAC,CAACC,GAAF,CAAMC,WAAN,MAAuB,WAA3B,EAAwC;AACpCF,UAAAA,CAAC,CAAC0E,cAAF;;AACA,gBAAI,CAACuM,sBAAL,CAA4BpN,aAA5B,CAA0C,SAA1C,EAAqDkO,KAArD;AACH;AACJ,OALD;AAOAjB,MAAAA,+CAAQ,CAAC,8BAAD,EAAiC,SAAjC,EAA4C,UAAA9Q,CAAC,EAAI;AACrD,YAAIA,CAAC,CAACC,GAAF,CAAMC,WAAN,MAAuB,SAA3B,EAAsC;AAClCF,UAAAA,CAAC,CAAC0E,cAAF;;AACA,gBAAI,CAAC4N,OAAL,CAAatS,CAAC,CAACuS,cAAF,CAAiB/J,UAA9B;AACH,SAHD,MAGO,IAAIxI,CAAC,CAACC,GAAF,CAAMC,WAAN,MAAuB,WAA3B,EAAwC;AAC3CF,UAAAA,CAAC,CAAC0E,cAAF;;AACA,gBAAI,CAAC8N,SAAL,CAAexS,CAAC,CAACuS,cAAF,CAAiB/J,UAAhC;AACH;AACJ,OARO,CAAR;AAUAsI,MAAAA,+CAAQ,CAAC,mCAAD,EAAsC,SAAtC,EAAiD,UAAA9Q,CAAC,EAAI;AAC1D,YAAIA,CAAC,CAACC,GAAF,CAAMC,WAAN,MAAuB,SAA3B,EAAsC;AAClCF,UAAAA,CAAC,CAAC0E,cAAF;;AACA,gBAAI,CAAC4N,OAAL,CAAatS,CAAC,CAACuS,cAAf;AACH,SAHD,MAGO,IAAIvS,CAAC,CAACC,GAAF,CAAMC,WAAN,MAAuB,WAA3B,EAAwC;AAC3CF,UAAAA,CAAC,CAAC0E,cAAF;;AACA,gBAAI,CAAC8N,SAAL,CAAexS,CAAC,CAACuS,cAAjB;AACH;AACJ,OARO,CAAR,CAtFgB,CAgGhB;;AACA,UAAI5S,QAAQ,CAACiG,IAAT,CAAcpE,SAAd,CAAwBuF,QAAxB,CAAiC,YAAjC,CAAJ,EAAoD;AAChD,YAAIpH,QAAQ,CAACkE,aAAT,CAAuB,mBAAvB,CAAJ,EAAiD;AAC7ClE,UAAAA,QAAQ,CAACkE,aAAT,CAAuB,mBAAvB,EAA4CtE,gBAA5C,CAA6D,OAA7D,EAAsE,UAAAS,CAAC,EAAI;AACvE,kBAAI,CAAC6R,iBAAL;;AACA,kBAAI,CAACb,SAAL,CAAee,KAAf;AACH,WAHD;AAIApS,UAAAA,QAAQ,CAACkE,aAAT,CAAuB,mBAAvB,EAA4CrC,SAA5C,CAAsDG,MAAtD,CAA6D,QAA7D;AACH;AACJ;AACJ;AAED;AACJ;AACA;;;;WACI,mBAAU8C,EAAV,EAAc;AACV,UAAIA,EAAE,CAACgO,kBAAH,IAAyBhO,EAAE,CAACgO,kBAAH,CAAsB5O,aAAtB,CAAoC,GAApC,CAA7B,EAAuE;AACnEY,QAAAA,EAAE,CAACgO,kBAAH,CAAsB5O,aAAtB,CAAoC,GAApC,EAAyCkO,KAAzC;AACH,OAFD,MAEO,IAAI,CAAC,KAAKd,sBAAL,CAA4BpN,aAA5B,CAA0C,cAA1C,EAA0DrC,SAA1D,CAAoEuF,QAApE,CAA6E,UAA7E,CAAL,EAA+F;AAClG,aAAKkK,sBAAL,CAA4BpN,aAA5B,CAA0C,cAA1C,EAA0DkO,KAA1D;AACH,OAFM,MAEA,IAAItN,EAAE,IAAI,KAAKwM,sBAAL,CAA4BpN,aAA5B,CAA0C,cAA1C,CAAV,EAAqE;AACxE,aAAKmN,SAAL,CAAee,KAAf;AACH;AACJ;AAED;AACJ;AACA;;;;WACI,iBAAQtN,EAAR,EAAY;AACR,UAAIA,EAAE,CAACiO,sBAAH,IAA6BjO,EAAE,CAACiO,sBAAH,CAA0B7O,aAA1B,CAAwC,GAAxC,CAAjC,EAA+E;AAC3EY,QAAAA,EAAE,CAACiO,sBAAH,CAA0B7O,aAA1B,CAAwC,GAAxC,EAA6CkO,KAA7C;AACH,OAFD,MAEO,IAAItN,EAAE,IAAI,KAAKuM,SAAX,IAAwB,CAAC,KAAKC,sBAAL,CAA4BpN,aAA5B,CAA0C,cAA1C,EAA0DrC,SAA1D,CAAoEuF,QAApE,CAA6E,UAA7E,CAA7B,EAAuH;AAC1H,aAAKkK,sBAAL,CAA4BpN,aAA5B,CAA0C,cAA1C,EAA0DkO,KAA1D;AACH,OAFM,MAEA,IAAItN,EAAE,IAAI,KAAKwM,sBAAL,CAA4BpN,aAA5B,CAA0C,cAA1C,CAAV,EAAqE;AACxE,aAAKoN,sBAAL,CAA4BpN,aAA5B,CAA0C,sBAA1C,EAAkEkO,KAAlE;AACH,OAFM,MAEA;AACH,aAAKf,SAAL,CAAee,KAAf;AACH;AACJ;;;WAED,6BAAoB;AAChB,UAAIY,KAAK,GAAG,KAAK3B,SAAL,CAAe3I,KAAf,CAAqBpE,IAArB,EAAZ;AACA,UAAMmO,WAAW,GAAG,KAAK1C,IAAL,CAAU7L,aAAV,CAAwB,sBAAxB,CAApB;AACA,UAAMsO,WAAW,GAAG,KAAKzC,IAAL,CAAU7L,aAAV,CAAwB,cAAxB,CAApB;;AAEA,UAAI8O,KAAK,IAAIA,KAAK,CAAC9R,MAAN,IAAgB,KAAKyQ,QAAlC,EAA4C;AACxC;AACA,aAAKsB,aAAL,CAAmBD,KAAnB;AACAR,QAAAA,WAAW,CAACzR,YAAZ,CAAyB,UAAzB,EAAqC,UAArC;AACA0R,QAAAA,WAAW,CAACC,eAAZ,CAA4B,UAA5B;AACH,OALD,MAKO,IAAIM,KAAJ,EAAW;AACd;AACAR,QAAAA,WAAW,CAACzR,YAAZ,CAAyB,UAAzB,EAAqC,UAArC;AACA0R,QAAAA,WAAW,CAACC,eAAZ,CAA4B,UAA5B;AACH,OAJM,MAIA;AACHF,QAAAA,WAAW,CAACE,eAAZ,CAA4B,UAA5B;AACAD,QAAAA,WAAW,CAAC1R,YAAZ,CAAyB,UAAzB,EAAqC,UAArC;AACA,aAAKwR,YAAL;AACH;AACJ;;;WAED,6BAAoB;AAChBvS,MAAAA,QAAQ,CAACkE,aAAT,CAAuB,eAAvB,EAAwCrC,SAAxC,CAAkDC,GAAlD,CAAsD,cAAtD;AACA,WAAKwP,sBAAL,CAA4BzP,SAA5B,CAAsCC,GAAtC,CAA0C,QAA1C;AAEA,WAAKwP,sBAAL,CAA4BvQ,YAA5B,CAAyC,eAAzC,EAA0D,IAA1D;AACA,WAAKuQ,sBAAL,CAA4BvQ,YAA5B,CAAyC,aAAzC,EAAwD,KAAxD;AAEAf,MAAAA,QAAQ,CAAC4B,eAAT,CAAyBC,SAAzB,CAAmCC,GAAnC,CAAuC,eAAvC,EAPgB,CAShB;;AACA,WAAKwP,sBAAL,CAA4BpR,gBAA5B,CAA6C,kBAA7C,EAAiEC,OAAjE,CAAyE,UAAA+S,SAAS,EAAI;AAClFA,QAAAA,SAAS,CAACnS,YAAV,CAAuB,UAAvB,EAAmC,GAAnC;AACAmS,QAAAA,SAAS,CAACnS,YAAV,CAAuB,aAAvB,EAAsC,OAAtC;AACH,OAHD;AAIH;;;WAED,6BAAoB;AAAA;;AAChBf,MAAAA,QAAQ,CAACkE,aAAT,CAAuB,eAAvB,EAAwCrC,SAAxC,CAAkDG,MAAlD,CAAyD,cAAzD;AACA,WAAKsP,sBAAL,CAA4BzP,SAA5B,CAAsCG,MAAtC,CAA6C,QAA7C;AAEA,WAAKsP,sBAAL,CAA4BvQ,YAA5B,CAAyC,eAAzC,EAA0D,KAA1D;AACA,WAAKuQ,sBAAL,CAA4BvQ,YAA5B,CAAyC,aAAzC,EAAwD,IAAxD;AAEAf,MAAAA,QAAQ,CAAC4B,eAAT,CAAyBC,SAAzB,CAAmCG,MAAnC,CAA0C,eAA1C;AAEAb,MAAAA,UAAU,CAAC,YAAM;AACb,YAAI,CAAC,MAAI,CAACmQ,sBAAL,CAA4BzP,SAA5B,CAAsCuF,QAAtC,CAA+C,QAA/C,CAAL,EAA+D;AAC3D,gBAAI,CAACmL,YAAL;AACH;AACJ,OAJS,EAIP,GAJO,CAAV,CATgB,CAehB;;AACA,WAAKjB,sBAAL,CAA4BpR,gBAA5B,CAA6C,kBAA7C,EAAiEC,OAAjE,CAAyE,UAAA+S,SAAS,EAAI;AAClFA,QAAAA,SAAS,CAACnS,YAAV,CAAuB,UAAvB,EAAmC,IAAnC;AACAmS,QAAAA,SAAS,CAACnS,YAAV,CAAuB,aAAvB,EAAsC,MAAtC;AACH,OAHD;AAIH;;;WAED,uBAAciS,KAAd,EAAqB;AAAA;;AACjB;AACA,UAAI,KAAKtB,YAAL,KAAsB,IAA1B,EAAgC;AAC5B3P,QAAAA,YAAY,CAAC,KAAK2P,YAAN,CAAZ;AACH;;AAED,WAAKA,YAAL,GAAoBvQ,UAAU,CAAC,YAAM;AACjC,cAAI,CAACmQ,sBAAL,CAA4BpN,aAA5B,CAA0C,IAA1C,EAAgDrC,SAAhD,CAA0DC,GAA1D,CAA8D,SAA9D,EADiC,CAGjC;;;AACA,YAAI,qBAAqBnC,MAArB,IAA+B,MAAI,CAAC6R,eAAxC,EAAyD;AACrD,gBAAI,CAACA,eAAL,CAAqB2B,KAArB;;AACA,gBAAI,CAAC3B,eAAL,GAAuB,IAAIO,eAAJ,EAAvB;AACH,SAPgC,CASjC;;;AACA,cAAI,CAACqB,YAAL,CAAkBJ,KAAlB,EAAyBjM,IAAzB,CAA8B,UAAAsM,IAAI,EAAI;AAClC,gBAAI,CAACC,uBAAL,CAA6BD,IAA7B,EAAmCL,KAAnC;AACH,SAFD,WAES,UAAA3S,CAAC,EAAI;AACVoH,UAAAA,OAAO,CAACC,KAAR,CAAcrH,CAAd;AACH,SAJD,aAIW,YAAM;AACb,gBAAI,CAACiR,sBAAL,CAA4BpN,aAA5B,CAA0C,IAA1C,EAAgDrC,SAAhD,CAA0DG,MAA1D,CAAiE,SAAjE;AACH,SAND;;AAQA,cAAI,CAAC0P,YAAL,GAAoB,IAApB;AACH,OAnB6B,EAmB3B,KAAKD,UAnBsB,CAA9B;AAoBH;;;WAED,iCAAwB4B,IAAxB,EAA4C;AAAA;;AAAA,UAAdL,KAAc,uEAAN,IAAM;AACxC;AACA,UAAIO,WAAW,GAAG,EAAlB;;AACA,UAAIF,IAAI,CAACG,WAAT,EAAsB;AAClBH,QAAAA,IAAI,CAACG,WAAL,CAAiBrT,OAAjB,CAAyB,UAAAsT,IAAI,EAAI;AAC7B,cAAIC,UAAU,GAAG,IAAIxC,kEAAJ,CAAqB;AAClCtH,YAAAA,IAAI,EAAE6J,IAAI,CAACE,KADuB;AAElCC,YAAAA,GAAG,EAAEH,IAAI,CAACI;AAFwB,WAArB,CAAjB;AAKAN,UAAAA,WAAW,CAAChS,IAAZ,CAAiBmS,UAAU,CAACI,QAAX,EAAjB;AACH,SAPD;AAQH,OAZuC,CAcxC;;;AACA,WAAKxC,sBAAL,CAA4BpN,aAA5B,CAA0C,IAA1C,EAAgD8D,SAAhD,GAA4D,EAA5D,CAfwC,CAiBxC;;AACAuL,MAAAA,WAAW,CAACpT,OAAZ,CAAoB,UAAAuT,UAAU;AAAA,eAAI,MAAI,CAACpC,sBAAL,CAA4BpN,aAA5B,CAA0C,IAA1C,EAAgDyE,WAAhD,CAA4D+K,UAA5D,CAAJ;AAAA,OAA9B,EAlBwC,CAoBxC;;AACA,UAAIV,KAAJ,EAAW;AACP,aAAKlB,IAAL,CAAUA,IAAV,CAAekB,KAAf;AACH,OAvBuC,CAyBxC;;;AACA,WAAK1B,sBAAL,CAA4BpN,aAA5B,CAA0C,SAA1C,EAAqDrC,SAArD,CAA+DC,GAA/D,CAAmE,QAAnE,EA1BwC,CA4BxC;;AACA,UAAIuR,IAAI,CAACU,YAAT,EAAuB;AACnB,aAAKzC,sBAAL,CAA4BpN,aAA5B,CAA0C,cAA1C,EAA0DrC,SAA1D,CAAoEG,MAApE,CAA2E,UAA3E;;AAEA,YAAIqR,IAAI,CAACU,YAAL,GAAoB,CAAxB,EAA2B;AACvB,eAAKzC,sBAAL,CAA4BpN,aAA5B,CAA0C,mBAA1C,EAA+D8D,SAA/D,yBAA0FqL,IAAI,CAACU,YAA/F;AACH,SAFD,MAEO;AACH,eAAKzC,sBAAL,CAA4BpN,aAA5B,CAA0C,mBAA1C,EAA+D8D,SAA/D;AACH;AACJ,OARD,MAQO;AACH,aAAKsJ,sBAAL,CAA4BpN,aAA5B,CAA0C,cAA1C,EAA0DrC,SAA1D,CAAoEC,GAApE,CAAwE,UAAxE;AACA,aAAKwP,sBAAL,CAA4BpN,aAA5B,CAA0C,SAA1C,EAAqDrC,SAArD,CAA+DG,MAA/D,CAAsE,QAAtE;AACH,OAxCuC,CA0CxC;;;AACA,UAAIqR,IAAI,CAACU,YAAL,GAAoB,CAAxB,EAA2B;AACvB,aAAKzC,sBAAL,CAA4BpN,aAA5B,CAA0C,mBAA1C,EAA+D8D,SAA/D,yBAA0FqL,IAAI,CAACU,YAA/F;AACH,OAFD,MAEO;AACH,aAAKzC,sBAAL,CAA4BpN,aAA5B,CAA0C,mBAA1C,EAA+D8D,SAA/D;AACH,OA/CuC,CAiDxC;;;AACA,WAAKsJ,sBAAL,CAA4BpN,aAA5B,CAA0C,qBAA1C,EAAiE8D,SAAjE,aAAgFqL,IAAI,CAACU,YAAL,IAAqB,CAArB,GAAyB,MAAzB,GAAkCV,IAAI,CAACU,YAAvH,cAAuIV,IAAI,CAACU,YAAL,IAAqB,CAArB,GAAyB,WAAzB,GAAuC,YAA9K;AACH;;;WAED,wBAAe;AAAA;;AACX;AACA,UAAI,qBAAqBpU,MAArB,IAA+B,KAAK6R,eAAxC,EAAyD;AACrD,aAAKA,eAAL,CAAqB2B,KAArB;AACA,aAAK3B,eAAL,GAAuB,IAAIO,eAAJ,EAAvB;AACH,OALU,CAOX;;;AACA,WAAKV,SAAL,CAAe3I,KAAf,GAAuB,EAAvB,CARW,CAUX;;AACA,WAAK4I,sBAAL,CAA4BpN,aAA5B,CAA0C,IAA1C,EAAgD8D,SAAhD,GAA4D,EAA5D,CAXW,CAaX;;AACA,WAAK4J,yBAAL,CAA+BzR,OAA/B,CAAuC,UAAAuT,UAAU;AAAA,eAAI,MAAI,CAACpC,sBAAL,CAA4BpN,aAA5B,CAA0C,IAA1C,EAAgDyE,WAAhD,CAA4D+K,UAA5D,CAAJ;AAAA,OAAjD;AACA,WAAKpC,sBAAL,CAA4BpN,aAA5B,CAA0C,qBAA1C,EAAiE8D,SAAjE,GAA6E,KAAK6J,mBAAlF;AACA,WAAKP,sBAAL,CAA4BpN,aAA5B,CAA0C,SAA1C,EAAqDrC,SAArD,CAA+DG,MAA/D,CAAsE,QAAtE;AACA,WAAKsP,sBAAL,CAA4BpN,aAA5B,CAA0C,IAA1C,EAAgDrC,SAAhD,CAA0DG,MAA1D,CAAiE,SAAjE;AACA,WAAKsP,sBAAL,CAA4BpN,aAA5B,CAA0C,cAA1C,EAA0DrC,SAA1D,CAAoEC,GAApE,CAAwE,UAAxE;AACH;;;WAED,sBAAakR,KAAb,EAAoB;AAChB,UAAIgB,OAAO,GAAG,EAAd;;AACA,UAAI,qBAAqBrU,MAArB,IAA+B,KAAK6R,eAAxC,EAAyD;AACrDwC,QAAAA,OAAO,CAACC,MAAR,GAAiB,KAAKzC,eAAL,CAAqByC,MAAtC;AACH;;AAED,aAAOhF,KAAK,WAAI,KAAKsC,WAAT,SAAuB2C,kBAAkB,CAAClB,KAAD,CAAzC,GAAoDgB,OAApD,CAAL,CAAkEjN,IAAlE,CAAuE,UAAAmI,QAAQ,EAAI;AACtF,eAAOA,QAAQ,CAACiF,IAAT,EAAP;AACH,OAFM,CAAP;AAGH;;;WAED,mBAAU;AACN,WAAKpE,IAAL,GAAY,IAAZ;AACA,WAAKsB,SAAL,GAAiB,IAAjB;AACA,WAAKC,sBAAL,GAA8B,IAA9B;AAEA,WAAKE,eAAL,GAAuB,IAAvB,CALM,CAKuB;;AAC7B,WAAKE,YAAL,GAAoB,IAApB,CANM,CAMoB;;AAE1B,WAAKE,yBAAL,GAAiC,EAAjC;AACA,WAAKC,mBAAL,GAA2B,EAA3B;AAEA,WAAKC,IAAL,GAAY,IAAZ;;AAEA,UAAI9R,QAAQ,CAACkE,aAAT,CAAuB,uBAAvB,CAAJ,EAAqD;AACjD,aAAKyM,IAAL;AACH;AACJ;;;;;;;;;;;;;;;;;;;;;;;;;;AClXL;;IAEqByD;AACpB,6BAA6B;AAAA,QAAjBC,QAAiB,uEAAN,IAAM;;AAAA;;AAC5B,QAAIA,QAAJ,EAAc;AACb,WAAK1D,IAAL;AACA;AACD;;;;WAED,gBAAO;AAAA;;AACN,UAAI2D,OAAO,GAAG,KAAd;AACA,UAAIC,KAAK,GAAG,KAAZ;AACAvU,MAAAA,QAAQ,CAACE,gBAAT,CAA0B,UAA1B,EAAsCC,OAAtC,CAA8C,UAAAqU,KAAK,EAAI;AACtD,gBAAQA,KAAK,CAACrQ,OAAN,CAAcsQ,SAAtB;AACC,eAAK,SAAL;AACC,iBAAI,CAACH,OAAL,CAAaE,KAAb;;AACAF,YAAAA,OAAO,GAAG,IAAV;AACA;;AACD,eAAK,OAAL;AACC,iBAAI,CAACC,KAAL,CAAWC,KAAX;;AACAD,YAAAA,KAAK,GAAG,IAAR;AACA;AARF;AAUA,OAXD;;AAaA,UAAI5U,MAAM,CAACkR,GAAP,CAAW/E,aAAX,CAAyBS,uBAA7B,EAAsD;AACrD,YAAI+H,OAAJ,EAAa;AACZ,cAAII,GAAG,GAAG1U,QAAQ,CAACqI,aAAT,CAAuB,QAAvB,CAAV;AACAqM,UAAAA,GAAG,CAAChG,GAAJ,GAAU,8BAAV;AACA,cAAIiG,cAAc,GAAG3U,QAAQ,CAACsO,oBAAT,CAA8B,QAA9B,EAAwC,CAAxC,CAArB;AACAqG,UAAAA,cAAc,CAAC9L,UAAf,CAA0B8F,YAA1B,CAAuC+F,GAAvC,EAA4CC,cAA5C;AAEAhV,UAAAA,MAAM,CAACiV,uBAAP,GAAiC,KAAKC,gBAAL,CAAsB/U,IAAtB,CAA2B,IAA3B,CAAjC;AACA;;AAED,YAAIyU,KAAJ,EAAW;AACV,4MAAiExN,IAAjE,CAAsE,UAAA+N,MAAM,EAAI;AAC/E,gBAAMC,MAAM,GAAGD,MAAM,WAArB;AACA9U,YAAAA,QAAQ,CAACE,gBAAT,CAA0B,cAA1B,EAA0CC,OAA1C,CAAkD,UAAA6U,MAAM,EAAI;AAC3D,kBAAIC,MAAM,GAAG,IAAIF,MAAJ,CAAWC,MAAX,CAAb;AAEAA,cAAAA,MAAM,CAACnM,UAAP,CAAkB3E,aAAlB,CAAgC,mBAAhC,EAAqDtE,gBAArD,CAAsE,OAAtE,EAA+E,UAACa,KAAD,EAAW;AAEzF,oBAAI,CAACA,KAAK,CAACyU,aAAN,CAAoBC,OAApB,CAA4B,aAA5B,CAAL,EAAiD;AAChD,sBAAIC,WAAW,GAAG3U,KAAK,CAACyU,aAAN,CAAoBC,OAApB,CAA4B,iBAA5B,CAAlB;AACAC,kBAAAA,WAAW,CAACpT,MAAZ;AACAiT,kBAAAA,MAAM,CAACI,IAAP,YAAoB,UAAA3N,KAAK,EAAI;AAC5BD,oBAAAA,OAAO,CAACkC,GAAR,CAAY,gBAAZ;AACAxI,oBAAAA,UAAU,CAAC,YAAM;AAChB8T,sBAAAA,MAAM,CAACI,IAAP,YAAoB,UAAAhV,CAAC,EAAI;AACxBoH,wBAAAA,OAAO,CAACC,KAAR,CAAcrH,CAAd;AACA,uBAFD;AAGA,qBAJS,EAIP,GAJO,CAAV;AAKA,mBAPD;AAQA;AACD,eAdD,EAcG,IAdH;AAeA,aAlBD;AAmBA,WArBD;AAsBA;AACD;AACD;;;WAED,4BAAmB;AAClBL,MAAAA,QAAQ,CAACE,gBAAT,CAA0B,gBAA1B,EAA4CC,OAA5C,CAAoD,UAAA6U,MAAM,EAAI;AAC7D,YAAIM,EAAE,CAACP,MAAP,CAAcC,MAAM,CAAC/E,EAArB,EAAyB;AACxBsF,UAAAA,MAAM,EAAE;AACP,uBAAW,iBAASjI,KAAT,EAAe;AACzB,kBAAI;AACH0H,gBAAAA,MAAM,CAACnM,UAAP,CAAkB3E,aAAlB,CAAgC,mBAAhC,EAAqDtE,gBAArD,CAAsE,OAAtE,EAA+E,UAACa,KAAD,EAAW;AAEzF,sBAAI,CAACuU,MAAM,CAACG,OAAP,CAAe,aAAf,CAAL,EAAoC;AACnC1U,oBAAAA,KAAK,CAACyU,aAAN,CAAoBC,OAApB,CAA4B,iBAA5B,EAA+CnT,MAA/C;AACAsL,oBAAAA,KAAK,CAACtI,MAAN,CAAawQ,SAAb;AACA;AAED,iBAPD,EAOG,IAPH;AAQA,eATD,CASE,OAAOnV,CAAP,EAAU;AACXoH,gBAAAA,OAAO,CAACC,KAAR,CAAcrH,CAAd;AACAoH,gBAAAA,OAAO,CAACkC,GAAR,CAAY2D,KAAZ;AACA;AACD;AAfM;AADgB,SAAzB;AAmBA,OApBD;AAqBA;;;WAGD,qBAAYsG,GAAZ,EAAiBtL,IAAjB,EAAuB2H,EAAvB,EAA2BwF,MAA3B,EAAmC;AAClC;AACA,UAAI9V,MAAM,CAACkR,GAAP,CAAW/E,aAAX,CAAyBS,uBAA7B,EAAsD;AACrD,mJAIKkJ,MAJL,uPAWmBnN,IAXnB,qBAWgC2H,EAXhC,sBAW4C2D,GAX5C;AAcA,OAfD,MAeO;AACN;AASA;AACD;;;WAED,iBAAQY,KAAR,EAAe;AACd,UAAMZ,GAAG,oDAA6CY,KAAK,CAACrQ,OAAN,CAAcmQ,OAA3D,sDAA8G3U,MAAM,CAAC+E,QAAP,CAAgBgR,QAA9H,eAA2I/V,MAAM,CAAC+E,QAAP,CAAgBD,QAA3J,CAAT;AAEA,UAAIkR,WAAW,GAAG,aAAlB;AACA,UAAIC,MAAM,GAAGpB,KAAK,CAACxM,SAAN,CAAgBjF,KAAhB,CAAsB4S,WAAtB,CAAb;AACA,UAAIE,UAAU,GAAG,IAAIlG,KAAJ,EAAjB;AACAkG,MAAAA,UAAU,CAACnH,GAAX,GAAiBkH,MAAM,CAAC,CAAD,CAAvB;AACAC,MAAAA,UAAU,CAAC9U,YAAX,CAAwB,KAAxB,EAA+B,wBAA/B;AAEA,UAAM+U,KAAK,GAAG,KAAKC,WAAL,CAAiBnC,GAAjB,EAAsB,SAAtB,EAAiCY,KAAK,CAACrQ,OAAN,CAAcmQ,OAA/C,EAAwDuB,UAAU,CAACG,SAAnE,CAAd;AAEA,UAAIC,OAAO,GAAGjW,QAAQ,CAACqI,aAAT,CAAuB,KAAvB,CAAd;AACA4N,MAAAA,OAAO,CAACjO,SAAR,GAAoB8N,KAApB;AAEAtB,MAAAA,KAAK,CAAC0B,MAAN,CAAaD,OAAO,CAACE,iBAArB;AACA3B,MAAAA,KAAK,CAACxS,MAAN;AACA;;;WAED,eAAMwS,KAAN,EAAa;AACZ,UAAMZ,GAAG,4CAAqCY,KAAK,CAACrQ,OAAN,CAAcoQ,KAAnD,uCAAT;AACA,UAAIoB,WAAW,GAAG,aAAlB;AACA,UAAIC,MAAM,GAAGpB,KAAK,CAACxM,SAAN,CAAgBjF,KAAhB,CAAsB4S,WAAtB,CAAb;AACA,UAAIE,UAAU,GAAG,IAAIlG,KAAJ,EAAjB;AACAkG,MAAAA,UAAU,CAACnH,GAAX,GAAiBkH,MAAM,CAAC,CAAD,CAAvB;AACAC,MAAAA,UAAU,CAAC9U,YAAX,CAAwB,KAAxB,EAA+B,wBAA/B;AAGA,UAAM+U,KAAK,GAAG,KAAKC,WAAL,CAAiBnC,GAAjB,EAAsB,OAAtB,EAA+BY,KAAK,CAACrQ,OAAN,CAAcoQ,KAA7C,EAAoDsB,UAAU,CAACG,SAA/D,CAAd;AAEA,UAAIC,OAAO,GAAGjW,QAAQ,CAACqI,aAAT,CAAuB,KAAvB,CAAd;AACA4N,MAAAA,OAAO,CAACjO,SAAR,GAAoB8N,KAApB;AAEAtB,MAAAA,KAAK,CAAC0B,MAAN,CAAaD,OAAO,CAACE,iBAArB;AACA3B,MAAAA,KAAK,CAACxS,MAAN;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ICvJmBoU;AACnB,gCAAc;AAAA;;AACZ,SAAKC,SAAL,GAAiB,EAAjB;AACA,SAAKC,MAAL,GAAc,EAAd;AACD;;;;WAED,gBAAO;AACL,WAAKC,aAAL;AAEA,aAAO/G,OAAO,CAACgH,GAAR,CAAY,KAAKH,SAAjB,CAAP;AACD;;;WAED,yBAAgB;AACd,WAAKlW,OAAL;AACA,WAAKsW,oBAAL;AACA,WAAKxH,KAAL;AACA,WAAKuC,eAAL;AACA,WAAKkF,KAAL;AACA,WAAKvB,OAAL;AACA,WAAKe,MAAL;AACA,WAAKlU,MAAL;AACA,WAAK2U,OAAL;AACA,WAAKC,WAAL;AACD;;;WAED,mBAAU;AACR,UAAIjX,MAAM,CAACkX,QAAP,IAAmB,CAACA,QAAQ,CAACC,SAAT,CAAmB3W,OAA3C,EAAoD;AAClD0W,QAAAA,QAAQ,CAACC,SAAT,CAAmB3W,OAAnB,GAA6BO,KAAK,CAACoW,SAAN,CAAgB3W,OAA7C;AACA,aAAKmW,MAAL,CAAY/U,IAAZ,CAAiB,SAAjB;AACD;AACF;;;WAED,gCAAuB;AACrB,UAAI,EAAE,0BAA0B5B,MAA5B,CAAJ,EAAyC;AACvC,aAAK0W,SAAL,CAAe9U,IAAf,CAAoB,gQAApB;AACA,aAAK+U,MAAL,CAAY/U,IAAZ,CAAiB,sBAAjB;AACD;AACF;;;WAED,iBAAQ;AACN,UAAI,CAAC5B,MAAM,CAACsP,KAAZ,EAAmB;AACjB,aAAKoH,SAAL,CAAe9U,IAAf,CAAoB,0LAApB;AACA,aAAK+U,MAAL,CAAY/U,IAAZ,CAAiB,OAAjB;AACD;AACF;;;WAED,2BAAkB;AAChB,UAAI,OAAOwQ,eAAP,IAA0B,WAA9B,EAA2C;AACzC,aAAKsE,SAAL,CAAe9U,IAAf,CAAoB,0RAApB;AACA,aAAK+U,MAAL,CAAY/U,IAAZ,CAAiB,iBAAjB;AACD;AACF;;;WAED,iBAAQ;AACN,UAAI,EAAE,WAAW5B,MAAb,CAAJ,EAA0B;AACxB,aAAK0W,SAAL,CAAe9U,IAAf,CAAoB,yNAApB;AACA,aAAK+U,MAAL,CAAY/U,IAAZ,CAAiB,OAAjB;AACD;AACF;;;WAED,mBAAU;AACR,UAAI,CAACwV,OAAO,CAACD,SAAR,CAAkBE,OAAvB,EAAgC;AAC9BD,QAAAA,OAAO,CAACD,SAAR,CAAkBE,OAAlB,GAA4BD,OAAO,CAACD,SAAR,CAAkBG,iBAAlB,IAAuCF,OAAO,CAACD,SAAR,CAAkBI,qBAArF;AACA,aAAKZ,MAAL,CAAY/U,IAAZ,CAAiB,SAAjB;AACD;;AAED,UAAI,CAACwV,OAAO,CAACD,SAAR,CAAkB3B,OAAvB,EAAgC;AAC9B4B,QAAAA,OAAO,CAACD,SAAR,CAAkB3B,OAAlB,GAA4B,UAAUlH,CAAV,EAAa;AACvC,cAAInJ,EAAE,GAAG,IAAT;;AACA,aAAG;AACD,gBAAIA,EAAE,CAACkS,OAAH,CAAW/I,CAAX,CAAJ,EAAmB,OAAOnJ,EAAP;AACnBA,YAAAA,EAAE,GAAGA,EAAE,CAACH,aAAH,IAAoBG,EAAE,CAAC+D,UAA5B;AACD,WAHD,QAGS/D,EAAE,KAAK,IAAP,IAAeA,EAAE,CAACqS,QAAH,KAAgB,CAHxC;;AAIA,iBAAO,IAAP;AACD,SAPD;;AAQA,aAAKb,MAAL,CAAY/U,IAAZ,CAAiB,SAAjB;AACD;AACF;;;WAED,kBAAS;AAAA;;AACP,OAAC,UAAA6V,GAAG,EAAI;AACNA,QAAAA,GAAG,CAACjX,OAAJ,CAAY,UAAUsT,IAAV,EAAgB;AAC1B,cAAIA,IAAI,CAAC7I,cAAL,CAAoB,QAApB,CAAJ,EAAmC;AACjC;AACD;;AACDvJ,UAAAA,MAAM,CAACgW,cAAP,CAAsB5D,IAAtB,EAA4B,QAA5B,EAAsC;AACpC6D,YAAAA,YAAY,EAAE,IADsB;AAEpCC,YAAAA,UAAU,EAAE,IAFwB;AAGpCC,YAAAA,QAAQ,EAAE,IAH0B;AAIpC9O,YAAAA,KAAK,EAAE,SAASwN,MAAT,GAAkB;AACvB,kBAAIuB,MAAM,GAAG/W,KAAK,CAACoW,SAAN,CAAgBY,KAAhB,CAAsBC,IAAtB,CAA2BC,SAA3B,CAAb;AAAA,kBACEC,OAAO,GAAG7X,QAAQ,CAAC8X,sBAAT,EADZ;AAGAL,cAAAA,MAAM,CAACtX,OAAP,CAAe,UAAU4X,OAAV,EAAmB;AAChC,oBAAIC,MAAM,GAAGD,OAAO,YAAYE,IAAhC;AACAJ,gBAAAA,OAAO,CAAClP,WAAR,CAAoBqP,MAAM,GAAGD,OAAH,GAAa/X,QAAQ,CAACkY,cAAT,CAAwBC,MAAM,CAACJ,OAAD,CAA9B,CAAvC;AACD,eAHD;AAKA,mBAAKlP,UAAL,CAAgB8F,YAAhB,CAA6BkJ,OAA7B,EAAsC,IAAtC;AACD;AAdmC,WAAtC;AAgBD,SApBD;;AAqBA,aAAI,CAACvB,MAAL,CAAY/U,IAAZ,CAAiB,QAAjB;AACD,OAvBD,EAuBG,CAACwV,OAAO,CAACD,SAAT,EAAoBsB,aAAa,CAACtB,SAAlC,EAA6CuB,YAAY,CAACvB,SAA1D,CAvBH;AAwBD;;;WAED,kBAAS;AAAA;;AACP,OAAC,UAAAM,GAAG,EAAI;AACNA,QAAAA,GAAG,CAACjX,OAAJ,CAAY,UAAUsT,IAAV,EAAgB;AAC1B,cAAIA,IAAI,CAAC7I,cAAL,CAAoB,QAApB,CAAJ,EAAmC;AACjC;AACD;;AACDvJ,UAAAA,MAAM,CAACgW,cAAP,CAAsB5D,IAAtB,EAA4B,QAA5B,EAAsC;AACpC6D,YAAAA,YAAY,EAAE,IADsB;AAEpCC,YAAAA,UAAU,EAAE,IAFwB;AAGpCC,YAAAA,QAAQ,EAAE,IAH0B;AAIpC9O,YAAAA,KAAK,EAAE,SAAS1G,MAAT,GAAkB;AACvB,kBAAI,KAAK6G,UAAL,KAAoB,IAAxB,EAA8B;AAC5B;AACD;;AACD,mBAAKA,UAAL,CAAgBC,WAAhB,CAA4B,IAA5B;AACD;AATmC,WAAtC;AAWD,SAfD;;AAgBA,cAAI,CAACwN,MAAL,CAAY/U,IAAZ,CAAiB,QAAjB;AACD,OAlBD,EAkBG,CAACwV,OAAO,CAACD,SAAT,EAAoBsB,aAAa,CAACtB,SAAlC,EAA6CuB,YAAY,CAACvB,SAA1D,CAlBH;AAmBD;;;WAED,mBAAU;AACR,UAAI,CAACzV,MAAM,CAACsV,OAAZ,EAAqB;AACnBtV,QAAAA,MAAM,CAACsV,OAAP,GAAiB,UAAU9L,GAAV,EAAe;AAC9B,cAAIyN,QAAQ,GAAGjX,MAAM,CAACC,IAAP,CAAauJ,GAAb,CAAf;AAAA,cACI5J,CAAC,GAAGqX,QAAQ,CAACpX,MADjB;AAAA,cAEIqX,QAAQ,GAAG,IAAI7X,KAAJ,CAAUO,CAAV,CAFf,CAD8B,CAGD;;AAC7B,iBAAOA,CAAC,EAAR;AACEsX,YAAAA,QAAQ,CAACtX,CAAD,CAAR,GAAc,CAACqX,QAAQ,CAACrX,CAAD,CAAT,EAAc4J,GAAG,CAACyN,QAAQ,CAACrX,CAAD,CAAT,CAAjB,CAAd;AADF;;AAGA,iBAAOsX,QAAP;AACD,SARD;;AASA,aAAKjC,MAAL,CAAY/U,IAAZ,CAAiB,SAAjB;AACD;AACF;;;WAED,uBAAc;AACZ,UAAI,QAAQiX,KAAR,2GAAQA,KAAR,OAAmB,QAAvB,EAAiC;AAAA,YACtBC,WADsB,GAC/B,SAASA,WAAT,CAAqBnL,KAArB,EAA4BoL,MAA5B,EAAoC;AAClCA,UAAAA,MAAM,GAAGA,MAAM,IAAI;AACjBC,YAAAA,OAAO,EAAE,KADQ;AAEjBC,YAAAA,UAAU,EAAE,KAFK;AAGjBC,YAAAA,MAAM,EAAE1M;AAHS,WAAnB;AAKA,cAAI2M,GAAG,GAAG9Y,QAAQ,CAAC+Y,WAAT,CAAqB,aAArB,CAAV;AACAD,UAAAA,GAAG,CAACE,eAAJ,CAAoB1L,KAApB,EAA2BoL,MAAM,CAACC,OAAlC,EAA2CD,MAAM,CAACE,UAAlD,EAA8DF,MAAM,CAACG,MAArE;AACA,iBAAOC,GAAP;AACD,SAV8B;;AAY/BL,QAAAA,WAAW,CAAC3B,SAAZ,GAAwBnX,MAAM,CAAC6Y,KAAP,CAAa1B,SAArC;AAEAnX,QAAAA,MAAM,CAAC8Y,WAAP,GAAqBA,WAArB;AACA9Y,QAAAA,MAAM,CAAC6Y,KAAP,GAAeC,WAAf;AACA,aAAKnC,MAAL,CAAY/U,IAAZ,CAAiB,cAAjB;AACD;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClKH;AACA;AACA;IACsB0X;AAClB;AACJ;AACA;AACA;AACC,+BAAoC;AAAA,QAAxBC,iBAAwB,uEAAJ,EAAI;;AAAA;;AACnC,QAAIvZ,MAAM,CAACwZ,MAAP,KAAkBhN,SAAtB,EAAiC;AAChCxM,MAAAA,MAAM,CAACwZ,MAAP,GAAgB,CAAhB;AACA;;AACDxZ,IAAAA,MAAM,CAACwZ,MAAP;AACA,SAAKC,GAAL,GAAW,MAAMzZ,MAAM,CAACwZ,MAAxB;AACA,SAAKE,SAAL,GAAiB,IAAjB;AACA,SAAKC,KAAL,GAAa,IAAb;AACA,SAAKC,OAAL,GAAe,IAAf;AAEA,SAAKC,WAAL,GAAmBN,iBAAnB;AACA;AAEE;AACJ;AACA;AACA;AACA;;;;;WACE,uBAAiC;AAAA,UAArBO,WAAqB,uEAAP,KAAO;;AACjC,UAAI,KAAKJ,SAAL,KAAmB,IAAvB,EAA6B;AAC5B,cAAM,IAAIvJ,KAAJ,CAAU,qBAAV,CAAN;AACA;;AAED,UAAI,KAAKyJ,OAAL,KAAiB,IAAjB,IAAyB,CAACE,WAA9B,EAA2C;AAC1C,eAAO,KAAKF,OAAZ;AACA,OAFD,MAEO;AACN,YAAIG,gBAAgB,GAAG1Z,QAAQ,CAACqI,aAAT,CAAuB,KAAvB,CAAvB;AACA,aAAKiR,KAAL,GAAa,KAAKD,SAAL,CAAe,KAAKG,WAApB,CAAb;AACAE,QAAAA,gBAAgB,CAAC1R,SAAjB,GAA6B,KAAKsR,KAAlC;AACA,aAAKC,OAAL,GAAeG,gBAAgB,CAACC,UAAhC;AAEA,eAAO,KAAKJ,OAAZ;AACA;AACD;;;WAED,oBAA6B;AAAA,UAApBK,UAAoB,uEAAP,KAAO;AAC5B,aAAO,KAAKC,WAAL,CAAiBD,UAAjB,CAAP;AACA;AAEE;AACJ;AACA;AACA;;;;WACC,uBAAcE,UAAd,EAA0B;AAAA;;AACzB,UAAIzY,MAAM,CAACC,IAAP,CAAYwY,UAAZ,EAAwB5Y,MAAxB,GAAiC,CAArC,EAAwC;AACvCG,QAAAA,MAAM,CAACC,IAAP,CAAYwY,UAAZ,EAAwB3Z,OAAxB,CAAgC,UAAAG,GAAG,EAAI;AACtC,cAAK,OAAO,KAAI,cAAOA,GAAG,CAACwF,MAAJ,CAAW,CAAX,EAAciU,WAAd,EAAP,SAAqCzZ,GAAG,CAAC0Z,SAAJ,CAAc,CAAd,CAArC,EAAZ,KAA0E,UAA9E,EAA0F;AACzF,iBAAI,cAAO1Z,GAAG,CAACwF,MAAJ,CAAW,CAAX,EAAciU,WAAd,EAAP,SAAqCzZ,GAAG,CAAC0Z,SAAJ,CAAc,CAAd,CAArC,EAAJ,CAA6DF,UAAU,CAACxZ,GAAD,CAAvE;AACA,WAFD,MAEO;AACN,iBAAI,CAACkZ,WAAL,CAAiBlZ,GAAjB,IAAwBwZ,UAAU,CAACxZ,GAAD,CAAlC;AACA;AACD,SAND;AAOA;AACD;AAEE;AACJ;AACA;AACA;AACA;AACA;;;;WACC,mBAAUA,GAAV,EAAeoI,KAAf,EAAsB;AACrB,UAAIA,KAAK,KAAKyD,SAAd,EAAyB;AACxB,eAAO,KAAKqN,WAAL,CAAiBlZ,GAAjB,CAAP;AACA,OAFD,MAEO;AACN,aAAKkZ,WAAL,CAAiBlZ,GAAjB,IAAwBoI,KAAxB;AACA,eAAO,KAAK8Q,WAAL,CAAiBlZ,GAAjB,CAAP;AACA;AACD;AAED;AACD;AACA;;;;WACE,kCAAyB;AAAA;;AACzBe,MAAAA,MAAM,CAACC,IAAP,CAAY,KAAKkY,WAAjB,EAA8BrZ,OAA9B,CAAsC,UAAA8Z,WAAW,EAAI;AACpD,YAAIC,gBAAgB,gBAASD,WAAW,CAACnU,MAAZ,CAAmB,CAAnB,EAAsBiU,WAAtB,EAAT,SAA+CE,WAAW,CAACD,SAAZ,CAAsB,CAAtB,CAA/C,CAApB,CADoD,CAGpD;;AACA3Y,QAAAA,MAAM,CAACgW,cAAP,CAAsB,MAAtB,EAA4B6C,gBAA5B,EAA8C;AAC7CxR,UAAAA,KAAK,EAAE,iBAA8C;AAAA,gBAA7CyR,UAA6C,uEAAhC,MAAI,CAACC,SAAL,CAAeH,WAAf,CAAgC;AACpD,mBAAO,MAAI,CAACG,SAAL,CAAeH,WAAf,EAA4B,MAAI,CAACI,WAAL,CAAiBF,UAAjB,4EAAoC,MAAI,CAACC,SAAL,CAAeH,WAAf,CAApC,EAA5B,CAAP;AACA,WAH4C;AAI7C1C,UAAAA,UAAU,EAAE,IAJiC;AAK7CD,UAAAA,YAAY,EAAE;AAL+B,SAA9C,EAJoD,CAYpD;;AACAjW,QAAAA,MAAM,CAACgW,cAAP,CAAsB,MAAtB,EAA4B4C,WAA5B,EAAyC;AACxCjO,UAAAA,GAAG,EAAE;AAAA,mBAAM,MAAI,CAACoO,SAAL,CAAeH,WAAf,CAAN;AAAA,WADmC;AAExC/M,UAAAA,GAAG,EAAE,eAA8C;AAAA,gBAA7CiN,UAA6C,uEAAhC,MAAI,CAACC,SAAL,CAAeH,WAAf,CAAgC;AAClD,mBAAO,MAAI,CAACC,gBAAD,CAAJ,CAAuBC,UAAvB,CAAP;AACA,WAJuC;AAKxC5C,UAAAA,UAAU,EAAE,IAL4B;AAMxCD,UAAAA,YAAY,EAAE;AAN0B,SAAzC;AAQA,OArBD;AAsBA;AAED;AACD;AACA;AACA;AACA;AACA;;;;WACC,qBAAY5O,KAAZ,EAAmBJ,IAAnB,EAAyB;AACxB,cAAQA,IAAR;AACC,aAAK,QAAL;AACC,iBAAQI,KAAK,aAAMA,KAAN,IAAgB,EAA7B;;AACD,aAAK,QAAL;AACC,iBAAQ4R,KAAK,CAACvW,QAAQ,CAAC2E,KAAD,CAAT,CAAL,GAAyB,CAAzB,GAA6B3E,QAAQ,CAAC2E,KAAD,CAA7C;;AACD,aAAK,SAAL;AACC,iBAAQA,KAAK,CAACmG,QAAN,GAAiBtO,WAAjB,MAAkC,MAA1C;;AACD;AACC,iBAAOmI,KAAP;AARF;AAUA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3HF;;IAEqBwI;;;;;AACjB;AACJ;AACA;AACA;AACA;AACC,8BAA6B;AAAA;;AAAA,QAAjB4I,UAAiB,uEAAJ,EAAI;;AAAA;;AAC5B,8BAAM;AACIlG,MAAAA,GAAG,EAAE,EADT;AAEIhK,MAAAA,IAAI,EAAE;AAFV,KAAN;;AAIA,UAAK2Q,aAAL,CAAmBT,UAAnB;;AACM,UAAKU,sBAAL;;AAEN,UAAKnB,SAAL,GAAiBoB,mBAAO,CAAC,yGAAD,CAAxB;AAR4B;AASzB;;;EAfyCxB;;;;;;;;;;;;ACF9C;AACA;AACA;;AAEA;AACA;;AACA;AAEC,WAAUlL,CAAV,EAAa;AAAE;AACf;AACA;;AAEA,MAAIE,CAAC,GAAGtO,MAAM,CAAC,UAAD,CAAN,IAAsB,EAA9B;AACAA,EAAAA,MAAM,CAAC,UAAD,CAAN,GAAqBsO,CAArB;;AACA,MAAIA,CAAC,CAAC,SAAD,CAAD,KAAiB9B,SAArB,EAAgC;AAAE8B,IAAAA,CAAC,CAAC,SAAD,CAAD,GAAe,KAAf;AAAuB;;AACzD,MAAIA,CAAC,CAAC,SAAD,CAAD,KAAiB9B,SAArB,EAAgC;AAAE8B,IAAAA,CAAC,CAAC,SAAD,CAAD,GAAe,KAAf;AAAuB;;AACzD,MAAIA,CAAC,CAAC,UAAD,CAAD,KAAkB9B,SAAtB,EAAiC;AAAE8B,IAAAA,CAAC,CAAC,UAAD,CAAD,GAAgB,IAAhB;AAAuB;;AAC1D,MAAIA,CAAC,CAAC,WAAD,CAAD,KAAmB9B,SAAvB,EAAkC;AAAE8B,IAAAA,CAAC,CAAC,WAAD,CAAD,GAAiB,GAAjB;AAAuB;;AAC3D,MAAIA,CAAC,CAAC,aAAD,CAAD,KAAqB9B,SAAzB,EAAoC;AAAE8B,IAAAA,CAAC,CAAC,aAAD,CAAD,GAAmB,EAAnB;AAAwB;;AAC9D,MAAIA,CAAC,CAAC,mBAAD,CAAD,KAA2B9B,SAA/B,EAA0C;AAAE8B,IAAAA,CAAC,CAAC,mBAAD,CAAD,GAAyB,EAAzB;AAA8B;;AAC1E,MAAIA,CAAC,CAAC,aAAD,CAAD,KAAqB9B,SAAzB,EAAoC;AAAE8B,IAAAA,CAAC,CAAC,aAAD,CAAD,GAAmB,CAAnB;AAAuB;;AAC7DA,EAAAA,CAAC,CAAC,SAAD,CAAD,GAAe,EAAf;;AAEA,MAAItE,GAAG,GAAG,SAANA,GAAM,GAAY;AAAE,QAAIsE,CAAC,CAAC,SAAD,CAAD,IAAgBF,CAAC,CAACtG,OAAlB,IAA6BsG,CAAC,CAACtG,OAAF,CAAUkC,GAA3C,EAAgD,IAAI;AAAEoE,MAAAA,CAAC,CAACtG,OAAF,CAAUkC,GAAV,CAAc+Q,KAAd,CAAoB3M,CAAC,CAACtG,OAAtB,EAA+BmQ,SAA/B;AAA4C,KAAlD,CAAmD,OAAOvX,CAAP,EAAU,CAAG;AAAE,GAA1I;;AACA4N,EAAAA,CAAC,CAAC0M,aAAF,GAAkB,YAAY;AAC7B,QAAI,CAAC1M,CAAC,CAAC,SAAD,CAAF,IAAiBA,CAAC,CAAC2M,YAAvB,EAAqC;AACrC3M,IAAAA,CAAC,CAAC2M,YAAF,GAAiB,IAAjB;AAEA,QAAIC,IAAI,GAAG,IAAIlL,KAAJ,EAAX;;AACAkL,IAAAA,IAAI,CAACjL,MAAL,GAAciL,IAAI,CAAChL,OAAL,GAAe,YAAY;AACxC5B,MAAAA,CAAC,CAAC,MAAD,CAAD,GAAa4M,IAAI,CAACrS,MAAL,IAAe,CAA5B;AACAyF,MAAAA,CAAC,CAAC2M,YAAF,GAAiB,KAAjB;;AACA,UAAI3M,CAAC,CAACvD,EAAN,EAAU;AAAEuD,QAAAA,CAAC,CAACvD,EAAF;AAAS;AACrB,KAJD;;AAKAmQ,IAAAA,IAAI,CAACnM,GAAL,GAAW,iHAAX;AACA,GAXD,CAhBa,CA4Bb;;;AACAT,EAAAA,CAAC,CAAC0M,aAAF;;AAEA1M,EAAAA,CAAC,CAAC6M,OAAF,GAAY,UAAUC,IAAV,EAAgBnR,IAAhB,EAAsBlB,KAAtB,EAA6B;AACxCkB,IAAAA,IAAI,GAAGA,IAAI,CAACrJ,WAAL,EAAP;;AACA,QAAIqJ,IAAI,IAAI,OAAZ,EAAqB;AAAEmR,MAAAA,IAAI,CAACC,SAAL,GAAiBtS,KAAjB;AAAyB,KAAhD,MACK,IAAIkB,IAAI,IAAI,UAAZ,EAAwB;AAAEmR,MAAAA,IAAI,CAACE,QAAL,GAAgBvS,KAAhB;AAAwB,KAAlD,MACA,IAAIkB,IAAI,IAAI,QAAZ,EAAsB;AAAEmR,MAAAA,IAAI,CAACG,MAAL,GAAcxS,KAAd;AAAsB,KAA9C,MACA;AACJqS,MAAAA,IAAI,CAACha,YAAL,CAAkB6I,IAAlB,EAAwBlB,KAAxB;AACA;AAED,GATD;;AAUAuF,EAAAA,CAAC,CAAC,cAAD,CAAD,GAAoBA,CAAC,CAAC6M,OAAtB;;AAEA7M,EAAAA,CAAC,CAACkN,QAAF,GAAa,UAAUC,CAAV,EAAa;AAAE,WAAOA,CAAC,KAAK,MAAN,IAAgBA,CAAC,KAAK,IAAtB,IAA8BA,CAAC,KAAKjP,SAApC,IAAiDiP,CAAC,KAAK,EAAvD,IAA6DA,CAAC,KAAK,KAA1E;AAAkF,GAA9G;;AACAnN,EAAAA,CAAC,CAAC,aAAD,CAAD,GAAmB,UAAUjJ,MAAV,EAAkBqW,UAAlB,EAA8B;AAChD;AAEA,QAAI/T,GAAG,GAAG,OAAQ3H,MAAM,CAACgE,gBAAf,IAAoC,WAApC,IAAmDhE,MAAM,CAACgE,gBAAP,CAAwBqB,MAAxB,EAAgC,IAAhC,EAAsClB,gBAAtC,CAAuDuX,UAAvD,CAA7D,CAHgD,CAKhD;AACA;;AACA,QAAI,CAACpN,CAAC,CAACkN,QAAF,CAAW7T,GAAX,CAAL,EAAsB;AACrB,aAAOA,GAAP;AACA;;AAED,QAAItC,MAAM,CAACsW,YAAX,EAAyB;AACxBhU,MAAAA,GAAG,GAAGtC,MAAM,CAACsW,YAAP,CAAoBD,UAAU,CAAC9W,OAAX,CAAmB,kBAAnB,EAAuC,UAAU1D,CAAV,EAAa0a,CAAb,EAAgBC,CAAhB,EAAmB;AAAE,eAAOD,CAAC,GAAGC,CAAC,CAACzB,WAAF,EAAX;AAA6B,OAAzF,CAApB,KAAmH/U,MAAM,CAACsW,YAAP,CAAoBD,UAApB,CAAzH;AACA;;AAED,WAAOpN,CAAC,CAACkN,QAAF,CAAW7T,GAAX,IAAkB,IAAlB,GAAyBA,GAAhC;AACA,GAhBD;;AAkBA2G,EAAAA,CAAC,CAAC,cAAD,CAAD,GAAoB,UAAUjJ,MAAV,EAAkBqW,UAAlB,EAA8B;AACjD,QAAI/T,GAAG,GAAG2G,CAAC,CAAC,aAAD,CAAD,CAAiBjJ,MAAjB,EAAyBqW,UAAzB,CAAV;AAEA,QAAI/T,GAAG,KAAK,IAAR,IAAgBA,GAAG,KAAK,GAAxB,IAA+BA,GAAG,KAAK,CAA3C,EAA8C,OAAOA,GAAP,CAHG,CAKjD;;AACA,QAAIA,GAAG,CAACoQ,KAAJ,CAAU,CAAC,CAAX,KAAiB,IAArB,EAA2B,OAAO+D,UAAU,CAACnU,GAAG,CAACoQ,KAAJ,CAAU,CAAV,EAAa,CAAC,CAAd,CAAD,CAAjB,CANsB,CAQjD;;AACA,QAAIgE,IAAI,GAAG1b,QAAQ,CAACqI,aAAT,CAAuB,KAAvB,CAAX;AACAqT,IAAAA,IAAI,CAACxZ,KAAL,CAAWuG,QAAX,GAAsBiT,IAAI,CAACxZ,KAAL,CAAWyZ,UAAX,GAAwB,QAA9C;AACAD,IAAAA,IAAI,CAACxZ,KAAL,CAAW0Z,QAAX,GAAsB,MAAtB;AACA5W,IAAAA,MAAM,CAAC6D,UAAP,CAAkBF,WAAlB,CAA8B+S,IAA9B;AACAA,IAAAA,IAAI,CAACxZ,KAAL,CAAWoH,KAAX,GAAmBhC,GAAnB;AACA,QAAIuU,MAAM,GAAGH,IAAI,CAACI,WAAlB;AACA9W,IAAAA,MAAM,CAAC6D,UAAP,CAAkBC,WAAlB,CAA8B4S,IAA9B;AACA,WAAOG,MAAP;AACA,GAjBD;;AAmBA5N,EAAAA,CAAC,CAAC8N,YAAF,GAAiB,UAAUC,QAAV,EAAoB;AACpC,QAAIC,KAAK,GAAG,EAAZ,CADoC,CAEpC;;AACA,SAAK,IAAIhb,CAAC,GAAG+a,QAAQ,CAAC9a,MAAT,KAAoB,CAAjC,EAAoCD,CAAC,EAArC,GAA0C;AACzCgb,MAAAA,KAAK,CAAChb,CAAD,CAAL,GAAW+a,QAAQ,CAAC/a,CAAD,CAAnB;AACA;;AACD,WAAOgb,KAAP;AACA,GAPD;AASG;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGChO,EAAAA,CAAC,CAAC,WAAD,CAAD,GAAiB,UAAU2F,GAAV,EAAesI,OAAf,EAAwBC,OAAxB,EAAiCC,QAAjC,EAA2C;AAC3D,QAAIC,CAAC,GAAG,+BAA+BC,IAA/B,CAAoC1I,GAApC,CAAR;AACA,QAAI2I,CAAC,GAAGF,CAAC,CAAC,CAAD,CAAD,IAAQ,EAAhB;AAEA,QAAIG,EAAE,GAAG,4BAAT;AACAD,IAAAA,CAAC,CAAChY,OAAF,CAAUiY,EAAV,EAAcN,OAAd,EAL2D,CAKnC;;AAExB,QAAIO,IAAI,GAAG,MAAMF,CAAC,CAAChY,OAAF,CAAUiY,EAAV,EAAcL,OAAd,EAAuB5X,OAAvB,CAA+B,wBAA/B,EAAyD,EAAzD,EAA6DA,OAA7D,CAAqE,MAArE,EAA6E,GAA7E,CAAjB;AAEA,WAAO,CAAC8X,CAAC,CAAC,CAAD,CAAD,IAAQ,EAAT,IAAeD,QAAQ,CAACK,IAAD,CAAvB,IAAiCJ,CAAC,CAAC,CAAD,CAAD,IAAQ,EAAzC,CAAP;AACA,GAVD,CAzGa,CAqHb;;;AACApO,EAAAA,CAAC,CAAC,cAAD,CAAD,GAAoB,UAAUyO,YAAV,EAAwBC,WAAxB,EAAqCC,kBAArC,EAAyDC,eAAzD,EAA0E;AAC7F,QAAIxJ,IAAI,GAAG;AACV,cAAQpF,CAAC,CAAC,MAAD,CADC;AAEV,eAASyO,YAFC;AAGV,aAAO/c,MAAM,CAACmd,gBAAP,IAA2B,CAHxB;AAIV,aAAOH,WAJG;AAKV,iBAAWE;AALD,KAAX,CAD6F,CAQ7F;;AACA,QAAIE,YAAY,GAAG9O,CAAC,CAAC,MAAD,CAAD,GAAY,EAAZ,GAAiBA,CAAC,CAAC,mBAAD,CAArC;AACA,QAAI+O,WAAW,GAAG/O,CAAC,CAAC,MAAD,CAAD,GAAY,EAAZ,GAAiBA,CAAC,CAAC,aAAD,CAApC;AACAoF,IAAAA,IAAI,CAAC,SAAD,CAAJ,GAAkBA,IAAI,CAAC,KAAD,CAAJ,GAAc,IAAd,GAAqB0J,YAArB,GAAoCC,WAAtD,CAX6F,CAa7F;;AACA,QAAIC,UAAU,GAAGP,YAAY,GAAGrJ,IAAI,CAAC,KAAD,CAApC,CAd6F,CAe7F;;AACAA,IAAAA,IAAI,CAAC,gBAAD,CAAJ,GAAyB7N,IAAI,CAACF,GAAL,CAAS2I,CAAC,CAAC,UAAD,CAAV,EAAwB;AAChDzI,IAAAA,IAAI,CAACkB,KAAL,EAAY;AACXlB,IAAAA,IAAI,CAAC0X,IAAL,CAAUD,UAAU,GAAGhP,CAAC,CAAC,WAAD,CAAxB,IAAyCA,CAAC,CAAC,WAAD,CAD3C,CACyD;AADzD,KADwB,CAAzB;AAOA,QAAIpN,CAAC,GAAGoN,CAAC,CAAC,uBAAD,CAAT;;AACA,QAAIpN,CAAC,IAAI,OAAQA,CAAR,KAAe,UAAxB,EAAoC;AACnCA,MAAAA,CAAC,CAACwS,IAAD,CAAD;AACA;;AACD,QAAI8J,UAAU,GAAG9J,IAAI,CAAC,gBAAD,CAArB;;AAEA,QAAI8J,UAAU,GAAGP,kBAAjB,EAAqC;AACpC;AACA,UAAIQ,CAAC,GAAG,EAAR,CAFoC,CAExB;;AACZ,UAAI5B,CAAC,GAAG,EAAR,CAHoC,CAGxB;;AACZ,UAAI6B,MAAM,GAAGpP,CAAC,CAAC,WAAD,CAAD,CACZ0O,WADY,EAEZ;AACA,gBAAUW,CAAV,EAAatP,CAAb,EAAgBuP,CAAhB,EAAmBnC,CAAnB,EAAsB;AACrBgC,QAAAA,CAAC,CAACG,CAAC,CAAChd,WAAF,EAAD,CAAD,GAAqB6a,CAArB;AACA,OALW,EAMZ;AACA,gBAAUoC,CAAV,EAAaxP,CAAb,EAAgBuP,CAAhB,EAAmBnC,CAAnB,EAAsB;AAErB;AACA,YAAII,CAAC,CAACiC,IAAF,KAAWtR,SAAf,EAA0B;AACzBqP,UAAAA,CAAC,CAACiC,IAAF,GAAShC,UAAU,CAAC2B,CAAC,CAACK,IAAF,IAAU,CAAX,CAAnB;;AACA,cAAInD,KAAK,CAACkB,CAAC,CAACiC,IAAH,CAAT,EAAmB;AAAEjC,YAAAA,CAAC,CAACiC,IAAF,GAAS,CAAT;AAAa;;AAClCjC,UAAAA,CAAC,CAACzN,CAAF,GAAM,CAACoP,UAAU,GAAG3B,CAAC,CAACiC,IAAhB,EAAsBC,OAAtB,EAAN;AACA,SAPoB,CAQrB;;;AACAlC,QAAAA,CAAC,CAACmC,CAAF,GAAMP,CAAC,CAAC5U,MAAR;AAEC,YAAIuF,CAAC,GAAG0N,UAAU,CAAC2B,CAAC,CAAC9T,KAAF,IAAW8T,CAAC,CAACrP,CAAb,IAAkBqP,CAAC,CAACQ,QAArB,CAAlB;AACA,YAAID,CAAC,GAAGlC,UAAU,CAAC2B,CAAC,CAAC5U,MAAF,IAAY4U,CAAC,CAACO,CAAd,IAAmBP,CAAC,CAACS,SAAtB,CAAlB;;AACA,YAAI,CAACvD,KAAK,CAACvM,CAAD,CAAN,IAAa,CAACuM,KAAK,CAACqD,CAAD,CAAnB,IAA0B5P,CAAC,GAAG,CAA9B,IAAmC4P,CAAC,GAAG,CAA3C,EAA8C;AAE7CnC,UAAAA,CAAC,CAACmC,CAAF,GAAM,CAAGR,UAAU,GAAG3B,CAAC,CAACiC,IAAhB,GAAwB1P,CAAzB,GAA8B4P,CAA/B,EAAkCD,OAAlC,EAAN;AACA;;AAEF,YAAIH,CAAC,CAACxa,KAAF,CAAQ,WAAR,KAAwBsQ,IAAI,CAAC,MAAD,CAAhC,EAA0C;AAAE,iBAAOrF,CAAC,GAAG,aAAX;AAA2B;;AACvE,YAAIuP,CAAC,CAACxa,KAAF,CAAQ,WAAR,CAAJ,EAA0B;AAAE,iBAAOiL,CAAC,GAAG,UAAJ,GAAiBqF,IAAI,CAAC,SAAD,CAA5B;AAA0C;;AAEtE,YAAIkK,CAAC,CAACxa,KAAF,CAAQ,uBAAR,CAAJ,EAAsC;AAAE,iBAAOiL,CAAC,GAAGuP,CAAJ,GAAQ,GAAR,GAAc/B,CAAC,CAACzN,CAAvB;AAA2B;;AACnE,YAAIwP,CAAC,CAACxa,KAAF,CAAQ,yBAAR,CAAJ,EAAwC;AAAE,iBAAOiL,CAAC,GAAGuP,CAAJ,GAAQ,GAAR,GAAc/B,CAAC,CAACmC,CAAvB;AAA2B;;AAErE,eAAOH,CAAP;AACA,OAhCW,EAiCZ;AACA,gBAAUjB,CAAV,EAAa;AAAE,eAAOA,CAAP;AAAW,OAlCd,CAAb;AAoCA,aAAO;AAAE,eAAOc,MAAT;AAAiB,4BAAoBF;AAArC,OAAP;AACA;;AACD,WAAO,IAAP;AACA,GAxED;;AAyEAlP,EAAAA,CAAC,CAAC,gBAAD,CAAD,GAAsB,UAAU6P,GAAV,EAAenB,WAAf,EAA4B;AACjD,QAAIoB,WAAW,GAAG9P,CAAC,CAAC,cAAD,CAAD,CAAkB6P,GAAlB,EAAuB,WAAvB,CAAlB;AACA,QAAInY,MAAM,GAAGsI,CAAC,CAAC,cAAD,CAAD,CAAkB8P,WAAlB,EACZpB,WADY,EAEZmB,GAAG,CAACzZ,YAAJ,CAAiB,kBAAjB,IAAuC,CAF3B,EAGZyZ,GAHY,CAAb;;AAKA,QAAInY,MAAJ,EAAY;AACXmY,MAAAA,GAAG,CAACpP,GAAJ,GAAU/I,MAAM,CAAC,KAAD,CAAhB;AACAsI,MAAAA,CAAC,CAAC6M,OAAF,CAAUgD,GAAV,EAAe,kBAAf,EAAmCnY,MAAM,CAAC,kBAAD,CAAzC;;AACA,UAAIsI,CAAC,CAAC,YAAD,CAAL,EAAqB;AACpB,YAAI8P,WAAW,GAAGpY,MAAM,CAAC,kBAAD,CAAxB,EAA8C;AAC7CmY,UAAAA,GAAG,CAAC5b,KAAJ,CAAUoH,KAAV,GAAkB2E,CAAC,CAAC,aAAD,CAAD,CAAiB6P,GAAjB,EAAsB,WAAtB,CAAlB;AACA7P,UAAAA,CAAC,CAAC6M,OAAF,CAAUgD,GAAV,EAAe,qBAAf,EAAsC,IAAtC;AACA,SAHD,MAGO;AACNA,UAAAA,GAAG,CAAC5b,KAAJ,CAAUoH,KAAV,GAAkB,MAAlB;AACA;AACD;;AACD2E,MAAAA,CAAC,CAAC,SAAD,CAAD,CAAa1M,IAAb,CAAkBuc,GAAlB;AACAnU,MAAAA,GAAG,CAAC,wBAAwBhE,MAAM,CAAC,KAAD,CAA/B,CAAH;AACA,KAbD,MAaO,IAAIsI,CAAC,CAAC,YAAD,CAAD,IAAmB6P,GAAG,CAACzZ,YAAJ,CAAiB,qBAAjB,CAAvB,EAAgE;AACtE,UAAI2Z,UAAU,GAAGvC,UAAU,CAACqC,GAAG,CAACzZ,YAAJ,CAAiB,kBAAjB,CAAD,CAA3B;;AACA,UAAI,CAACiW,KAAK,CAAC0D,UAAD,CAAN,IAAsBD,WAAW,IAAIC,UAAzC,EAAqD;AACpDF,QAAAA,GAAG,CAAC5b,KAAJ,CAAUoH,KAAV,GAAkB,MAAlB;AACAwU,QAAAA,GAAG,CAACpL,eAAJ,CAAoB,qBAApB;AACA;AACD;AAED,GA5BD;;AA6BAzE,EAAAA,CAAC,CAACvD,EAAF,GAAO,UAAUuT,KAAV,EAAiB;AACvB,QAAIhd,CAAJ,EAAOid,EAAP,EAAW3P,CAAX,EAAc4P,EAAd,EAAkBZ,CAAlB,EAAqBa,EAArB;AAEA,QAAInQ,CAAC,CAACoQ,SAAF,GAAc,CAAlB,EAAqBtQ,CAAC,CAAChM,YAAF,CAAekM,CAAC,CAACoQ,SAAjB;AACrBpQ,IAAAA,CAAC,CAACoQ,SAAF,GAAc,CAAd;;AAEA,QAAIpQ,CAAC,CAAC2M,YAAF,IAAkB3M,CAAC,CAAC,aAAD,CAAD,GAAmB,CAArC,IAA0C,CAACA,CAAC,CAACqQ,YAAjD,EAA+D;AAC9DrQ,MAAAA,CAAC,CAACqQ,YAAF,GAAiB,IAAjB;AACAL,MAAAA,KAAK,GAAGhQ,CAAC,CAAC,aAAD,CAAT;AACA;;AACD,QAAIgQ,KAAK,IAAIA,KAAK,GAAG,CAArB,EAAwB;AACvBhQ,MAAAA,CAAC,CAACoQ,SAAF,GAActQ,CAAC,CAAC5M,UAAF,CAAa8M,CAAC,CAACvD,EAAf,EAAmBuT,KAAnB,CAAd;AACA;AACA;;AACD,QAAIM,SAAS,GAAG,IAAIpQ,IAAJ,GAAWC,OAAX,EAAhB;AAEA,QAAIoQ,SAAS,GAAG,CAAhB,CAhBuB,CAiBvB;;AACA,QAAIC,CAAC,GAAGxQ,CAAC,CAAC8N,YAAF,CAAehO,CAAC,CAAC/N,QAAF,CAAWsO,oBAAX,CAAgC,UAAhC,CAAf,CAAR;;AACA,SAAKrN,CAAC,GAAG,CAAJ,EAAOid,EAAE,GAAGO,CAAC,CAACvd,MAAnB,EAA2BD,CAAC,GAAGid,EAA/B,EAAmCjd,CAAC,EAApC,EAAwC;AACvC,UAAIyd,EAAE,GAAGD,CAAC,CAACxd,CAAD,CAAV;;AACA,UAAIyd,EAAE,CAACra,YAAH,CAAgB,eAAhB,MAAqC,IAAzC,EAA+C;AAE9C,YAAIsa,GAAG,GAAG5Q,CAAC,CAAC/N,QAAF,CAAWqI,aAAX,CAAyB,KAAzB,CAAV;AACA,YAAIuW,QAAQ,GAAIF,EAAE,CAACG,WAAH,IAAkBH,EAAE,CAAC1W,SAArC;;AACA,YAAI,CAAC4W,QAAD,IAAaA,QAAQ,CAACra,OAAT,CAAiB,aAAjB,EAAgC,EAAhC,EAAoCrD,MAApC,KAA+C,CAAhE,EAAmE;AAClE;AACA,cAAI4c,GAAG,GAAG,IAAInO,KAAJ,EAAV;;AACA,eAAK,IAAImP,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAGJ,EAAE,CAACK,UAAH,CAAc7d,MAApC,EAA4C4d,EAAE,EAA9C,EAAkD;AACjD,gBAAIje,CAAC,GAAG6d,EAAE,CAACK,UAAH,CAAcD,EAAd,CAAR;;AACA,gBAAIje,CAAC,IAAIA,CAAC,CAACme,SAAP,IAAoBne,CAAC,CAAC+I,IAAF,CAAOjH,OAAP,CAAe,WAAf,MAAgC,CAAxD,EAA2D;AAC1DsL,cAAAA,CAAC,CAAC6M,OAAF,CAAUgD,GAAV,EAAejd,CAAC,CAAC+I,IAAF,CAAO8N,KAAP,CAAa,IAAI7W,CAAC,CAAC+I,IAAF,CAAO1I,MAAxB,CAAf,EAAgDL,CAAC,CAAC6H,KAAlD;AACA;AACD;;AACDiW,UAAAA,GAAG,CAAChW,WAAJ,CAAgBmV,GAAhB;AACA,SAVD,MAUO;AACN;AACAa,UAAAA,GAAG,CAAC3W,SAAJ,GAAgB4W,QAAQ,CAACra,OAAT,CAAiB,sBAAjB,EAAyC,cAAzC,EACfA,OADe,CACP,OADO,EACE,GADF,EACOA,OADP,CACe,OADf,EACwB,GADxB,EAC6BA,OAD7B,CACqC,QADrC,EAC+C,GAD/C,CAAhB;AAEA,SAlB6C,CAmB9C;;;AACA,YAAI0a,WAAW,GAAGN,GAAG,CAACrQ,oBAAJ,CAAyB,KAAzB,CAAlB;;AACA,aAAKC,CAAC,GAAG,CAAJ,EAAO4P,EAAE,GAAGc,WAAW,CAAC/d,MAA7B,EAAqCqN,CAAC,GAAG4P,EAAzC,EAA6C5P,CAAC,EAA9C,EAAkD;AACjD,cAAI2Q,EAAE,GAAGD,WAAW,CAAC1Q,CAAD,CAApB;;AACA,cAAI2Q,EAAE,CAACxQ,GAAH,KAAW,IAAX,IAAmBwQ,EAAE,CAACxQ,GAAH,CAAOxN,MAAP,GAAgB,CAAvC,EAA0C;AACzC+M,YAAAA,CAAC,CAAC6M,OAAF,CAAUoE,EAAV,EAAc,UAAd,EAA0BA,EAAE,CAACxQ,GAA7B;AACAwQ,YAAAA,EAAE,CAACxQ,GAAH,GAAS,EAAT;AACA;;AACDT,UAAAA,CAAC,CAAC6M,OAAF,CAAUoE,EAAV,EAAc,eAAd,EAA+B,IAA/B;AACAR,UAAAA,EAAE,CAAC7V,UAAH,CAAc8F,YAAd,CAA2BuQ,EAA3B,EAA+BR,EAA/B;AACAF,UAAAA,SAAS;AACT,SA9B6C,CA+B9C;;;AACAE,QAAAA,EAAE,CAAC7V,UAAH,CAAcC,WAAd,CAA0B4V,EAA1B;AACA;AACD,KAvDsB,CAyDvB;;;AACA,QAAI,eAAe,OAAOzQ,CAAC,CAAC,iBAAD,CAA3B,EAAgD;AAC/CA,MAAAA,CAAC,CAAC,iBAAD,CAAD;AACA,KA5DsB,CA8DvB;;;AACA,QAAIkR,WAAW,GAAG,CAAlB;AACA,QAAIC,MAAM,GAAGnR,CAAC,CAAC8N,YAAF,CAAehO,CAAC,CAAC/N,QAAF,CAAWsO,oBAAX,CAAgC,KAAhC,CAAf,CAAb;;AACA,SAAKiP,CAAC,GAAG,CAAJ,EAAOa,EAAE,GAAGgB,MAAM,CAACle,MAAxB,EAAgCqc,CAAC,GAAGa,EAApC,EAAwCb,CAAC,EAAzC,EAA6C;AAC5C,UAAI6B,MAAM,CAAC7B,CAAD,CAAN,CAAUlZ,YAAV,CAAuB,eAAvB,MAA4C,IAAhD,EAAsD;AACrD,YAAIsY,WAAW,GAAGyC,MAAM,CAAC7B,CAAD,CAAN,CAAUlZ,YAAV,CAAuB,UAAvB,KAAsC+a,MAAM,CAAC7B,CAAD,CAAN,CAAU7O,GAAlE;AACAT,QAAAA,CAAC,CAAC,gBAAD,CAAD,CAAoBmR,MAAM,CAAC7B,CAAD,CAA1B,EAA+BZ,WAA/B;AACAwC,QAAAA,WAAW;AACX;AACD;;AAEDnf,IAAAA,QAAQ,CAACE,gBAAT,CAA0B,0CAA1B,EAAsEC,OAAtE,CAA8E,UAAAkL,KAAK,EAAI;AACtF1B,MAAAA,GAAG,CAAC,gBAAD,CAAH;;AACA,UAAI0B,KAAK,CAAChH,YAAN,CAAmB,KAAnB,KAA6B,IAAjC,EAAuC;AACtC,YAAIgZ,MAAM,GAAGhS,KAAK,CAAChH,YAAN,CAAmB,KAAnB,CAAb;AACA,YAAIgb,GAAG,GAAG1f,MAAM,CAACmd,gBAAP,IAA2B,CAArC;;AACA,YAAIgB,IAAG,GAAGzS,KAAK,CAAC8J,OAAN,CAAc,iBAAd,CAAV;;AACA,YAAI7L,KAAK,GAAGwU,IAAG,CAACwB,WAAhB;AACA,YAAI9W,MAAM,GAAGsV,IAAG,CAACrS,YAAjB;AACA,YAAI8T,QAAQ,GAAGF,GAAG,GAAG/V,KAArB;AAEAiW,QAAAA,QAAQ,GAAG/Z,IAAI,CAACF,GAAL,CAAS2I,CAAC,CAAC,UAAD,CAAV,EAAwB;AAClCzI,QAAAA,IAAI,CAACkB,KAAL,EAAY;AACXlB,QAAAA,IAAI,CAAC0X,IAAL,CAAUqC,QAAQ,GAAGtR,CAAC,CAAC,WAAD,CAAtB,IAAuCA,CAAC,CAAC,WAAD,CADzC,CACuD;AADvD,SADU,CAAX,CARsC,CActC;;AACA,YAAIuR,SAAS,GAAGD,QAAQ,IAAI/W,MAAM,GAACc,KAAX,CAAxB;AAEA+T,QAAAA,MAAM,GAAGhS,KAAK,CAAChH,YAAN,CAAmB,KAAnB,EAA0BE,OAA1B,CAAkC,eAAlC,kBAA4Dgb,QAA5D,EAAT;AACAlC,QAAAA,MAAM,GAAGA,MAAM,CAAC9Y,OAAP,CAAe,gBAAf,mBAA2Cib,SAA3C,EAAT;AAEAnU,QAAAA,KAAK,CAACtK,YAAN,CAAmB,KAAnB,EAA0Bsc,MAA1B;AACAhS,QAAAA,KAAK,CAACtK,YAAN,CAAmB,UAAnB,EAA+Bsc,MAA/B;AACAhS,QAAAA,KAAK,CAACtK,YAAN,CAAmB,kBAAnB,EAAuCwe,QAAvC;AACA;AACD,KA1BD;AA4BA,QAAIE,OAAO,GAAGxR,CAAC,CAAC,SAAD,CAAD,CAAayJ,KAAb,EAAd;AACAzJ,IAAAA,CAAC,CAAC,SAAD,CAAD,CAAa/M,MAAb,GAAsB,CAAtB,CAtGuB,CAwGvB;;AACA,QAAI,CAACue,OAAO,CAACve,MAAR,GAAiB,CAAjB,IAAsB,CAAC+M,CAAC,CAACyR,WAA1B,KAA0C,eAAe,OAAOzR,CAAC,CAAC,eAAD,CAArE,EAAwF;AACvFA,MAAAA,CAAC,CAAC,eAAD,CAAD,CAAmBwR,OAAnB;AACAxR,MAAAA,CAAC,CAACyR,WAAF,GAAgB,IAAhB;AACA;;AAED/V,IAAAA,GAAG,CAAC,wBAAwB6U,SAAxB,GAAoC,sCAApC,GAA6EW,WAA7E,GAA2F,mBAA3F,GAAiHM,OAAO,CAACve,MAAzH,GAAkI,IAAlI,IAA0I,IAAIiN,IAAJ,GAAWC,OAAX,KAAuBmQ,SAAjK,IAA8K,IAA/K,CAAH;AACA,GA/GD;;AAiHAtQ,EAAAA,CAAC,CAAC,uBAAD,CAAD,GAA6BA,CAAC,CAACvD,EAA/B,CA7Ua,CA8Ub;;AACA,MAAIqD,CAAC,CAACnO,gBAAN,EAAwB;AACvBmO,IAAAA,CAAC,CAACnO,gBAAF,CAAmB,QAAnB,EAA6B,YAAY;AAAEqO,MAAAA,CAAC,CAACvD,EAAF,CAAK,GAAL;AAAY,KAAvD,EAAyD,KAAzD;AACAqD,IAAAA,CAAC,CAACnO,gBAAF,CAAmB,kBAAnB,EAAuC,YAAY;AAClDqO,MAAAA,CAAC,CAACvD,EAAF,GADkD,CAElD;;AACAqD,MAAAA,CAAC,CAAC4R,mBAAF,CAAsB,MAAtB,EAA8B1R,CAAC,CAACvD,EAAhC,EAAoC,KAApC;AACA,KAJD,EAIG,KAJH;AAKAqD,IAAAA,CAAC,CAACnO,gBAAF,CAAmB,MAAnB,EAA2BqO,CAAC,CAACvD,EAA7B,EAAiC,KAAjC;AACA,GARD,MAQO,IAAIqD,CAAC,CAAC6R,WAAN,EAAmB;AACzB7R,IAAAA,CAAC,CAAC6R,WAAF,CAAc,QAAd,EAAwB3R,CAAC,CAACvD,EAA1B;AACAqD,IAAAA,CAAC,CAAC6R,WAAF,CAAc,UAAd,EAA0B,YAAY;AAAE3R,MAAAA,CAAC,CAACvD,EAAF,CAAK,GAAL;AAAY,KAApD;AACA;AAED,CA5VA,EA4VC/K,MA5VD,CAAD;;;;;;;;;;ACRAA,MAAM,CAAC8K,QAAP,GAAkB;AACdoV,EAAAA,OAAO,EAAE,KADK;AAEdC,EAAAA,OAAO,EAAE,KAFK;AAGdC,EAAAA,QAAQ,EAAE,IAHI;AAIdC,EAAAA,SAAS,EAAE,EAJG;AAKdC,EAAAA,WAAW,EAAE,EALC;AAMdC,EAAAA,iBAAiB,EAAE,EANL;AAOdC,EAAAA,WAAW,EAAE;AAPC,CAAlB;;;;;;;;;;ACAA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChCA,cAAc,mBAAO,CAAC,yDAAW;;AAEjC;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,UAAU;AACrB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,sBAAsB;AACjC,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,UAAU;AACrB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,UAAU;AACrB,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7EA,iBAAiB,mBAAO,CAAC,yFAA6C;AACtE,0BAA0B;AAC1B,iEAAiE;AACjE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gBAAgB;;;;;;;;;;;ACjBJ;;AAEb,kBAAkB;AAClB;;AAEA,uCAAuC,uCAAuC;;AAE9E;;AAEA,wCAAwC,6BAA6B,cAAc,OAAO,iBAAiB,mBAAmB,uBAAuB,gFAAgF,yBAAyB;;AAE9P,sBAAsB,mBAAO,CAAC,gFAAmB;;AAEjD;;AAEA;AACA;;AAEA,4BAA4B,mBAAO,CAAC,8FAA0B;;AAE9D;;AAEA,2BAA2B,mBAAO,CAAC,0FAAwB;;AAE3D;;AAEA,uBAAuB,mBAAO,CAAC,kFAAoB;;AAEnD;;AAEA,yBAAyB,mBAAO,CAAC,sFAAsB;;AAEvD;;AAEA,4BAA4B,mBAAO,CAAC,8FAA0B;;AAE9D;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA,kBAAkB;AAClB;AACA,2CAA2C,cAAc;;;;;;;;;;;;ACjE5C;;AAEb,kBAAkB;AAClB,6BAA6B;AAC7B;;AAEA,uCAAuC,uCAAuC;;AAE9E,aAAa,mBAAO,CAAC,uEAAS;;AAE9B,iBAAiB,mBAAO,CAAC,+EAAa;;AAEtC;;AAEA,eAAe,mBAAO,CAAC,2EAAW;;AAElC,kBAAkB,mBAAO,CAAC,iFAAc;;AAExC,cAAc,mBAAO,CAAC,yEAAU;;AAEhC;;AAEA,2BAA2B,mBAAO,CAAC,uGAAyB;;AAE5D;AACA,eAAe;AACf;AACA,yBAAyB;AACzB;;AAEA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAwB;AACxB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,WAAW;AACX,mBAAmB;AACnB,cAAc;AACd,2CAA2C,cAAc;;;;;;;;;;;;ACnH5C;;AAEb,kBAAkB;AAClB,iCAAiC;AACjC;;AAEA,uCAAuC,uCAAuC;;AAE9E,wBAAwB,mBAAO,CAAC,+FAAqB;;AAErD;;AAEA;AACA;AACA;AACA,2CAA2C,cAAc;;;;;;;;;;;;ACf5C;;AAEb,kBAAkB;;AAElB,aAAa,mBAAO,CAAC,wEAAU;;AAE/B,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA,2CAA2C,cAAc;;;;;;;;;;;;AC5B5C;;AAEb,kBAAkB;AAClB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,oBAAoB,yBAAyB;AAC7C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,QAAQ;AACR;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;;AAEA,kBAAkB;AAClB;AACA,2CAA2C,cAAc;;;;;;;;;;;;AC/D5C;;AAEb,kBAAkB;AAClB,8BAA8B;AAC9B,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mB,qBAAM;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2CAA2C,cAAc;;;;;;;;;;;;AClB5C;;AAEb,kBAAkB;AAClB,qBAAqB;AACrB,gBAAgB;AAChB,mBAAmB;AACnB,sBAAsB;AACtB,qBAAqB;AACrB,YAAY;AACZ;;AAEA,uCAAuC,uCAAuC;;AAE9E;;AAEA,wCAAwC,6BAA6B,cAAc,OAAO,iBAAiB,mBAAmB,uBAAuB,gFAAgF,yBAAyB;;AAE9P,aAAa,mBAAO,CAAC,uEAAS;;AAE9B;;AAEA,iBAAiB,mBAAO,CAAC,+EAAa;;AAEtC;;AAEA,YAAY,mBAAO,CAAC,qEAAQ;;AAE5B,eAAe,mBAAO,CAAC,2EAAW;;AAElC,0BAA0B,mBAAO,CAAC,mGAAuB;;AAEzD,2BAA2B,mBAAO,CAAC,uGAAyB;;AAE5D;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;;AAEA,yCAAyC;AACzC;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,OAAO;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,sBAAsB,SAAS;AAC/B;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,6BAA6B;AAC7B;;AAEA;AACA,KAAK;AACL;AACA,+BAA+B;;AAE/B;AACA;AACA;;AAEA;AACA,2EAA2E;;AAE3E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,yCAAyC;AACzC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN,iEAAiE;AACjE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,2EAA2E;;AAE3E;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E;;AAE/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,0BAA0B,gCAAgC;AAC1D,GAAG;AACH;AACA,2CAA2C,cAAc;;;;;;;;;;;;ACnXzD;AACa;;AAEb,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA,2CAA2C,cAAc;;;;;;;;;;;;ACd5C;;AAEb,kBAAkB;AAClB,cAAc;AACd,eAAe;AACf,wBAAwB;AACxB,eAAe;AACf,mBAAmB;AACnB,mBAAmB;AACnB,yBAAyB;AACzB;AACA,aAAa;AACb,YAAY;AACZ,YAAY;AACZ,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kBAAkB,sBAAsB;AACxC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,kBAAkB;AACpB;AACA;AACA;AACA,kBAAkB;;AAElB;;AAEA;AACA;AACA;AACA;;AAEA,eAAe;AACf;;AAEA;AACA,sCAAsC,SAAS;AAC/C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2CAA2C,cAAc;;;;;;;;;;;AC3HzD;AACA;AACA,gJAAoE;;;;;;;;;;;ACFpE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC,KAA4D;AAC7D,CAAC,CACyB;AAC1B,CAAC,sBAAsB;;AAEvB;AACA;AACA,EAAE;AACF;AACA;;;;;;;;;;;;AAYA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;AAQD;AACA,kBAAkB,sBAAsB;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,UAAU;AACV;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,aAAa;AACb,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,QAAQ;AACR;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,qCAAqC,EAAE;AACvC;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,qCAAqC,aAAa,EAAE;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,UAAU;AACV;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,cAAc;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,cAAc;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT,QAAQ;AACR;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC,wCAAwC;AACxC;AACA;AACA,SAAS;AACT,kCAAkC;AAClC;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;AC3iCD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,aAAa;AACb,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,MAAM;AACN,eAAe;AACf;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;;AAEA;AACA;AACA,wCAAwC,WAAW;AACnD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA,4BAA4B;AAC5B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,UAAU;AACV;AACA;AACA;AACA;;AAEA;;AAEA,UAAU;AACV;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qCAAqC,cAAc;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC,mBAAmB;AACpD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA,kBAAkB;;AAElB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yBAAyB,gBAAgB;AACzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;;AAEA;AACA,aAAa;AACb;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,+CAA+C,QAAQ;AACvD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA,YAAY;AACZ;AACA;AACA;;AAEA,YAAY;AACZ;AACA;AACA;;AAEA,YAAY;AACZ;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA,KAAK;;AAEL;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;AACA;AACA;AACA;AACA,EAAE,KAA0B,oBAAoB,CAAE;AAClD;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;;;;;;;;;;;ACjvBA;;;;;;;;;;;;;;;ACAe;AACf;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;;;AClCe;AACf;AACA;AACA;AACA;;;;;;;;;;;;;;;ACJA;AACA,kBAAkB,kBAAkB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;;;;;;;;;;;;;ACjBe;AACf;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACLiD;AAClC;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH,kBAAkB,8DAAc;AAChC;;;;;;;;;;;;;;;;;ACjBkC;AAC6B;AAChD;AACf,eAAe,sDAAO;AACtB;AACA,IAAI;AACJ;AACA;;AAEA,SAAS,qEAAqB;AAC9B;;;;;;;;;;;;;;;ACVe;AACf;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;ACPe;AACf;;AAEA;AACA;AACA,IAAI;AACJ;AACA,GAAG;AACH;;;;;;;;;;;;;;;ACRA;AACA;AACA;AACA,kBAAkB,sBAAsB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,EAAE;AACtC,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,0BAA0B;;AAE1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,kCAAkC;;AAElC;AACA;AACA;;AAEA;AACA;AACA,qEAAqE;AACrE;AACA;AACA,0CAA0C;AAC1C;AACA,uEAAuE;AACvE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,6DAA6D;AAC7D;AACA,oBAAoB,oBAAoB;AACxC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA,WAAW;AACX;AACA,OAAO;AACP;AACA,6CAA6C;AAC7C,OAAO;AACP;AACA,6BAA6B;AAC7B;AACA,KAAK;AACL;AACA,oBAAoB,yCAAyC;AAC7D,mBAAmB;AACnB;AACA;AACA;;AAEA,mCAAmC,WAAW;AAC9C;;AAEA,iEAAe,GAAG,EAAC;;;;;;;UCrInB;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;UAEA;UACA;;;;;WCzBA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,sDAAsD;WACtD,sCAAsC,iEAAiE;WACvG;WACA;WACA;WACA;WACA;WACA;;;;;WCzBA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,EAAE;WACF;;;;;WCRA;WACA;WACA;WACA;WACA;;;;;WCJA;WACA;WACA;WACA;WACA,GAAG;WACH;WACA;WACA,CAAC;;;;;WCPD;;;;;WCAA;WACA;WACA;WACA;WACA,uBAAuB,4BAA4B;WACnD;WACA;WACA;WACA,iBAAiB,oBAAoB;WACrC;WACA,mGAAmG,YAAY;WAC/G;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,mEAAmE,iCAAiC;WACpG;WACA;WACA;WACA;;;;;WCzCA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;WCNA;;;;;WCAA;;WAEA;WACA;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA;WACA,iCAAiC;;WAEjC;WACA;WACA;WACA,KAAK;WACL,eAAe;WACf;WACA;WACA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,MAAM;WACN;WACA;WACA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,MAAM,qBAAqB;WAC3B;WACA;WACA;WACA;WACA;WACA;;WAEA;;WAEA;WACA;WACA;;;;;;;;;;;;;;;;;;;;;;;;;;ACrFA;CAGA;;AACA;CAGA;;AACA;AACA;AACA;;AAEA,yKAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AACGngB,UAAAA,QAAQ,CAACkE,aAAT,CAAuB,MAAvB,EAA+BrC,SAA/B,CAAyCG,MAAzC,CAAgD,OAAhD;AAEMqU,UAAAA,SAHT,GAGqB,IAAID,6DAAJ,EAHrB;AAAA;AAAA,iBAISC,SAAS,CAAC1F,IAAV,EAJT;;AAAA;AAAA;AAOaE,UAAAA,GAPb,GAOmB,IAAI1T,4CAAJ,EAPnB;AAQO0T,UAAAA,GAAG,CAACrT,cAAJ,GAAqB,EAArB;AACAqT,UAAAA,GAAG,CAAChT,cAAJ,GAAqB,GAArB;AACA8B,UAAAA,MAAM,CAACkR,GAAP,GAAaA,GAAb;AAEAA,UAAAA,GAAG,CAACuP,kBAAJ,GAAyB/J,SAAzB;AAEAxF,UAAAA,GAAG,CAAC/E,aAAJ,GAAoB,IAAIA,wDAAJ,EAApB;AACA+E,UAAAA,GAAG,CAACwP,gBAAJ,GAAuB,IAAIhQ,2DAAJ,EAAvB;AACAQ,UAAAA,GAAG,CAACyP,eAAJ,GAAsB,IAAIlM,0DAAJ,EAAtB,CAhBP,CAkBO;;AACMmM,UAAAA,WAnBb,GAmB2B,SAAdA,WAAc,GAAM;AACtB,gBAAIvgB,QAAQ,CAACkE,aAAT,CAAuB,iBAAvB,CAAJ,EAA+C;AAC3C,4NAAkF6C,IAAlF,CAAuF,UAAA1G,CAAC,EAAI;AACxFwQ,gBAAAA,GAAG,CAAC2P,eAAJ,GAAsB,IAAIngB,CAAC,WAAL,EAAtB;AACH,eAFD;AAGH;;AAED,gBAAIL,QAAQ,CAACkE,aAAT,CAAuB,mBAAvB,CAAJ,EAAiD;AAC7C,4RAAyE6C,IAAzE,CAA8E,UAAA1G,CAAC,EAAI;AAC/EwQ,gBAAAA,GAAG,CAAC4P,gBAAJ,GAAuB,IAAIpgB,CAAC,WAAL,EAAvB;AACH,eAFD;AAGH;;AAED,gBAAIL,QAAQ,CAACkE,aAAT,CAAuB,gBAAvB,CAAJ,EAA8C;AAC1C,8MAA2E6C,IAA3E,CAAgF,UAAA1G,CAAC,EAAI;AACjFwQ,gBAAAA,GAAG,CAAC6P,iBAAJ,GAAwB,IAAIrgB,CAAC,WAAL,EAAxB;AACH,eAFD;AAGH;;AAED,gBAAIwQ,GAAG,CAAC8P,YAAJ,CAAiB,UAAjB,CAAJ,EAAkC;AAC9B,gUAA4E5Z,IAA5E,CAAiF,UAAA1G,CAAC,EAAI;AAClFwQ,gBAAAA,GAAG,CAAC+P,kBAAJ,GAAyB,IAAIvgB,CAAC,WAAL,EAAzB;AACH,eAFD;AAGH;AACJ,WA3CR;;AA6COkgB,UAAAA,WAAW;AA7ClB;AAAA,iBA+Ca1P,GAAG,CAACF,IAAJ,EA/Cb;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAiDOlJ,UAAAA,OAAO,CAACC,KAAR;AAjDP;;AAAA;AAmDI;AAEDD,UAAAA,OAAO,CAACkC,GAAR;AACA3J,UAAAA,QAAQ,CAAC4B,eAAT,CAAyBC,SAAzB,CAAmCG,MAAnC,CAA0C,mBAA1C;;AAtDH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAD,K","sources":["webpack://something_big_project/./node_modules/@babel/runtime/regenerator/index.js","webpack://something_big_project/./scripts/app.js","webpack://something_big_project/./scripts/controllers/avg.js","webpack://something_big_project/./scripts/controllers/header.js","webpack://something_big_project/./scripts/controllers/headerSearch.js","webpack://something_big_project/./scripts/controllers/media.js","webpack://something_big_project/./scripts/controllers/polyfill.js","webpack://something_big_project/./scripts/elements/customHTMLElement.js","webpack://something_big_project/./scripts/elements/searchSuggestion.js","webpack://something_big_project/./scripts/libraries/slimmage.js","webpack://something_big_project/./scripts/libraries/slimmageSettings.js","webpack://something_big_project/./node_modules/delegate/src/closest.js","webpack://something_big_project/./node_modules/delegate/src/delegate.js","webpack://something_big_project/./scripts/elements/templates/searchSuggestion.handlebars","webpack://something_big_project/./node_modules/handlebars/dist/cjs/handlebars.runtime.js","webpack://something_big_project/./node_modules/handlebars/dist/cjs/handlebars/base.js","webpack://something_big_project/./node_modules/handlebars/dist/cjs/handlebars/decorators.js","webpack://something_big_project/./node_modules/handlebars/dist/cjs/handlebars/decorators/inline.js","webpack://something_big_project/./node_modules/handlebars/dist/cjs/handlebars/exception.js","webpack://something_big_project/./node_modules/handlebars/dist/cjs/handlebars/helpers.js","webpack://something_big_project/./node_modules/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js","webpack://something_big_project/./node_modules/handlebars/dist/cjs/handlebars/helpers/each.js","webpack://something_big_project/./node_modules/handlebars/dist/cjs/handlebars/helpers/helper-missing.js","webpack://something_big_project/./node_modules/handlebars/dist/cjs/handlebars/helpers/if.js","webpack://something_big_project/./node_modules/handlebars/dist/cjs/handlebars/helpers/log.js","webpack://something_big_project/./node_modules/handlebars/dist/cjs/handlebars/helpers/lookup.js","webpack://something_big_project/./node_modules/handlebars/dist/cjs/handlebars/helpers/with.js","webpack://something_big_project/./node_modules/handlebars/dist/cjs/handlebars/internal/create-new-lookup-object.js","webpack://something_big_project/./node_modules/handlebars/dist/cjs/handlebars/internal/proto-access.js","webpack://something_big_project/./node_modules/handlebars/dist/cjs/handlebars/internal/wrapHelper.js","webpack://something_big_project/./node_modules/handlebars/dist/cjs/handlebars/logger.js","webpack://something_big_project/./node_modules/handlebars/dist/cjs/handlebars/no-conflict.js","webpack://something_big_project/./node_modules/handlebars/dist/cjs/handlebars/runtime.js","webpack://something_big_project/./node_modules/handlebars/dist/cjs/handlebars/safe-string.js","webpack://something_big_project/./node_modules/handlebars/dist/cjs/handlebars/utils.js","webpack://something_big_project/./node_modules/handlebars/runtime.js","webpack://something_big_project/./node_modules/mark.js/dist/mark.js","webpack://something_big_project/./node_modules/regenerator-runtime/runtime.js","webpack://something_big_project/external var \"$\"","webpack://something_big_project/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://something_big_project/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://something_big_project/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://something_big_project/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://something_big_project/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://something_big_project/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://something_big_project/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://something_big_project/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://something_big_project/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://something_big_project/./node_modules/js-cookie/dist/js.cookie.mjs","webpack://something_big_project/webpack/bootstrap","webpack://something_big_project/webpack/runtime/compat get default export","webpack://something_big_project/webpack/runtime/create fake namespace object","webpack://something_big_project/webpack/runtime/define property getters","webpack://something_big_project/webpack/runtime/ensure chunk","webpack://something_big_project/webpack/runtime/get javascript chunk filename","webpack://something_big_project/webpack/runtime/global","webpack://something_big_project/webpack/runtime/hasOwnProperty shorthand","webpack://something_big_project/webpack/runtime/load script","webpack://something_big_project/webpack/runtime/make namespace object","webpack://something_big_project/webpack/runtime/publicPath","webpack://something_big_project/webpack/runtime/jsonp chunk loading","webpack://something_big_project/./scripts/index.js"],"sourcesContent":["module.exports = require(\"regenerator-runtime\");\n","export default class App {\r\n\tconstructor() {\r\n\t\tthis._resizeFunctionsArr = [];\r\n\t\tthis._resizeFunctions = {};\r\n\t\tthis._resizeFunctionsCounter = 0;\r\n\t\tthis._resizeTimeout = null;\r\n\t\tthis.resizeThrottle = false;\r\n\r\n\t\tthis._scrollFunctionsArr = [];\r\n\t\tthis._scrollFunctions = {};\r\n\t\tthis._scrollFunctionsCounter = 0;\r\n\t\tthis._scrollTimeout = null;\r\n\t\tthis.scrollThrottle = false;\r\n\r\n\t\tthis._resizeAnimationPreventerTimeout = 200;\r\n\r\n\t\tthis.newPageWarning = true;\r\n\r\n\t\tthis.selectricCBs = [];\r\n\r\n\t\tthis.breakpoints = {\r\n\t\t\txs: {\r\n\t\t\t\tgutter: 40,\r\n\t\t\t\tsize: 0,\r\n\t\t\t},\r\n\t\t\tsm: {\r\n\t\t\t\tgutter: 40,\r\n\t\t\t\tsize: 375,\r\n\t\t\t},\r\n\t\t\tmd: {\r\n\t\t\t\tgutter: 40,\r\n\t\t\t\tsize: 768,\r\n\t\t\t},\r\n\t\t\tml: {\r\n\t\t\t\tgutter: 40,\r\n\t\t\t\tsize: 1024,\r\n\t\t\t},\r\n\t\t\tlg: {\r\n\t\t\t\tgutter: 40,\r\n\t\t\t\tsize: 1224,\r\n\t\t\t},\r\n\t\t\txl: {\r\n\t\t\t\tgutter: 30,\r\n\t\t\t\tsize: 1440,\r\n\t\t\t},\r\n\t\t}\r\n\r\n\t\tthis.animationDuration = 300;\r\n\t}\r\n\r\n\tinit() {\r\n\t\tthis.detectBrowser();\r\n\t\tthis.setEventListeners();\r\n\t\tthis.fullHeightListener();\r\n\t\tthis.resizeAnimationPreventer();\r\n\t\tthis.initCSSBreakpoints();\r\n\t\tthis.addNewWindowTitles();\r\n\t\tthis.addNoOpener();\r\n\t\tthis.addAnchorEnhancement();\r\n\t\tthis.initSelectric();\r\n\t\tthis.initTippy();\r\n\t\tthis.initCopy();\r\n\t\tthis.initScrollTo();\r\n\t\tthis.initScrollToTop();\r\n\t\tthis.initPrintListener();\r\n\t\tthis.initLabelClick();\r\n\t\tthis.initMultiAttention();\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tsetEventListeners() {\r\n\t\twindow.addEventListener('resize', this.resize.bind(this), {\r\n\t\t\tpassive: true\r\n\t\t});\r\n\t\tdocument.addEventListener('scroll', this.scroll.bind(this), {\r\n\t\t\tpassive: true\r\n\t\t});\r\n\r\n\t\tdocument.querySelectorAll('main form label').forEach(label => {\r\n\t\t\tlabel.addEventListener('keydown', e => {\r\n\t\t\t\tif (e.key.toLowerCase().substr(0, 3) == 'ent') {\r\n\t\t\t\t\tlabel.click();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tArray.from(document.querySelectorAll('a')).filter(a => !a.hasAttribute('href')).forEach(a => {\r\n\t\t\tif (!a.hasAttribute('tabindex')) {\r\n\t\t\t\ta.setAttribute('tabindex', '0');\r\n\t\t\t}\r\n\r\n\t\t\ta.addEventListener('keydown', e => {\r\n\t\t\t\tif (e.key.toLowerCase().substr(0, 3) == 'ent') {\r\n\t\t\t\t\ta.click();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tresize() {\r\n\t\tconst runFunctions = () => {\r\n\t\t\tfor (let i = 0, length = this._resizeFunctionsArr.length; i < length; i++) {\r\n\t\t\t\tthis._resizeFunctionsArr[i]();\r\n\t\t\t}\r\n\t\t};\r\n\t\tif (this._resizeTimeout !== null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\trunFunctions();\r\n\t\tif (this.resizeThrottle) {\r\n\t\t\tthis._resizeTimeout = setTimeout(() => {\r\n\t\t\t\tthis._resizeTimeout = null;\r\n\t\t\t\trunFunctions();\r\n\t\t\t}, this.resizeThrottle);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @param {function} func Function to be called on a resize event\r\n\t */\r\n\tregisterResizeEvent(func) {\r\n\t\tthis._resizeFunctions[this._resizeFunctionsCounter] = func;\r\n\t\tthis._resizeFunctionsCounter = this._resizeFunctionsCounter + 1;\r\n\r\n\t\t// Rebuild array of events\r\n\t\tthis._resizeFunctionsArr = [];\r\n\t\tObject.keys(this._resizeFunctions).forEach(key => {\r\n\t\t\tthis._resizeFunctionsArr.push(this._resizeFunctions[key]);\r\n\t\t});\r\n\r\n\t\treturn this._resizeFunctionsCounter - 1;\r\n\t}\r\n\r\n\t/**\r\n\t * @param {Number} func Function's ID to be removed from the resize functions\r\n\t */\r\n\tunregisterResizeEvent(func) {\r\n\t\tif (this._resizeFunctions[func]) {\r\n\t\t\t// Found\r\n\t\t\tdelete this._resizeFunctions[func];\r\n\r\n\t\t\t// Rebuild array of events\r\n\t\t\tthis._resizeFunctionsArr = [];\r\n\t\t\tObject.keys(this._resizeFunctions).forEach(key => {\r\n\t\t\t\tthis._resizeFunctionsArr.push(this._resizeFunctions[key]);\r\n\t\t\t});\r\n\r\n\t\t\treturn true;\r\n\t\t} else {\r\n\t\t\t// Not found\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @description Fires all registered events for a scroll event in the document\r\n\t */\r\n\tscroll() {\r\n\t\tconst runFunctions = () => {\r\n\t\t\tfor (let i = 0, length = this._scrollFunctionsArr.length; i < length; i++) {\r\n\t\t\t\tthis._scrollFunctionsArr[i]();\r\n\t\t\t}\r\n\t\t};\r\n\t\tif (this._scrollTimeout !== null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\trunFunctions();\r\n\t\tif (this.scrollThrottle) {\r\n\t\t\tthis._scrollTimeout = setTimeout(() => {\r\n\t\t\t\tthis._scrollTimeout = null;\r\n\t\t\t\trunFunctions();\r\n\t\t\t}, this.scrollThrottle);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @param {function} func Function to be called on a scroll event\r\n\t */\r\n\tregisterScrollEvent(func) {\r\n\t\tthis._scrollFunctions[this._scrollFunctionsCounter] = func;\r\n\t\tthis._scrollFunctionsCounter = this._scrollFunctionsCounter + 1;\r\n\r\n\t\t// Rebuild array of events\r\n\t\tthis._scrollFunctionsArr = [];\r\n\t\tObject.keys(this._scrollFunctions).forEach(key => {\r\n\t\t\tthis._scrollFunctionsArr.push(this._scrollFunctions[key]);\r\n\t\t});\r\n\r\n\t\treturn this._scrollFunctionsCounter - 1;\r\n\t}\r\n\r\n\t/**\r\n\t * @param {Number} func Function's ID to be removed from the scroll functions\r\n\t */\r\n\tunregisterScrollEvent(func) {\r\n\t\tif (this._scrollFunctions[func]) {\r\n\t\t\t// Found\r\n\t\t\tdelete this._scrollFunctions[func];\r\n\r\n\t\t\t// Rebuild array of events\r\n\t\t\tthis._scrollFunctionsArr = [];\r\n\t\t\tObject.keys(this._scrollFunctions).forEach(key => {\r\n\t\t\t\tthis._scrollFunctionsArr.push(this._scrollFunctions[key]);\r\n\t\t\t});\r\n\r\n\t\t\treturn true;\r\n\t\t} else {\r\n\t\t\t// Not found\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @description Adds a 'preventAnimations' class to the html tag on resizing\r\n\t */\r\n\tresizeAnimationPreventer() {\r\n\t\tthis.resizeTimer = null;\r\n\t\tthis.windowWidth = window.innerWidth;\r\n\t\tthis.registerResizeEvent(() => {\r\n\t\t\tif (window.innerWidth !== this.windowWidth) {\r\n\t\t\t\tdocument.documentElement.classList.add('preventAnimations');\r\n\t\t\t\tclearTimeout(this.resizeTimer);\r\n\r\n\t\t\t\tthis.resizeTimer = setTimeout(() => {\r\n\t\t\t\t\tdocument.documentElement.classList.remove('preventAnimations');\r\n\t\t\t\t}, this._resizeAnimationPreventerTimeout);\r\n\r\n\t\t\t\tthis.windowWidth = window.innerWidth;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * @description Adds a CSS variable '--fullHeight' to the html tag that creates an 'accurate 100vh'\r\n\t */\r\n\tfullHeightListener() {\r\n\t\tconst fullHeight = () => {\r\n\t\t\tdocument.documentElement.style.setProperty('--fullHeight', `${window.innerHeight}px`);\r\n\t\t};\r\n\t\tthis.registerResizeEvent(fullHeight);\r\n\t\tfullHeight();\r\n\t}\r\n\r\n\t/**\r\n\t * @description Adds a browser-specific class to the html tag\r\n\t */\r\n\tdetectBrowser() {\r\n\t\t// Opera 8.0+\r\n\t\tlet isOpera = (!!window.opr && !!opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;\r\n\r\n\t\t// Firefox 1.0+\r\n\t\tlet isFirefox = typeof InstallTrigger !== 'undefined';\r\n\r\n\t\tlet isIphone = window.navigator.userAgent.match(/iPhone/i);\r\n\r\n\t\tlet isIpad = window.navigator.userAgent.match(/iPad/i);\r\n\r\n\t\tlet isSafari = window.navigator.userAgent.match(/Safari/i) && (window.navigator.userAgent.match(/iPhone/i) || window.navigator.userAgent.match(/iPad/i) || window.navigator.userAgent.match(/macOS/i));\r\n\r\n\t\t// Internet Explorer 6-11\r\n\t\tlet isIE = /*@cc_on!@*/ false || !!document.documentMode;\r\n\r\n\t\t// Edge 20+\r\n\t\tlet isEdge = !isIE && !!window.StyleMedia;\r\n\r\n\t\t// Chrome\r\n\t\tlet isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);\r\n\r\n\t\t// Blink engine detection\r\n\t\tlet isBlink = (isChrome || isOpera) && !!window.CSS;\r\n\r\n\t\tif (isOpera) {\r\n\t\t\tdocument.documentElement.classList.add('opera');\r\n\t\t}\r\n\r\n\t\tif (isFirefox) {\r\n\t\t\tdocument.documentElement.classList.add('firefox');\r\n\t\t}\r\n\r\n\t\tif (isSafari) {\r\n\t\t\tdocument.documentElement.classList.add('safari');\r\n\t\t}\r\n\r\n\t\tif (isIphone) {\r\n\t\t\tdocument.documentElement.classList.add('iphone');\r\n\t\t}\r\n\r\n\t\tif (isIpad) {\r\n\t\t\tdocument.documentElement.classList.add('ipad');\r\n\t\t}\r\n\r\n\t\tif (isIE) {\r\n\t\t\tdocument.documentElement.classList.add('ie');\r\n\t\t}\r\n\r\n\t\tif (isEdge) {\r\n\t\t\tdocument.documentElement.classList.add('edge');\r\n\t\t}\r\n\r\n\t\tif (isChrome) {\r\n\t\t\tdocument.documentElement.classList.add('chrome');\r\n\t\t}\r\n\r\n\t\tif (isBlink) {\r\n\t\t\tdocument.documentElement.classList.add('blink');\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @description Attempts to load bootstrap breakpoint settings from the CSS variables\r\n\t */\r\n\tinitCSSBreakpoints() {\r\n\t\tif (window.getComputedStyle) {\r\n\t\t\tconst documentStyling = getComputedStyle(document.documentElement);\r\n\t\t\tObject.keys(this.breakpoints).forEach(breakpoint => {\r\n\t\t\t\tif (documentStyling.getPropertyValue(`--breakpoint-${breakpoint}-size`) &&\r\n\t\t\t\t\tparseInt(documentStyling.getPropertyValue(`--breakpoint-${breakpoint}-size`)) !== NaN) {\r\n\t\t\t\t\tthis.breakpoints[breakpoint].size = parseInt(documentStyling.getPropertyValue(`--breakpoint-${breakpoint}-size`));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (documentStyling.getPropertyValue(`--breakpoint-${breakpoint}-gutter`) &&\r\n\t\t\t\t\tparseInt(documentStyling.getPropertyValue(`--breakpoint-${breakpoint}-gutter`)) !== NaN) {\r\n\t\t\t\t\tthis.breakpoints[breakpoint].gutter = parseInt(documentStyling.getPropertyValue(`--breakpoint-${breakpoint}-gutter`));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// Also check if we can save animationDuration\r\n\t\t\tif (documentStyling.getPropertyValue(`--animationDuration`) &&\r\n\t\t\t\tparseInt(documentStyling.getPropertyValue(`--animationDuration`)) !== NaN) {\r\n\t\t\t\tthis.animationDuration = parseInt(documentStyling.getPropertyValue(`--animationDuration`));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @description Appends text to a tags that tells the user it'll open in a new tab/window. Add a tag with `data-new-window-text` property to change the appended text\r\n\t */\r\n\taddNewWindowTitles() {\r\n\t\tlet text = '(opent in een nieuw scherm)';\r\n\t\tif (document.querySelector('[data-new-window-text]')) {\r\n\t\t\ttext = document.querySelector('[data-new-window-text]').dataset.newWindowText;\r\n\t\t}\r\n\r\n\t\tdocument.querySelectorAll('a[target=\"_blank\"]').forEach(a => {\r\n\t\t\ta.setAttribute('title', `${a.getAttribute('title') ? a.getAttribute('title') : ''} ${text}`.trim().replace(/ /g, \" \"));\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * @description Adds the attribute 'rel' set to 'noopener' on external links; This is for security reasons/best practices\r\n\t */\r\n\taddNoOpener() {\r\n\t\tdocument.querySelectorAll('a').forEach(a => {\r\n\t\t\tif (a.href && !a.hasAttribute('rel')) {\r\n\t\t\t\tif (a.hostname != location.hostname) {\r\n\t\t\t\t\ta.setAttribute('rel', 'noopener');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * @description Makes sure anchored tags get a class for it, so offsetting scroll is possible. Also edit anchor links to get the [data-scroll-to] attribute\r\n\t */\r\n\taddAnchorEnhancement() {\r\n\t\t// Enhance anchors\r\n\t\tArray.from(document.querySelectorAll('a[id]')).filter(a => !a.href).forEach(a => {\r\n\t\t\t// Get parent element, add 'anchored' class\r\n\t\t\tif (a.parentElement) {\r\n\t\t\t\ta.parentElement.classList.add('anchored');\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Enhance anchor links\r\n\t\tArray.from(document.querySelectorAll('a[href]')).filter(a => a.hash && a.hash != '' && a.getAttribute('href').substr(0, 1) == '#' && !a.dataset.scrollTo).forEach(a => {\r\n\t\t\ta.dataset.scrollTo = a.hash;\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * @description Scroll element into view\r\n\t */\r\n\tinitScrollTo() {\r\n\t\tif (window.scrollTo) {\r\n\t\t\tdocument.querySelectorAll('[data-scroll-to]').forEach(el => {\r\n\t\t\t\tel.addEventListener('click', e => {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tconst target = document.querySelector(el.dataset.scrollTo);\r\n\r\n\t\t\t\t\tconst scrollPosition = this.elementCoords(target).top - (window.innerWidth > this.breakpoints.md.size ? 150 : 70);\r\n\t\t\t\t\twindow.scrollTo({\r\n\t\t\t\t\t\ttop: scrollPosition,\r\n\t\t\t\t\t\tbehavior: 'smooth',\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tscrollTo(selector) {\r\n\t\tlet target;\r\n\t\tif (typeof selector == 'string') {\r\n\t\t\ttarget = document.querySelector(selector);\r\n\t\t} else {\r\n\t\t\ttarget = selector;\r\n\t\t}\r\n\r\n\t\tif (target) {\r\n\t\t\tconst scrollPosition = this.elementCoords(target).top - (window.innerWidth > this.breakpoints.md.size ? 150 : 70);\r\n\t\t\twindow.scrollTo({\r\n\t\t\t\ttop: scrollPosition,\r\n\t\t\t\tbehavior: 'smooth',\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @description Basic random number generator\r\n\t * @param {Number} min \r\n\t * @param {Number} max \r\n\t * @returns {Number}\r\n\t */\r\n\trandom(min, max) {\r\n\t\treturn Math.floor(Math.random() * (max - min + 1) + min);\r\n\t}\r\n\r\n\t/**\r\n\t * @description Basic random string generator\r\n\t * @param {Number} length\r\n\t * @returns {String}\r\n\t */\r\n\trandomString(length) {\r\n\t\tlet result = '';\r\n\t\tconst characters = 'AB CDE FG HIJKLM NO PQRST UVWXYZa bcde fghi jklmnop qrstuvwx yz0 12345 6789';\r\n\t\tconst charactersLength = characters.length;\r\n\t\tfor (let i = 0; i < length; i++) {\r\n\t\t\tresult += characters.charAt(Math.floor(Math.random() * charactersLength));\r\n\t\t}\r\n\t\treturn result.trim().replace(/\\s\\s/g, ' ');\r\n\t}\r\n\r\n\t/**\r\n\t * @description Retrieves absolute position of an element relative to the page\r\n\t * @param {HTMLElement} el \r\n\t * @returns {Object}\r\n\t */\r\n\telementCoords(el) {\r\n\t\tconst box = el.getBoundingClientRect();\r\n\r\n\t\tconst body = document.body;\r\n\t\tconst docEl = document.documentElement;\r\n\r\n\t\tconst scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop;\r\n\t\tconst scrollLeft = window.pageXOffset || docEl.scrollLeft || body.scrollLeft;\r\n\r\n\t\tconst clientTop = docEl.clientTop || body.clientTop || 0;\r\n\t\tconst clientLeft = docEl.clientLeft || body.clientLeft || 0;\r\n\r\n\t\tconst top = box.top + scrollTop - clientTop;\r\n\t\tconst left = box.left + scrollLeft - clientLeft;\r\n\r\n\t\treturn {\r\n\t\t\ttop: Math.round(top),\r\n\t\t\tleft: Math.round(left)\r\n\t\t};\r\n\t}\r\n\r\n\tinitScrollToTop() {\r\n\t\tthis.scrollToTopContainer = document.querySelector('.scrollToTop');\r\n\r\n\t\tif (this.scrollToTopContainer) {\r\n\t\t\tconst button = this.scrollToTopContainer.querySelector('button');\r\n\t\t\tconst scroll = () => {\r\n\t\t\t\tif (document.documentElement.scrollTop > 400) {\r\n\t\t\t\t\tthis.scrollToTopContainer.classList.add('active');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.scrollToTopContainer.classList.remove('active');\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tthis.registerScrollEvent(scroll.bind(this));\r\n\r\n\t\t\tbutton.addEventListener('click', () => {\r\n\t\t\t\tthis.scrollToTopContainer.classList.add('moving');\r\n\t\t\t\tbutton.blur();\r\n\t\t\t\twindow.scrollTo({\r\n\t\t\t\t\ttop: 0,\r\n\t\t\t\t\tbehavior: 'smooth',\r\n\t\t\t\t});\r\n\t\t\t\tsetTimeout(() => this.scrollToTopContainer.classList.remove('moving'), 1500);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tinitSelectric() {\r\n\t\tif (document.querySelectorAll('select[selectric=\"true\"]').length) {\r\n\t\t\ttry {\r\n\t\t\t\timport( /* webpackChunkName: \"modules/dropdown\" */ 'selectric').then(() => {\r\n\t\t\t\t\tdocument.querySelectorAll('select[selectric=\"true\"]').forEach(select => {\r\n\t\t\t\t\t\t$(select).selectric({\r\n\t\t\t\t\t\t\tarrowButtonMarkup: ``\r\n\t\t\t\t\t\t});\r\n\r\n\r\n\t\t\t\t\t\tif (select.classList.contains('homepageDropdown')) {\r\n\t\t\t\t\t\t\t// Initialize Selectric and bind to 'change' event and navigate to value\r\n\t\t\t\t\t\t\t$(select).selectric().on('selectric-select', function() {\r\n\t\t\t\t\t\t\t\tlocation.href = $(this).val();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t// Add a hidden label around the selectric input for accessibility.\r\n\t\t\t\t\t\t$('.selectric-input').wrap('');\r\n\r\n\t\t\t\t\t\tthis.selectricCBs.forEach(cb => {\r\n\t\t\t\t\t\t\tcb();\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tthis.selectricCBs = [];\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t} catch (e) {\r\n\t\t\t\tconsole.error(e);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @description Tooltip library\r\n\t */\r\n\tinitTippy() {\r\n\t\tif (document.querySelectorAll('[data-tippy-content]').length || document.querySelectorAll('[data-tippy-source]').length) {\r\n\t\t\ttry {\r\n\t\t\t\timport( /* webpackChunkName: \"modules/tooltip\" */ 'tippy.js').then(e => {\r\n\t\t\t\t\tconst tippy = e.default;\r\n\t\t\t\t\ttippy('[data-tippy-content]');\r\n\r\n\t\t\t\t\tif (document.querySelectorAll('[data-tippy-source]').forEach(source => {\r\n\t\t\t\t\t\t\tconst target = document.querySelector(`[data-tippy-target=\"${source.dataset.tippySource}\"]`);\r\n\t\t\t\t\t\t\tif (target) {\r\n\t\t\t\t\t\t\t\ttippy(source, {\r\n\t\t\t\t\t\t\t\t\tallowHTML: true,\r\n\t\t\t\t\t\t\t\t\tcontent: target.innerHTML,\r\n\t\t\t\t\t\t\t\t\tinteractive: target.querySelectorAll('a, button').length > 0\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}));\r\n\t\t\t\t});\r\n\t\t\t} catch (e) {\r\n\t\t\t\tconsole.error(e);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * @description Makes tags with the data-copy property clickable, copies its content to the clipboard\r\n\t */\r\n\tinitCopy() {\r\n\t\tdocument.querySelectorAll('[data-copy]').forEach(el => {\r\n\t\t\tel.addEventListener('click', () => {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tconst copyContent = el.dataset.copy;\r\n\t\t\t\t\tconst input = document.createElement('input');\r\n\r\n\t\t\t\t\tinput.type = 'text';\r\n\t\t\t\t\tinput.style.position = 'absolute';\r\n\t\t\t\t\tinput.style.height = 0;\r\n\t\t\t\t\tinput.style.overflow = 'hidden';\r\n\t\t\t\t\tinput.value = copyContent;\r\n\r\n\t\t\t\t\tdocument.body.appendChild(input);\r\n\t\t\t\t\tinput.select();\r\n\t\t\t\t\tdocument.execCommand('copy');\r\n\t\t\t\t\tinput.parentNode.removeChild(input);\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\tthis.toast('Something unexpected went wrong', 'error');\r\n\t\t\t\t\tconsole.error(e);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tinitPrintListener() {\r\n\t\tthis.printTexts = Array.from(document.querySelectorAll('[data-print]'));\r\n\r\n\t\tif (this.printTexts.length) {\r\n\t\t\tlet printElements = [];\r\n\r\n\t\t\twindow.addEventListener('beforeprint', e => {\r\n\t\t\t\tthis.printTexts.forEach(printParent => {\r\n\t\t\t\t\tlet span = document.createElement('span');\r\n\t\t\t\t\tspan.innerHTML = printParent.dataset.print;\r\n\t\t\t\t\tspan.classList.add('printText');\r\n\r\n\t\t\t\t\tprintElements.push(span);\r\n\r\n\t\t\t\t\tprintParent.appendChild(span);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\twindow.addEventListener('afterprint', e => {\r\n\t\t\t\tprintElements.forEach(printElement => {\r\n\t\t\t\t\tprintElement.remove();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tprintElements = [];\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tinitLabelClick() {\r\n\t\tdocument.querySelectorAll('label[for]').forEach(label => {\r\n\t\t\tlabel.addEventListener('keydown', e => {\r\n\r\n\t\t\t\tswitch (e.key.toLowerCase()) {\r\n\t\t\t\t\tcase ' ':\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tcase 'space':\r\n\t\t\t\t\tcase 'enter':\r\n\t\t\t\t\t\tlabel.click();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tgetCurrentBreakpoint() {\r\n\t\tconst width = window.innerWidth;\r\n\t\tconst breakpoints = Object.keys(this.breakpoints).reverse();\r\n\r\n\t\tlet currentBreakpoint = breakpoints[breakpoints.length - 1];\r\n\r\n\t\tbreakpoints.forEach(breakpoint => {\r\n\t\t\tif (width <= this.breakpoints[breakpoint].size) {\r\n\t\t\t\tcurrentBreakpoint = breakpoint;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn currentBreakpoint;\r\n\t}\r\n\r\n\ttoast(message, type = 'success') {\r\n\t\tif (this.ToastController) {\r\n\t\t\tthis.ToastController.new(message, type);\r\n\t\t} else {\r\n\t\t\tconsole.error('ToastController not available. Message below');\r\n\t\t\tconsole.log(`[${type}] ${message}`);\r\n\t\t}\r\n\t}\r\n\r\n\tgetParameter(name) {\r\n\t\tlet result = null,\r\n\t\t\ttmp = [];\r\n\t\tlet items = location.search.substr(1).split(\"&\");\r\n\t\tfor (let index = 0; index < items.length; index++) {\r\n\t\t\ttmp = items[index].split(\"=\");\r\n\t\t\tif (tmp[0] === name) {\r\n\t\t\t\tresult = decodeURIComponent(tmp[1]);\r\n\t\t\t}\r\n\t\t\tif (result === 'undefined') {\r\n\t\t\t\tresult = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\tinsertTesters() {\r\n\t\tthis.insertBreakpointIndicator();\r\n\t\tthis.insertColumnTester();\r\n\t}\r\n\r\n\tinsertColumnTester() {\r\n\t\tlet tester = document.createElement('div');\r\n\t\ttester.classList.add('columnTester');\r\n\t\tlet cols = ``;\r\n\t\tfor (let i = 0; i < 12; i++) {\r\n\t\t\tcols += `
`;\r\n\t\t}\r\n\t\ttester.innerHTML = `
${cols}
`;\r\n\t\tdocument.body.appendChild(tester);\r\n\t}\r\n\r\n\tinsertBreakpointIndicator() {\r\n\t\tconst breakpoints = Object.keys(this.breakpoints);\r\n\t\tlet blocks = ``;\r\n\t\tbreakpoints.forEach((breakpoint, index) => {\r\n\t\t\tlet classes = 'col ';\r\n\t\t\tif (index == 0) {\r\n\t\t\t\tclasses += `d-${breakpoints[index + 1]}-none`;\r\n\t\t\t} else if (index == breakpoints.length - 1) {\r\n\t\t\t\tclasses += `d-none d-${breakpoint}-block`;\r\n\t\t\t} else {\r\n\t\t\t\tclasses += `d-none d-${breakpoint}-block d-${breakpoints[index + 1]}-none`;\r\n\t\t\t}\r\n\t\t\tblocks += `
${breakpoint}
`;\r\n\t\t});\r\n\r\n\r\n\t\tlet tester = document.createElement('div');\r\n\t\ttester.classList.add('breakpointIndicators');\r\n\r\n\t\ttester.innerHTML = `
${blocks}
`;\r\n\t\tdocument.body.appendChild(tester);\r\n\t}\r\n\r\n\t/**\r\n\t * @description Part of the pagecontroller, makes sure newPage methods get executed in other controllers as well\r\n\t */\r\n\tnewPage() {\r\n\t\t// Reset App's cache\r\n\t\tthis._resizeFunctionsArr = [];\r\n\t\tthis._resizeFunctions = {};\r\n\t\tthis._resizeFunctionsCounter = 0;\r\n\r\n\t\tthis._scrollFunctionsArr = [];\r\n\t\tthis._scrollFunctions = {};\r\n\t\tthis._scrollFunctionsCounter = 0;\r\n\r\n\t\t// Trigger slimmage\r\n\t\twindow.slimmage.cr();\r\n\r\n\t\t// Trigger newPage in controllers\r\n\t\tlet incompleteControllers = [];\r\n\t\tObject.keys(this).forEach(key => {\r\n\t\t\tif (this.hasOwnProperty(key) && key.indexOf('Controller') > -1) {\r\n\t\t\t\tconst obj = this[key];\r\n\t\t\t\tif (obj != null && obj.newPage && typeof obj.newPage == 'function') {\r\n\t\t\t\t\tobj.newPage();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (this.newPageWarning) {\r\n\t\t\t\t\t\tincompleteControllers.push(key);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Warn (once) if there are controllers without a newPage method\r\n\t\tif (this.newPageWarning && incompleteControllers.length) {\r\n\t\t\tconsole.warn(`The following controllers are missing a %cnewPage`, 'color: orange;', `method:\\n\\n `, incompleteControllers.join('\\n '), `\\n\\nMake sure these can handle loading a new page`);\r\n\t\t\tdelete this.newPageWarning;\r\n\t\t}\r\n\t}\r\n\r\n\tinitMultiAttention() {\r\n\t\tif (document.querySelectorAll('.multiAttentionComponent').length) {\r\n\t\t\tconst links = document.querySelectorAll('.linkContainer a')\r\n\r\n\t\t\tlinks.forEach(link => {\r\n\t\t\t\tlink.addEventListener('click', () => {\r\n\t\t\t\t\tvar linkIndex = link.dataset.linkid;\r\n\r\n\t\t\t\t\tconst content = document.querySelectorAll('.multiAttentionComponent .content');\r\n\t\t\t\t\tconst image = document.querySelectorAll('.multiAttentionComponent .imageContainer img');\r\n\r\n\t\t\t\t\tconst activeContent = document.querySelector('.multiAttentionComponent .content[data-contentid=\"' + linkIndex + '\"]')\r\n\t\t\t\t\tconst activeLink = document.querySelector('.linkContainer a[data-linkid=\"' + linkIndex + '\"]');\r\n\t\t\t\t\tconst activeImage = document.querySelector('.multiAttentionComponent .imageContainer img[data-imgid=\"' + linkIndex + '\"]');\r\n\t\t\t\t\r\n\t\t\t\t\tif (activeContent.classList.contains('show')) {\r\n\t\t\t\t\t// console.log('is active');\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tcontent.forEach(activeContent => {\r\n\t\t\t\t\t\t\tactiveContent.classList.remove('show');\r\n\t\t\t\t\t\t\tactiveContent.style.height = `${activeContent.clientHeight}px`;\r\n activeContent.offsetHeight;\r\n activeContent.style.height = 0;\r\n\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\tlinks.forEach(activeLink => {\r\n\t\t\t\t\t\t\tactiveLink.classList.remove('show');\r\n\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\timage.forEach(activeImages => {\r\n\t\t\t\t\t\t\tactiveImages.classList.remove('show');\r\n\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\tactiveContent.classList.add('show');\r\n\t\t\t\t\t\tactiveLink.classList.add('show');\r\n\t\t\t\t\t\tactiveImage.classList.add('show');\r\n\r\n\t\t\t\t\t\tactiveContent.style.height = `${activeContent.clientHeight}px`;\r\n\t\t\t\t\t\tactiveContent.offsetHeight;\r\n\t\t\t\t\t\tactiveContent.style.height = `${activeContent.scrollHeight}px`;\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t// TODO fix height animation\r\n\t\t\t\t\t// setTimeout(() => {\r\n\t\t\t\t\t// \tconst contentContainer = document.querySelector('.multiAttentionComponent .contentColumn');\r\n\r\n\t\t\t\t\t// \tconsole.log(contentContainer.scrollHeight);\r\n\r\n\t\t\t\t\t// \tcontentContainer.style.height = `${contentContainer.clientHeight}px`;\r\n\t\t\t\t\t// \tcontentContainer.offsetHeight;\r\n\t\t\t\t\t// \tcontentContainer.style.height = `${contentContainer.scrollHeight}px`;\r\n\t\t\t\t\t// }, 500);\r\n\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t}\r\n\r\n\treset() {\r\n\t\t// this.initAutoplayOnHover();\r\n\t}\r\n}","import Cookies from 'js-cookie';\r\n\r\nexport default class AVGController {\r\n\tconstructor() {\r\n\t\tthis.avgPermissionsCookie = Cookies.get('AVGPermissions') ? JSON.parse(Cookies.get('AVGPermissions')) : undefined;\r\n\t\tthis.cookieBar = document.querySelector('#cookieBar');\r\n\t\twindow.dataLayer = window.dataLayer || [];\r\n\r\n\t\twindow.dataLayer.push({\r\n\t\t\t\"event\": \"ChangeCookieChoices\",\r\n\t\t\t\"Analytics\": this.AcceptedAnalyticsCookies,\r\n\t\t\t\"Tracking\": this.AcceptedTrackingCookies\r\n\t\t});\r\n\t\tif (document.querySelector('form#cookieConfigure') !== null) {\r\n\t\t\tdocument.querySelector('input#Analytics').checked = this.AcceptedAnalyticsCookies;\r\n\t\t\tdocument.querySelector('input#Tracking').checked = this.AcceptedTrackingCookies;\r\n\t\t}\r\n\r\n\t\tthis.LoadAVGScripts();\r\n\t\tthis.CheckOpen();\r\n\t\tthis.SetupButtonClicks();\r\n\t}\r\n\r\n\tget AcceptedFunctionalCookies() {\r\n\t\tif (this.avgPermissionsCookie === undefined) return false;\r\n\r\n\t\treturn this.avgPermissionsCookie.Functional;\r\n\t}\r\n\r\n\tget AcceptedAnalyticsCookies() {\r\n\t\tif (this.avgPermissionsCookie === undefined) return true;\r\n\r\n\t\treturn this.avgPermissionsCookie.Analytics;\r\n\t}\r\n\r\n\tget AcceptedTrackingCookies() {\r\n\t\tif (this.avgPermissionsCookie === undefined) return false;\r\n\r\n\t\treturn this.avgPermissionsCookie.Tracking;\r\n\t}\r\n\r\n\tSetOrUpdatePermissionsCookie(functional, analytics, tracking) {\r\n\t\tthis.avgPermissionsCookie = {\r\n\t\t\tFunctional: functional,\r\n\t\t\tAnalytics: analytics,\r\n\t\t\tTracking: tracking\r\n\t\t};\r\n\r\n\t\twindow.dataLayer = window.dataLayer || [];\r\n\r\n\t\twindow.dataLayer.push({\r\n\t\t\t\"Analytics\": this.AcceptedAnalyticsCookies,\r\n\t\t\t\"Tracking\": this.AcceptedTrackingCookies,\r\n\t\t\t\"event\": \"ChangeCookieChoices\"\r\n\t\t});\r\n\r\n\t\tCookies.set('AVGPermissions', JSON.stringify(this.avgPermissionsCookie), {\r\n\t\t\texpires: 99999\r\n\t\t});\r\n\t\tthis.CheckOpen();\r\n\t}\r\n\r\n\tSetupButtonClicks() {\r\n\t\tif (document.querySelector('a.button.agreeCookies')) {\r\n\t\t\tdocument.querySelector('a.button.agreeCookies').addEventListener('click', this.AgreeCookies.bind(this));\r\n\t\t\tif (document.querySelector('form#cookieConfigure') !== null) {\r\n\t\t\t\tdocument.querySelector('form#cookieConfigure').addEventListener('submit', (event) => {\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\tthis.SavePreferences();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (document.querySelector('#cookieBar a.goConfigure')) {\r\n\t\t\tconst configureButton = document.querySelector('#cookieBar a.goConfigure');\r\n\r\n\t\t\tconfigureButton.addEventListener('mouseenter', () => this.LoadConfigurationForm());\r\n\t\t\tconfigureButton.addEventListener('click', e => {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.OpenConfigurationModal()\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tLoadAVGScripts() {\r\n\t\tdocument.querySelectorAll('noscript[data-gtm-tag]').forEach(noscript => {\r\n\t\t\tthis.LoadGoogleTagManager(noscript.dataset.gtmTag);\r\n\t\t});\r\n\t}\r\n\r\n\tLoadGoogleTagManager(gtmcode) {\r\n\t\t(function (w, d, s, l, i) {\r\n\t\t\tw[l] = w[l] || [];\r\n\t\t\tw[l].push({\r\n\t\t\t\t'gtm.start': new Date().getTime(),\r\n\t\t\t\tevent: 'gtm.js'\r\n\t\t\t});\r\n\t\t\tvar f = d.getElementsByTagName(s)[0],\r\n\t\t\t\tj = d.createElement(s),\r\n\t\t\t\tdl = l != 'dataLayer' ? '&l=' + l : '';\r\n\t\t\tj.async = true;\r\n\t\t\tj.src =\r\n\t\t\t\t'https://www.googletagmanager.com/gtm.js?id=' + i + dl;\r\n\t\t\tf.parentNode.insertBefore(j, f);\r\n\t\t})\r\n\t\t(window, document, 'script', 'dataLayer', gtmcode);\r\n\t}\r\n\r\n\tAgreeCookies() {\r\n\t\tthis.SetOrUpdatePermissionsCookie(true, true, true);\r\n\t}\r\n\r\n\tCheckOpen() {\r\n\t\tif (this.cookieBar != null) {\r\n\t\t\tif (this.avgPermissionsCookie === undefined) {\r\n\t\t\t\tif (document.querySelector('#cookieBar a.button.goConfigure').href !== document.location.toString()) {\r\n\t\t\t\t\tthis.cookieBar.classList.add('open');\r\n\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\tthis.LoadConfigurationForm();\r\n\t\t\t\t\t}, 500);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.cookieBar.classList.remove('open');\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tSavePreferences() {\r\n\t\tthis.SetOrUpdatePermissionsCookie(document.getElementById(\"Functional\").checked, document.getElementById(\"Analytics\").checked, document.getElementById(\"Tracking\").checked);\r\n\t\tlet saveConfirmation = document.querySelector('form#cookieConfigure .onSaveComplete');\r\n\t\tif (saveConfirmation !== null) {\r\n\t\t\tsaveConfirmation.classList.add('success');\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\tsaveConfirmation.classList.remove('success');\r\n\t\t\t}, 1500);\r\n\t\t}\r\n\t}\r\n\r\n\tLoadConfigurationForm() {\r\n\t\tif (this.ConfigPromise) {\r\n\t\t\treturn this.ConfigPromise;\r\n\t\t}\r\n\r\n\t\tconst target = document.querySelector('#cookieBar a.goConfigure').href;\r\n\r\n\t\tthis.ConfigPromise = fetch(target).then(response => {\r\n\t\t\treturn response.text();\r\n\t\t}).then(html => {\r\n\t\t\tconst parser = new DOMParser();\r\n\t\t\tconst DOM = parser.parseFromString(html, 'text/html');\r\n\r\n\t\t\tif (DOM.querySelector('header .image img')) {\r\n\t\t\t\treturn new Promise(resolve => {\r\n\t\t\t\t\tlet tempImg = new Image();\r\n\t\t\t\t\ttempImg.onload = resolve.bind(this, DOM);\r\n\t\t\t\t\ttempImg.onerror = resolve.bind(this, DOM);\r\n\t\t\t\t\ttempImg.src = DOM.querySelector('header .image img').src;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (DOM.querySelector('form#cookieConfigure')) {\r\n\t\t\t\treturn DOM.querySelector('form#cookieConfigure');\r\n\t\t\t} else {\r\n\t\t\t\tthrow new Error('Configuration form not found');\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn this.ConfigPromise;\r\n\t}\r\n\r\n\tOpenConfigurationModal() {\r\n\t\tthis.LoadConfigurationForm().then(form => {\r\n\t\t\tconst modal = document.createElement('div');\r\n\t\t\tmodal.id = \"cookieModal\";\r\n\t\t\tmodal.innerHTML = `
\r\n\t\t\t\t
\r\n\t\t\t\t\t

Cookie instellingen

\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t

Hier kan in principe heel veel tekst staan omdat je nu aaaaalle ruimte hebt die je maar zou willen. Dit omdat het een modal is

\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
`;\r\n\t\t\tmodal.querySelector('.formColumn').appendChild(form);\r\n\r\n\t\t\tform.addEventListener('submit', event => {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\tthis.SavePreferences();\r\n\t\t\t\tthis.closeConfigurationModal();\r\n\t\t\t});\r\n\r\n\t\t\tconst closePopup = () => {\r\n\t\t\t\tif (document.querySelector('#cookieModal')) {\r\n\t\t\t\t\tdocument.querySelector('#cookieModal').remove();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\twindow.addEventListener('keydown', e => {\r\n\t\t\t\tif (e.key.toLowerCase().substr(0, 3) == 'esc') {\r\n\t\t\t\t\tclosePopup();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tmodal.querySelector('.closeModal').addEventListener('click', e => {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tclosePopup();\r\n\t\t\t});\r\n\r\n\t\t\tmodal.addEventListener('click', e => {\r\n\t\t\t\tif (e.target.contains(modal.querySelector('.modal'))) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tclosePopup();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (document.querySelector('main')) {\r\n\t\t\t\tdocument.querySelector('main').appendChild(modal);\r\n\t\t\t} else {\r\n\t\t\t\tdocument.body.appendChild(modal);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tcloseConfigurationModal() {\r\n\t\tconst modal = document.getElementById('cookieModal');\r\n\t\tif (modal) {\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tif (modal) {\r\n\t\t\t\t\tmodal.classList.add('closing');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tif (modal && modal.parentElement) {\r\n\t\t\t\t\t\tmodal.parentElement.removeChild(modal);\r\n\t\t\t\t\t}\r\n\t\t\t\t}, 500);\r\n\t\t\t}, 1000);\r\n\t\t}\r\n\t}\r\n}","import HeaderSearchController from './headerSearch';\r\n\r\nexport default class HeaderController {\r\n\tconstructor() {\r\n\t\tthis.headerElement = null;\r\n\t\tthis.menuButton = null;\r\n\r\n\t\tthis.previousScroll = 0;\r\n\t\tthis.scrollCounter = 0;\r\n\t\tthis.threshold = 500;\r\n\r\n\t\tthis.init();\r\n\t\tthis.resize();\r\n\r\n\t\tthis.headerSearchController = new HeaderSearchController();\r\n\t}\r\n\r\n\tinit() {\r\n\t\tthis.headerElement = document.querySelector('header');\r\n\t\tthis.menuButton = this.headerElement.querySelector('.menuButton');\r\n\t\tthis.previousScroll = window.pageYOffset;\r\n\r\n\t\t// Register events\r\n\t\twindow.app.registerResizeEvent(this.resize.bind(this));\r\n\t\twindow.app.registerScrollEvent(this.scroll.bind(this));\r\n\r\n\t\t// Click events\r\n\t\tthis.menuButton.addEventListener('click', this.toggleMenu.bind(this));\r\n\t}\r\n\r\n\ttoggleMenu() {\r\n\t\tthis.headerElement.classList.toggle('mobileMenuActive');\r\n\t}\r\n\r\n\tresize() {\r\n\t\tthis.previousScroll = window.pageYOffset;\r\n\t\tthis.threshold = this.headerElement.clientHeight;\r\n\r\n\t\tthis.scroll();\r\n\t}\r\n\r\n\tscroll() {\r\n\t\t// First, decide if it's up or down\r\n\t\tif (this.previousScroll > window.pageYOffset) {\r\n\t\t\t// Up\r\n\t\t\tif (this.scrollCounter > 0) {\r\n\t\t\t\tthis.scrollCounter = 0;\r\n\t\t\t}\r\n\r\n\t\t\tthis.scrollCounter += window.pageYOffset - this.previousScroll;\r\n\t\t} else if (this.previousScroll < window.pageYOffset) {\r\n\t\t\t// Down\r\n\t\t\tif (this.scrollCounter < 0) {\r\n\t\t\t\tthis.scrollCounter = 0;\r\n\t\t\t}\r\n\r\n\t\t\tthis.scrollCounter += window.pageYOffset - this.previousScroll;\r\n\t\t}\r\n\r\n\t\tif (window.pageYOffset < this.threshold) {\r\n\t\t\tthis.show();\r\n\t\t} else {\r\n\t\t\tif (this.scrollCounter > this.threshold) {\r\n\t\t\t\tthis.hide();\r\n\t\t\t}\r\n\t\r\n\t\t\tif (this.scrollCounter < this.threshold * -1) {\r\n\t\t\t\tthis.show();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.previousScroll = window.pageYOffset;\r\n\t}\r\n\r\n\thide() {\r\n\t\tthis.headerElement.classList.add('hidden');\r\n\t}\r\n\r\n\tshow() {\r\n\t\tthis.headerElement.classList.remove('hidden');\r\n\t}\r\n}","import SearchSuggestion from './../elements/searchSuggestion';\r\nimport delegate from 'delegate';\r\nimport Mark from 'mark.js';\r\n\r\nexport default class HeaderSearchController {\r\n constructor() {\r\n this.form = null;\r\n this.formInput = null;\r\n this.searchResultsContainer = null;\r\n\r\n this.apiEndpoint = '/umbraco/api/search/GetSuggestions?filter=';\r\n\r\n this.abortController = null; // Will contain an AbortController when making a new API call\r\n this.waiterTime = 250; // Time in MS to wait with making a new API call\r\n this.changeWaiter = null; // Clearable timeout handler\r\n this.minInput = 4; // Minimal amount of characters before a search is triggered\r\n\r\n this.originalSearchSuggestions = [];\r\n this.originalSearchTitle = '';\r\n\r\n this.mark = null;\r\n\r\n if (document.querySelector('form.headerSearchForm')) {\r\n this.init();\r\n }\r\n }\r\n\r\n init() {\r\n this.form = document.querySelector('form.headerSearchForm');\r\n this.formInput = this.form.querySelector('input[name=\"q\"]');\r\n this.searchResultsContainer = document.querySelector('section.headerSearch');\r\n this.mark = new Mark(this.searchResultsContainer.querySelector('ul'));\r\n \r\n if ('AbortController' in window) {\r\n this.abortController = new AbortController();\r\n }\r\n\r\n // Make a copy of the search suggestions for restore ability\r\n this.searchResultsContainer.querySelectorAll('ul li').forEach(li => this.originalSearchSuggestions.push(li.cloneNode(true)));\r\n\r\n // Copy original title\r\n this.originalSearchTitle = this.searchResultsContainer.querySelector('#searchResultsTitle').innerHTML;\r\n\r\n this.setEventListeners();\r\n }\r\n\r\n setEventListeners() {\r\n // Opening\r\n this.formInput.addEventListener('focus', this.showSearchResults.bind(this));\r\n this.formInput.addEventListener('click', this.showSearchResults.bind(this));\r\n if (document.querySelector('body > header .searchButton')) {\r\n document.querySelector('body > header .searchButton').addEventListener('click', () => {\r\n if (document.querySelector('body > header').classList.contains('searchActive')) {\r\n this.hideSearchResults();\r\n } else {\r\n this.showSearchResults();\r\n this.formInput.focus();\r\n }\r\n });\r\n }\r\n\r\n // Changing\r\n this.formInput.addEventListener('input', this.handleInputChange.bind(this));\r\n\r\n // Submitting\r\n this.searchResultsContainer.querySelector('a.fullSearch').addEventListener('click', () => this.form.submit());\r\n this.form.addEventListener('submit', e => {\r\n if (!this.formInput.value.trim()) {\r\n e.preventDefault();\r\n this.formInput.focus();\r\n return false;\r\n }\r\n return true;\r\n });\r\n\r\n // Resetting\r\n this.form.addEventListener('reset', e => {\r\n this.resetResults();\r\n this.formInput.focus();\r\n });\r\n\r\n // Closing\r\n if (this.searchResultsContainer.querySelector('.closeButton')) {\r\n this.searchResultsContainer.querySelector('.closeButton').addEventListener('click', e => {\r\n this.hideSearchResults();\r\n this.formInput.blur();\r\n });\r\n }\r\n\r\n document.addEventListener('keydown', e => {\r\n\t\t\tif (e.key.toLowerCase().substr(0, 3) == 'esc') {\r\n this.hideSearchResults();\r\n this.formInput.blur();\r\n }\r\n });\r\n\r\n // Others\r\n const focusButton = this.form.querySelector('button.focus');\r\n if (focusButton) {\r\n focusButton.addEventListener('click', () => this.formInput.focus());\r\n }\r\n\r\n const clearButton = this.form.querySelector('button[type=\"reset\"]');\r\n if (clearButton) {\r\n clearButton.addEventListener('click', () => {\r\n this.resetResults();\r\n this.formInput.focus();\r\n\r\n if (focusButton) {\r\n clearButton.setAttribute('disabled', 'disabled');\r\n focusButton.removeAttribute('disabled');\r\n }\r\n });\r\n }\r\n\r\n this.formInput.addEventListener('keydown', e => {\r\n if (e.key.toLowerCase() == 'arrowdown') {\r\n e.preventDefault();\r\n this.searchResultsContainer.querySelector('ul li a').focus();\r\n }\r\n });\r\n\r\n delegate('section.headerSearch ul li a', 'keydown', e => {\r\n if (e.key.toLowerCase() == 'arrowup') {\r\n e.preventDefault();\r\n this.arrowUp(e.delegateTarget.parentNode);\r\n } else if (e.key.toLowerCase() == 'arrowdown') {\r\n e.preventDefault();\r\n this.arrowDown(e.delegateTarget.parentNode);\r\n }\r\n });\r\n\r\n delegate('section.headerSearch a.fullSearch', 'keydown', e => {\r\n if (e.key.toLowerCase() == 'arrowup') {\r\n e.preventDefault();\r\n this.arrowUp(e.delegateTarget);\r\n } else if (e.key.toLowerCase() == 'arrowdown') {\r\n e.preventDefault();\r\n this.arrowDown(e.delegateTarget);\r\n }\r\n });\r\n\r\n // Searchpage specific\r\n if (document.body.classList.contains('searchpage')) {\r\n if (document.querySelector('main .searchAgain')) {\r\n document.querySelector('main .searchAgain').addEventListener('click', e => {\r\n this.showSearchResults();\r\n this.formInput.focus();\r\n });\r\n document.querySelector('main .searchAgain').classList.remove('hidden');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @param {HTMLElement} li \r\n */\r\n arrowDown(el) {\r\n if (el.nextElementSibling && el.nextElementSibling.querySelector('a')) {\r\n el.nextElementSibling.querySelector('a').focus();\r\n } else if (!this.searchResultsContainer.querySelector('a.fullSearch').classList.contains('inactive')) {\r\n this.searchResultsContainer.querySelector('a.fullSearch').focus();\r\n } else if (el == this.searchResultsContainer.querySelector('a.fullSearch')) {\r\n this.formInput.focus();\r\n }\r\n }\r\n\r\n /**\r\n * @param {HTMLElement} li \r\n */\r\n arrowUp(el) {\r\n if (el.previousElementSibling && el.previousElementSibling.querySelector('a')) {\r\n el.previousElementSibling.querySelector('a').focus();\r\n } else if (el == this.formInput && !this.searchResultsContainer.querySelector('a.fullSearch').classList.contains('inactive')) {\r\n this.searchResultsContainer.querySelector('a.fullSearch').focus();\r\n } else if (el == this.searchResultsContainer.querySelector('a.fullSearch')) {\r\n this.searchResultsContainer.querySelector('ul li:last-of-type a').focus();\r\n } else {\r\n this.formInput.focus();\r\n }\r\n }\r\n\r\n handleInputChange() {\r\n let query = this.formInput.value.trim();\r\n const clearButton = this.form.querySelector('button[type=\"reset\"]');\r\n const focusButton = this.form.querySelector('button.focus');\r\n\r\n if (query && query.length >= this.minInput) {\r\n // Update status button to show\r\n this.updateResults(query);\r\n focusButton.setAttribute('disabled', 'disabled');\r\n clearButton.removeAttribute('disabled');\r\n } else if (query) {\r\n // User entered less than 3 characters\r\n focusButton.setAttribute('disabled', 'disabled');\r\n clearButton.removeAttribute('disabled');\r\n } else {\r\n focusButton.removeAttribute('disabled');\r\n clearButton.setAttribute('disabled', 'disabled');\r\n this.resetResults();\r\n }\r\n }\r\n\r\n showSearchResults() {\r\n document.querySelector('body > header').classList.add('searchActive');\r\n this.searchResultsContainer.classList.add('active');\r\n\r\n this.searchResultsContainer.setAttribute('aria-expanded', true);\r\n this.searchResultsContainer.setAttribute('aria-hidden', false);\r\n\r\n document.documentElement.classList.add('disableScroll');\r\n\r\n // Enable tabbing on all items\r\n this.searchResultsContainer.querySelectorAll('a, button, input').forEach(clickable => {\r\n clickable.setAttribute('tabindex', '0');\r\n clickable.setAttribute('aria-hidden', 'false');\r\n });\r\n }\r\n\r\n hideSearchResults() {\r\n document.querySelector('body > header').classList.remove('searchActive');\r\n this.searchResultsContainer.classList.remove('active');\r\n\r\n this.searchResultsContainer.setAttribute('aria-expanded', false);\r\n this.searchResultsContainer.setAttribute('aria-hidden', true);\r\n\r\n document.documentElement.classList.remove('disableScroll');\r\n\r\n setTimeout(() => {\r\n if (!this.searchResultsContainer.classList.contains('active')) {\r\n this.resetResults();\r\n }\r\n }, 400);\r\n\r\n // Disable tabbing on all items\r\n this.searchResultsContainer.querySelectorAll('a, button, input').forEach(clickable => {\r\n clickable.setAttribute('tabindex', '-1');\r\n clickable.setAttribute('aria-hidden', 'true');\r\n });\r\n }\r\n\r\n updateResults(query) {\r\n // Reset waiter to prevent unnessecary calls\r\n if (this.changeWaiter !== null) {\r\n clearTimeout(this.changeWaiter);\r\n }\r\n\r\n this.changeWaiter = setTimeout(() => {\r\n this.searchResultsContainer.querySelector('ul').classList.add('loading');\r\n\r\n // If there's a call going on, abort it and create a new abortcontroller to reuse\r\n if ('AbortController' in window && this.abortController) {\r\n this.abortController.abort();\r\n this.abortController = new AbortController();\r\n }\r\n\r\n // Fetch new results\r\n this.fetchResults(query).then(data => {\r\n this.insertSearchSuggestions(data, query);\r\n }).catch(e => {\r\n console.error(e);\r\n }).finally(() => {\r\n this.searchResultsContainer.querySelector('ul').classList.remove('loading');\r\n });\r\n \r\n this.changeWaiter = null;\r\n }, this.waiterTime);\r\n }\r\n\r\n insertSearchSuggestions(data, query = null) {\r\n // Data should be an array containing nothing but keywords. So create listitems that will search for that\r\n let suggestions = [];\r\n if (data.Suggestions) {\r\n data.Suggestions.forEach(item => {\r\n let suggestion = new SearchSuggestion({\r\n name: item.Title,\r\n url: item.Url\r\n });\r\n \r\n suggestions.push(suggestion.generate());\r\n });\r\n } \r\n\r\n // Clear current suggestion list\r\n this.searchResultsContainer.querySelector('ul').innerHTML = '';\r\n \r\n // Insert the newly made suggestions\r\n suggestions.forEach(suggestion => this.searchResultsContainer.querySelector('ul').appendChild(suggestion));\r\n\r\n // Highlight text matching with query\r\n if (query) {\r\n this.mark.mark(query);\r\n }\r\n\r\n // Hide title\r\n this.searchResultsContainer.querySelector('.status').classList.add('d-none');\r\n\r\n // Update fullSearch button\r\n if (data.TotalResults) {\r\n this.searchResultsContainer.querySelector('a.fullSearch').classList.remove('inactive');\r\n\r\n if (data.TotalResults > 1) {\r\n this.searchResultsContainer.querySelector('a.fullSearch span').innerHTML = `Bekijk alle ${data.TotalResults} resultaten`;\r\n } else {\r\n this.searchResultsContainer.querySelector('a.fullSearch span').innerHTML = `Bekijk resultaat`;\r\n }\r\n } else {\r\n this.searchResultsContainer.querySelector('a.fullSearch').classList.add('inactive');\r\n this.searchResultsContainer.querySelector('.status').classList.remove('d-none');\r\n }\r\n\r\n // Update button text\r\n if (data.TotalResults > 1) {\r\n this.searchResultsContainer.querySelector('a.fullSearch span').innerHTML = `Bekijk alle ${data.TotalResults} resultaten`;\r\n } else {\r\n this.searchResultsContainer.querySelector('a.fullSearch span').innerHTML = `Bekijk alle resultaten`;\r\n }\r\n\r\n // Update title\r\n this.searchResultsContainer.querySelector('#searchResultsTitle').innerHTML = `${data.TotalResults == 0 ? 'Geen' : data.TotalResults} ${data.TotalResults == 1 ? 'resultaat' : 'resultaten'} gevonden`;\r\n }\r\n\r\n resetResults() {\r\n // Cancel any ongoing call\r\n if ('AbortController' in window && this.abortController) {\r\n this.abortController.abort();\r\n this.abortController = new AbortController();\r\n }\r\n\r\n // Clear input\r\n this.formInput.value = '';\r\n\r\n // Clear suggestion list\r\n this.searchResultsContainer.querySelector('ul').innerHTML = '';\r\n \r\n // Insert backed up suggestions and title\r\n this.originalSearchSuggestions.forEach(suggestion => this.searchResultsContainer.querySelector('ul').appendChild(suggestion));\r\n this.searchResultsContainer.querySelector('#searchResultsTitle').innerHTML = this.originalSearchTitle;\r\n this.searchResultsContainer.querySelector('.status').classList.remove('d-none');\r\n this.searchResultsContainer.querySelector('ul').classList.remove('loading');\r\n this.searchResultsContainer.querySelector('a.fullSearch').classList.add('inactive');\r\n }\r\n\r\n fetchResults(query) {\r\n let options = {};\r\n if ('AbortController' in window && this.abortController) {\r\n options.signal = this.abortController.signal;\r\n }\r\n\r\n return fetch(`${this.apiEndpoint}${encodeURIComponent(query)}`, options).then(response => {\r\n return response.json();\r\n });\r\n }\r\n\r\n newPage() {\r\n this.form = null;\r\n this.formInput = null;\r\n this.searchResultsContainer = null;\r\n\r\n this.abortController = null; // Will contain an AbortController when making a new API call\r\n this.changeWaiter = null; // Clearable timeout handler\r\n\r\n this.originalSearchSuggestions = [];\r\n this.originalSearchTitle = '';\r\n\r\n this.mark = null;\r\n\r\n if (document.querySelector('form.headerSearchForm')) {\r\n this.init();\r\n }\r\n }\r\n}","import Cookies from 'js-cookie';\r\n\r\nexport default class MediaController {\r\n\tconstructor(autoinit = true) {\r\n\t\tif (autoinit) {\r\n\t\t\tthis.init();\r\n\t\t}\r\n\t}\r\n\r\n\tinit() {\r\n\t\tvar youtube = false;\r\n\t\tvar vimeo = false;\r\n\t\tdocument.querySelectorAll('noscript').forEach(media => {\r\n\t\t\tswitch (media.dataset.mediatype) {\r\n\t\t\t\tcase 'youtube':\r\n\t\t\t\t\tthis.youtube(media);\r\n\t\t\t\t\tyoutube = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'vimeo':\r\n\t\t\t\t\tthis.vimeo(media);\r\n\t\t\t\t\tvimeo = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (window.app.AVGController.AcceptedTrackingCookies) {\r\n\t\t\tif (youtube) {\r\n\t\t\t\tvar tag = document.createElement('script');\r\n\t\t\t\ttag.src = \"//www.youtube.com/player_api\";\r\n\t\t\t\tvar firstScriptTag = document.getElementsByTagName('script')[0];\r\n\t\t\t\tfirstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\r\n\r\n\t\t\t\twindow.onYouTubeIframeAPIReady = this.YouTubeAPILoaded.bind(this);\r\n\t\t\t}\r\n\r\n\t\t\tif (vimeo) {\r\n\t\t\t\timport( /* webpackChunkName: \"modules/vimeo\" */ '@vimeo/player').then(module => {\r\n\t\t\t\t\tconst Player = module.default;\r\n\t\t\t\t\tdocument.querySelectorAll('iframe.vimeo').forEach(iframe => {\r\n\t\t\t\t\t\tvar player = new Player(iframe);\r\n\r\n\t\t\t\t\t\tiframe.parentNode.querySelector('div.videoPoster a').addEventListener('click', (click) => {\r\n\r\n\t\t\t\t\t\t\tif (!click.currentTarget.closest('[data-lity]')) {\r\n\t\t\t\t\t\t\t\tlet videoPoster = click.currentTarget.closest('div.videoPoster');\r\n\t\t\t\t\t\t\t\tvideoPoster.remove();\r\n\t\t\t\t\t\t\t\tplayer.play().catch(error => {\r\n\t\t\t\t\t\t\t\t\tconsole.log('Failed playing');\r\n\t\t\t\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\t\t\t\tplayer.play().catch(e => {\r\n\t\t\t\t\t\t\t\t\t\t\tconsole.error(e);\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t}, 500);\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}, true);\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tYouTubeAPILoaded() {\r\n\t\tdocument.querySelectorAll('iframe.youtube').forEach(iframe => {\r\n\t\t\tnew YT.Player(iframe.id, {\r\n\t\t\t\tevents: {\r\n\t\t\t\t\t'onReady': function(event){\r\n\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\tiframe.parentNode.querySelector('div.videoPoster a').addEventListener('click', (click) => {\r\n\t\t\t\t\r\n\t\t\t\t\t\t\t\tif (!iframe.closest('[data-lity]')) {\r\n\t\t\t\t\t\t\t\t\tclick.currentTarget.closest('div.videoPoster').remove();\r\n\t\t\t\t\t\t\t\t\tevent.target.playVideo();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t\t\t\t}, true);\r\n\t\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\t\tconsole.error(e);\r\n\t\t\t\t\t\t\tconsole.log(event);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t})\r\n\t}\r\n\r\n\r\n\tembedIframe(url, type, id, imgtag) {\r\n\t\t// External sites use tracking, so the tracking cookie needs to be enabled\r\n\t\tif (window.app.AVGController.AcceptedTrackingCookies) {\r\n\t\t\treturn `\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t${imgtag}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
`;\r\n\t\t} else {\r\n\t\t\treturn `\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t

Deze video heeft cookies nodig

\r\n\t\t\t\t\t

U heeft aangegeven liever geen cookies van YouTube of Vimeo te krijgen. Deze cookies zijn nodig om deze video te tonen.

\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t`;\r\n\t\t}\r\n\t}\r\n\r\n\tyoutube(media) {\r\n\t\tconst url = `https://www.youtube-nocookie.com/embed/${media.dataset.youtube}?wmode=opaque&rel=0&enablejsapi=1&origin=${window.location.protocol}//${window.location.hostname}`;\r\n\r\n\t\tlet sourceRegex = /src='(.*?)'/;\r\n\t\tlet imgsrc = media.innerHTML.match(sourceRegex);\r\n\t\tlet imgElement = new Image();\r\n\t\timgElement.src = imgsrc[1];\r\n\t\timgElement.setAttribute('alt', 'Thumbnail van de video');\r\n\r\n\t\tconst embed = this.embedIframe(url, \"youtube\", media.dataset.youtube, imgElement.outerHTML);\r\n\r\n\t\tlet tempDiv = document.createElement('div');\r\n\t\ttempDiv.innerHTML = embed;\r\n\r\n\t\tmedia.before(tempDiv.firstElementChild);\r\n\t\tmedia.remove();\r\n\t}\r\n\r\n\tvimeo(media) {\r\n\t\tconst url = `https://player.vimeo.com/video/${media.dataset.vimeo}?title=0&byline=0&portrait=0&api=1`;\r\n\t\tlet sourceRegex = /src='(.*?)'/;\r\n\t\tlet imgsrc = media.innerHTML.match(sourceRegex);\r\n\t\tlet imgElement = new Image();\r\n\t\timgElement.src = imgsrc[1];\r\n\t\timgElement.setAttribute('alt', 'Thumbnail van de video');\r\n\r\n\r\n\t\tconst embed = this.embedIframe(url, \"vimeo\", media.dataset.vimeo, imgElement.outerHTML);\r\n\r\n\t\tlet tempDiv = document.createElement('div');\r\n\t\ttempDiv.innerHTML = embed;\r\n\r\n\t\tmedia.before(tempDiv.firstElementChild);\r\n\t\tmedia.remove();\r\n\t}\r\n\r\n}","export default class PolyfillController {\r\n constructor() {\r\n this.polyfills = [];\r\n this.loaded = [];\r\n }\r\n\r\n init() {\r\n this.loadPolyfills();\r\n\r\n return Promise.all(this.polyfills);\r\n }\r\n\r\n loadPolyfills() {\r\n this.forEach();\r\n this.intersectionObserver();\r\n this.fetch();\r\n this.abortController();\r\n this.proxy();\r\n this.closest();\r\n this.before();\r\n this.remove();\r\n this.entries();\r\n this.customEvent();\r\n }\r\n\r\n forEach() {\r\n if (window.NodeList && !NodeList.prototype.forEach) {\r\n NodeList.prototype.forEach = Array.prototype.forEach;\r\n this.loaded.push('forEach');\r\n }\r\n }\r\n\r\n intersectionObserver() {\r\n if (!('IntersectionObserver' in window)) {\r\n this.polyfills.push(import( /* webpackChunkName: \"polyfills/intersectionobserver\" */ 'intersection-observer'));\r\n this.loaded.push('intersectionObserver');\r\n }\r\n }\r\n\r\n fetch() {\r\n if (!window.fetch) {\r\n this.polyfills.push(import( /* webpackChunkName: \"polyfills/fetch\" */ 'whatwg-fetch'));\r\n this.loaded.push('fetch');\r\n }\r\n }\r\n\r\n abortController() {\r\n if (typeof AbortController == 'undefined') {\r\n this.polyfills.push(import( /* webpackChunkName: \"polyfills/abortController\" */ 'abortcontroller-polyfill/dist/polyfill-patch-fetch'));\r\n this.loaded.push('abortController');\r\n }\r\n }\r\n \r\n proxy() {\r\n if (!('Proxy' in window)) {\r\n this.polyfills.push(import( /* webpackChunkName: \"polyfills/proxy\" */ 'es6-proxy-polyfill'));\r\n this.loaded.push('proxy');\r\n }\r\n }\r\n\r\n closest() {\r\n if (!Element.prototype.matches) {\r\n Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\r\n this.loaded.push('matches');\r\n }\r\n\r\n if (!Element.prototype.closest) {\r\n Element.prototype.closest = function (s) {\r\n var el = this;\r\n do {\r\n if (el.matches(s)) return el;\r\n el = el.parentElement || el.parentNode;\r\n } while (el !== null && el.nodeType === 1);\r\n return null;\r\n };\r\n this.loaded.push('closest');\r\n }\r\n }\r\n\r\n before() {\r\n (arr => {\r\n arr.forEach(function (item) {\r\n if (item.hasOwnProperty('before')) {\r\n return;\r\n }\r\n Object.defineProperty(item, 'before', {\r\n configurable: true,\r\n enumerable: true,\r\n writable: true,\r\n value: function before() {\r\n var argArr = Array.prototype.slice.call(arguments),\r\n docFrag = document.createDocumentFragment();\r\n\r\n argArr.forEach(function (argItem) {\r\n var isNode = argItem instanceof Node;\r\n docFrag.appendChild(isNode ? argItem : document.createTextNode(String(argItem)));\r\n });\r\n\r\n this.parentNode.insertBefore(docFrag, this);\r\n }\r\n });\r\n });\r\n this.loaded.push('before');\r\n })([Element.prototype, CharacterData.prototype, DocumentType.prototype]);\r\n }\r\n\r\n remove() {\r\n (arr => {\r\n arr.forEach(function (item) {\r\n if (item.hasOwnProperty('remove')) {\r\n return;\r\n }\r\n Object.defineProperty(item, 'remove', {\r\n configurable: true,\r\n enumerable: true,\r\n writable: true,\r\n value: function remove() {\r\n if (this.parentNode === null) {\r\n return;\r\n }\r\n this.parentNode.removeChild(this);\r\n }\r\n });\r\n });\r\n this.loaded.push('remove');\r\n })([Element.prototype, CharacterData.prototype, DocumentType.prototype]);\r\n }\r\n\r\n entries() {\r\n if (!Object.entries) {\r\n Object.entries = function( obj ){\r\n var ownProps = Object.keys( obj ),\r\n i = ownProps.length,\r\n resArray = new Array(i); // preallocate the Array\r\n while (i--)\r\n resArray[i] = [ownProps[i], obj[ownProps[i]]];\r\n \r\n return resArray;\r\n };\r\n this.loaded.push('entries');\r\n }\r\n }\r\n\r\n customEvent() {\r\n if (typeof (Event) === 'object') {\r\n function CustomEvent(event, params) {\r\n params = params || {\r\n bubbles: false,\r\n cancelable: false,\r\n detail: undefined\r\n };\r\n let evt = document.createEvent('CustomEvent');\r\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\r\n return evt;\r\n }\r\n\r\n CustomEvent.prototype = window.Event.prototype;\r\n\r\n window.CustomEvent = CustomEvent;\r\n window.Event = CustomEvent;\r\n this.loaded.push('Custom Event');\r\n }\r\n }\r\n}\r\n","/**\r\n * Class representing an HTML element\r\n */\r\n export default class CustomHTMLElement {\r\n /**\r\n * Creates the CustomHTMLElement\r\n * @param {object} defaultProperties - List of default element properties\r\n */\r\n\tconstructor(defaultProperties = {}) {\r\n\t\tif (window.HTMLID === undefined) {\r\n\t\t\twindow.HTMLID = 0;\r\n\t\t}\r\n\t\twindow.HTMLID++;\r\n\t\tthis._id = '_' + window.HTMLID;\r\n\t\tthis._template = null;\r\n\t\tthis._html = null;\r\n\t\tthis._object = null;\r\n\r\n\t\tthis._properties = defaultProperties;\r\n\t}\r\n\r\n /**\r\n * Either returns a generated HTMLElement or creates a new one\r\n * @param {boolean} [forceCreate=false] - Forces a new HTMLElement to be created\r\n * @returns {HTMLElement}\r\n */\r\n\t getOrCreate(forceCreate = false) {\r\n\t\tif (this._template === null) {\r\n\t\t\tthrow new Error('No template was set');\r\n\t\t}\r\n\r\n\t\tif (this._object !== null && !forceCreate) {\r\n\t\t\treturn this._object;\r\n\t\t} else {\r\n\t\t\tlet containerElement = document.createElement('div');\r\n\t\t\tthis._html = this._template(this._properties);\r\n\t\t\tcontainerElement.innerHTML = this._html;\r\n\t\t\tthis._object = containerElement.firstChild;\r\n\r\n\t\t\treturn this._object;\r\n\t\t}\r\n\t}\r\n\r\n\tgenerate(forceRenew = false) {\r\n\t\treturn this.getOrCreate(forceRenew);\r\n\t}\r\n\r\n /**\r\n * Set properties for the element\r\n * @param {object} properties - List of properties that can be set on creating a new element\r\n */\r\n\tsetProperties(properties) {\r\n\t\tif (Object.keys(properties).length > 0) {\r\n\t\t\tObject.keys(properties).forEach(key => {\r\n\t\t\t\tif ((typeof this[`set${key.charAt(0).toUpperCase()}${key.substring(1)}`]) === 'function') {\r\n\t\t\t\t\tthis[`set${key.charAt(0).toUpperCase()}${key.substring(1)}`](properties[key]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._properties[key] = properties[key];\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n /**\r\n * Sets and returns one of the element's properties\r\n * @param {string} key - The property's name\r\n * @param {*} value - The property's value\r\n * @returns {*}\r\n */\r\n\t_property(key, value) {\r\n\t\tif (value === undefined) {\r\n\t\t\treturn this._properties[key];\r\n\t\t} else {\r\n\t\t\tthis._properties[key] = value;\r\n\t\t\treturn this._properties[key];\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Creates getters and setters for all available properties\r\n\t */\r\n\t _createPropertyMethods() {\r\n\t\tObject.keys(this._properties).forEach(propertyKey => {\r\n\t\t\tlet setKeyMethodName = `set${propertyKey.charAt(0).toUpperCase()}${propertyKey.substring(1)}`;\r\n\r\n\t\t\t// Creates the set{Keyname} property. This one should do some basic type verification to make sure a string stays a string etc.\r\n\t\t\tObject.defineProperty(this, setKeyMethodName, {\r\n\t\t\t\tvalue: (givenValue = this._property(propertyKey)) => {\r\n\t\t\t\t\treturn this._property(propertyKey, this._ensureType(givenValue, typeof this._property(propertyKey)));\r\n\t\t\t\t},\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t});\r\n\r\n\t\t\t// Normal getter and setter. Setter passes the value to the set{Keyname} method\r\n\t\t\tObject.defineProperty(this, propertyKey, {\r\n\t\t\t\tget: () => this._property(propertyKey),\r\n\t\t\t\tset: (givenValue = this._property(propertyKey)) => {\r\n\t\t\t\t\treturn this[setKeyMethodName](givenValue);\r\n\t\t\t\t},\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tconfigurable: true\r\n\t\t\t})\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Ensures the property's primitive type stays the same when updating it. Strings stay strings, numbers stay numbers etc.\r\n\t * @param {*} value The value as received from the setter\r\n\t * @param {String} type The primitive the value's supposed to be\r\n\t * @returns {*} The value, possibly converted to the original's primitve\r\n\t */\r\n\t_ensureType(value, type) {\r\n\t\tswitch (type) {\r\n\t\t\tcase 'string':\r\n\t\t\t\treturn (value ? `${value}` : '');\r\n\t\t\tcase 'number':\r\n\t\t\t\treturn (isNaN(parseInt(value)) ? 0 : parseInt(value));\r\n\t\t\tcase 'boolean':\r\n\t\t\t\treturn (value.toString().toLowerCase() == 'true');\r\n\t\t\tdefault:\r\n\t\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n}","import CustomHTMLElement from './customHTMLElement';\r\n\r\nexport default class SearchSuggestion extends CustomHTMLElement {\r\n /**\r\n * @param {Object} [properties] \r\n * @param {String} [properties.url]\r\n * @param {String} [properties.name]\r\n */\r\n\tconstructor(properties = {}) {\r\n\t\tsuper({\r\n url: '',\r\n name: '',\r\n\t\t});\r\n\t\tthis.setProperties(properties);\r\n this._createPropertyMethods();\r\n\r\n\t\tthis._template = require('./templates/searchSuggestion.handlebars');\r\n }\r\n}","/**\r\n * @preserve Slimmage 0.4.1, use with ImageResizer. MIT/Apache2 dual licensed by Imazen \r\n */\r\n\r\n/* We often use string instead of dot notation to keep \r\n Closure Compiler's advanced mode from breaking APIs */\r\n/*jshint sub:true*/\r\n\r\n(function (w) { //w==window\r\n\t// Enable strict mode\r\n\t\"use strict\";\r\n\r\n\tvar s = window['slimmage'] || {};\r\n\twindow['slimmage'] = s;\r\n\tif (s['verbose'] === undefined) { s['verbose'] = false; }\r\n\tif (s['tryWebP'] === undefined) { s['tryWebP'] = false; }\r\n\tif (s['maxWidth'] === undefined) { s['maxWidth'] = 2048; }\r\n\tif (s['widthStep'] === undefined) { s['widthStep'] = 160; }\r\n\tif (s['jpegQuality'] === undefined) { s['jpegQuality'] = 90; }\r\n\tif (s['jpegRetinaQuality'] === undefined) { s['jpegRetinaQuality'] = 80; }\r\n\tif (s['webpTimeout'] === undefined) { s['webpTimeout'] = 0; }\r\n\ts['changed'] = [];\r\n\r\n\tvar log = function () { if (s['verbose'] && w.console && w.console.log) try { w.console.log.apply(w.console, arguments); } catch (e) { } };\r\n\ts.beginWebPTest = function () {\r\n\t\tif (!s['tryWebP'] || s._testingWebP) return;\r\n\t\ts._testingWebP = true;\r\n\r\n\t\tvar WebP = new Image();\r\n\t\tWebP.onload = WebP.onerror = function () {\r\n\t\t\ts['webp'] = (WebP.height == 2);\r\n\t\t\ts._testingWebP = false;\r\n\t\t\tif (s.cr) { s.cr(); }\r\n\t\t};\r\n\t\tWebP.src = 'data:image/webp;base64,UklGRjoAAABXRUJQVlA4IC4AAACyAgCdASoCAAIALmk0mk0iIiIiIgBoSygABc6WWgAA/veff/0PP8bA//LwYAAA';\r\n\t};\r\n\t//test for webp support ASAP\r\n\ts.beginWebPTest();\r\n\r\n\ts.setAttr = function (elem, name, value) {\r\n\t\tname = name.toLowerCase();\r\n\t\tif (name == \"class\") { elem.className = value; }\r\n\t\telse if (name == \"tabindex\") { elem.tabIndex = value; }\r\n\t\telse if (name == \"usemap\") { elem.useMap = value; }\r\n\t\telse {\r\n\t\t\telem.setAttribute(name, value);\r\n\t\t}\r\n\r\n\t};\r\n\ts['setAttribute'] = s.setAttr;\r\n\r\n\ts.is_blank = function (v) { return v === \"none\" || v === null || v === undefined || v === \"\" || v === false; };\r\n\ts['getCssValue'] = function (target, hyphenProp) {\r\n\t\t//See http://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser\r\n\r\n\t\tvar val = typeof (window.getComputedStyle) != \"undefined\" && window.getComputedStyle(target, null).getPropertyValue(hyphenProp);\r\n\r\n\t\t// Some browsers (IE8, Firefox 28) read \"none\" when not set. Others (IE6) respond with undefined. A value of\r\n\t\t// \"none\" is invalid and would cause an exception or be interpreted as \r\n\t\tif (!s.is_blank(val)) {\r\n\t\t\treturn val;\r\n\t\t}\r\n\r\n\t\tif (target.currentStyle) {\r\n\t\t\tval = target.currentStyle[hyphenProp.replace(/([a-z])\\-([a-z])/, function (a, b, c) { return b + c.toUpperCase(); })] || target.currentStyle[hyphenProp];\r\n\t\t}\r\n\r\n\t\treturn s.is_blank(val) ? null : val;\r\n\t};\r\n\r\n\ts['getCssPixels'] = function (target, hyphenProp) {\r\n\t\tvar val = s['getCssValue'](target, hyphenProp);\r\n\r\n\t\tif (val === null || val === \"0\" || val === 0) return val;\r\n\r\n\t\t//We can return pixels directly, but not other units\r\n\t\tif (val.slice(-2) == \"px\") return parseFloat(val.slice(0, -2));\r\n\r\n\t\t//Create a temporary sibling div to resolve units into pixels.\r\n\t\tvar temp = document.createElement(\"div\");\r\n\t\ttemp.style.overflow = temp.style.visibility = \"hidden\";\r\n\t\ttemp.style.cssFloat = \"none\";\r\n\t\ttarget.parentNode.appendChild(temp);\r\n\t\ttemp.style.width = val;\r\n\t\tvar pixels = temp.offsetWidth;\r\n\t\ttarget.parentNode.removeChild(temp);\r\n\t\treturn pixels;\r\n\t};\r\n\r\n\ts.nodesToArray = function (nodeList) {\r\n\t\tvar array = [];\r\n\t\t// iterate backwards ensuring that length is an UInt32\r\n\t\tfor (var i = nodeList.length >>> 0; i--;) {\r\n\t\t\tarray[i] = nodeList[i];\r\n\t\t}\r\n\t\treturn array;\r\n\t};\r\n\r\n /*\r\n No URI decoding/encoding is perfomed on keys or values. Caller's responsibility.\r\n\r\n vistor and mutator are applied to string.replace -> https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_function_as_a_parameter\r\n params:\r\n 1. entire pair, incl. (optional) & and = \r\n 2. '&' (if present)\r\n 3. key\r\n 4. value\r\n\r\n mutator's result is honored. Must return param 1, or provide valid replacement.\r\n \r\n injector(query) is responsible for adding additional pairs if required. \r\n It must not produce a malformatted query.\r\n */\r\n\ts['mutateUrl'] = function (url, visitor, mutator, injector) {\r\n\t\tvar m = /^([^?#]*)?(\\?([^#]*))?(#.*)?/.exec(url);\r\n\t\tvar q = m[3] || '';\r\n\r\n\t\tvar qr = /(^&*|&+)([^&=]*)=?([^&]*)/g;\r\n\t\tq.replace(qr, visitor); //read-only, to gather data\r\n\r\n\t\tvar newq = '?' + q.replace(qr, mutator).replace(/(?:^\\?*&*)|(?:[?&]+$)/g, \"\").replace(/&&+/g, \"&\");\r\n\r\n\t\treturn (m[1] || '') + injector(newq) + (m[4] || '');\r\n\t};\r\n\r\n\t//Expects virtual, not device pixel width\r\n\ts['getImageInfo'] = function (elementWidth, previousSrc, previousPixelWidth, previousElement) {\r\n\t\tvar data = {\r\n\t\t\t'webp': s['webp'],\r\n\t\t\t'width': elementWidth,\r\n\t\t\t'dpr': window.devicePixelRatio || 1,\r\n\t\t\t'src': previousSrc,\r\n\t\t\t'element': previousElement\r\n\t\t};\r\n\t\t//Determine quality percentage\r\n\t\tvar high_density = s['webp'] ? 65 : s['jpegRetinaQuality'];\r\n\t\tvar low_density = s['webp'] ? 78 : s['jpegQuality'];\r\n\t\tdata['quality'] = data['dpr'] > 1.49 ? high_density : low_density;\r\n\r\n\t\t//Calculate raw pixels using devicePixelRatio. Limit size to maxWidth.\r\n\t\tvar idealWidth = elementWidth * data['dpr'];\r\n\t\t//Minimize variants for caching improvements; round up to nearest multiple of widthStep\r\n\t\tdata['requestedWidth'] = Math.min(s['maxWidth'], //Limit size to maxWidth\r\n\t\t\tMath.round( //Round in case widthStep isn't an integer\r\n\t\t\t\tMath.ceil(idealWidth / s['widthStep']) * s['widthStep'] //Divide, ceiling, then multiply\r\n\t\t\t)\r\n\t\t);\r\n\r\n\r\n\t\tvar a = s['adjustImageParameters'];\r\n\t\tif (a && typeof (a) === \"function\") {\r\n\t\t\ta(data);\r\n\t\t}\r\n\t\tvar finalWidth = data['requestedWidth'];\r\n\r\n\t\tif (finalWidth > previousPixelWidth) {\r\n\t\t\t//Never request a smaller image once the larger one has already started loading\r\n\t\t\tvar u = {}; //For storing raw pairs\r\n\t\t\tvar c = {}; //For storing relevant parsed info\r\n\t\t\tvar newSrc = s['mutateUrl'](\r\n\t\t\t\tpreviousSrc,\r\n\t\t\t\t//Visitor\r\n\t\t\t\tfunction (_, d, k, v) {\r\n\t\t\t\t\tu[k.toLowerCase()] = v;\r\n\t\t\t\t},\r\n\t\t\t\t//Mutator\r\n\t\t\t\tfunction (p, d, k, v) {\r\n\r\n\t\t\t\t\t//Parse existing values so we can make educated calculations for width/height\r\n\t\t\t\t\tif (c.zoom === undefined) {\r\n\t\t\t\t\t\tc.zoom = parseFloat(u.zoom || 1);\r\n\t\t\t\t\t\tif (isNaN(c.zoom)) { c.zoom = 1; }\r\n\t\t\t\t\t\tc.w = (finalWidth / c.zoom).toFixed();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// set this, so imageprocessor doesn't trip over an undefined height\r\n\t\t\t\t\tc.h = u.height;\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tvar w = parseFloat(u.width || u.w || u.maxwidth);\r\n\t\t\t\t\t\tvar h = parseFloat(u.height || u.h || u.maxheight);\r\n\t\t\t\t\t\tif (!isNaN(w) && !isNaN(h) && w > 0 && h > 0) {\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tc.h = (((finalWidth / c.zoom) / w) * h).toFixed();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (k.match(/^format$/i) && data['webp']) { return d + \"format=webp\"; }\r\n\t\t\t\t\tif (k.match(/^quality/i)) { return d + \"quality=\" + data['quality']; }\r\n\r\n\t\t\t\t\tif (k.match(/^(w|width|maxwidth)$/i)) { return d + k + \"=\" + c.w; }\r\n\t\t\t\t\tif (k.match(/^(h|height|maxheight)$/i)) { return d + k + \"=\" + c.h; }\r\n\r\n\t\t\t\t\treturn p;\r\n\t\t\t\t},\r\n\t\t\t\t//Injector\r\n\t\t\t\tfunction (q) { return q; });\r\n\r\n\t\t\treturn { 'src': newSrc, 'data-pixel-width': finalWidth };\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n\ts['adjustImageSrc'] = function (img, previousSrc) {\r\n\t\tvar cssMaxWidth = s['getCssPixels'](img, 'max-width');\r\n\t\tvar result = s['getImageInfo'](cssMaxWidth,\r\n\t\t\tpreviousSrc,\r\n\t\t\timg.getAttribute('data-pixel-width') | 0,\r\n\t\t\timg);\r\n\r\n\t\tif (result) {\r\n\t\t\timg.src = result['src'];\r\n\t\t\ts.setAttr(img, 'data-pixel-width', result['data-pixel-width']);\r\n\t\t\tif (s['enforceCss']) {\r\n\t\t\t\tif (cssMaxWidth < result['data-pixel-width']) {\r\n\t\t\t\t\timg.style.width = s['getCssValue'](img, 'max-width');\r\n\t\t\t\t\ts.setAttr(img, 'data-width-enforced', true);\r\n\t\t\t\t} else {\r\n\t\t\t\t\timg.style.width = 'auto';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\ts['changed'].push(img);\r\n\t\t\tlog(\"Slimming: updating \" + result['src']);\r\n\t\t} else if (s['enforceCss'] && img.getAttribute('data-width-enforced')) {\r\n\t\t\tvar imageWidth = parseFloat(img.getAttribute('data-pixel-width'));\r\n\t\t\tif (!isNaN(imageWidth) && cssMaxWidth >= imageWidth) {\r\n\t\t\t\timg.style.width = 'auto';\r\n\t\t\t\timg.removeAttribute('data-width-enforced');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t};\r\n\ts.cr = function (delay) {\r\n\t\tvar i, il, j, jl, k, kl;\r\n\r\n\t\tif (s.timeoutid > 0) w.clearTimeout(s.timeoutid);\r\n\t\ts.timeoutid = 0;\r\n\r\n\t\tif (s._testingWebP && s['webpTimeout'] > 0 && !s.webp_waiting) {\r\n\t\t\ts.webp_waiting = true;\r\n\t\t\tdelay = s['webpTimeout'];\r\n\t\t}\r\n\t\tif (delay && delay > 0) {\r\n\t\t\ts.timeoutid = w.setTimeout(s.cr, delay);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar stopwatch = new Date().getTime();\r\n\r\n\t\tvar newImages = 0;\r\n\t\t//1. Copy images out of noscript tags, but hide 'src' attribute as data-src\r\n\t\tvar n = s.nodesToArray(w.document.getElementsByTagName(\"noscript\"));\r\n\t\tfor (i = 0, il = n.length; i < il; i++) {\r\n\t\t\tvar ns = n[i];\r\n\t\t\tif (ns.getAttribute(\"data-slimmage\") !== null) {\r\n\r\n\t\t\t\tvar div = w.document.createElement('div');\r\n\t\t\t\tvar contents = (ns.textContent || ns.innerHTML);\r\n\t\t\t\tif (!contents || contents.replace(/[\\s\\t\\r\\n]+/, \"\").length === 0) {\r\n\t\t\t\t\t//IE doesn't let us touch noscript, so we have to use attributes.\r\n\t\t\t\t\tvar img = new Image();\r\n\t\t\t\t\tfor (var ai = 0; ai < ns.attributes.length; ai++) {\r\n\t\t\t\t\t\tvar a = ns.attributes[ai];\r\n\t\t\t\t\t\tif (a && a.specified && a.name.indexOf(\"data-img-\") === 0) {\r\n\t\t\t\t\t\t\ts.setAttr(img, a.name.slice(9 - a.name.length), a.value);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdiv.appendChild(img);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t//noscript isn't part of DOM, so we have to recreate it, unescaping html, src->data-src \r\n\t\t\t\t\tdiv.innerHTML = contents.replace(/\\s+src\\s*=\\s*(['\"])/i, \" data-src=$1\").\r\n\t\t\t\t\t\treplace(/</g, '<').replace(/>/g, '>').replace(/&/g, '&');\r\n\t\t\t\t}\r\n\t\t\t\t//Clear source values before we add it back to the dom, ensure data-slimmage is set.\r\n\t\t\t\tvar childImages = div.getElementsByTagName(\"img\");\r\n\t\t\t\tfor (j = 0, jl = childImages.length; j < jl; j++) {\r\n\t\t\t\t\tvar ci = childImages[j];\r\n\t\t\t\t\tif (ci.src !== null && ci.src.length > 0) {\r\n\t\t\t\t\t\ts.setAttr(ci, \"data-src\", ci.src);\r\n\t\t\t\t\t\tci.src = \"\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\ts.setAttr(ci, \"data-slimmage\", true);\r\n\t\t\t\t\tns.parentNode.insertBefore(ci, ns);\r\n\t\t\t\t\tnewImages++;\r\n\t\t\t\t}\r\n\t\t\t\t//2. Remove old noscript tags\r\n\t\t\t\tns.parentNode.removeChild(ns);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//3. Let plugins inject custom behavior\r\n\t\tif ('function' === typeof s['beforeAdjustSrc']) {\r\n\t\t\ts['beforeAdjustSrc']();\r\n\t\t}\r\n\r\n\t\t//4. Find images with data-slimmage and run adjustImageSrc.\r\n\t\tvar totalImages = 0;\r\n\t\tvar images = s.nodesToArray(w.document.getElementsByTagName(\"img\"));\r\n\t\tfor (k = 0, kl = images.length; k < kl; k++) {\r\n\t\t\tif (images[k].getAttribute(\"data-slimmage\") !== null) {\r\n\t\t\t\tvar previousSrc = images[k].getAttribute(\"data-src\") || images[k].src;\r\n\t\t\t\ts['adjustImageSrc'](images[k], previousSrc);\r\n\t\t\t\ttotalImages++;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdocument.querySelectorAll('.imageHolderUrh > [data-slimmage=\"true\"]').forEach(image => {\r\n\t\t\tlog(\"updating ratio\");\r\n\t\t\tif (image.getAttribute('src') != null) {\r\n\t\t\t\tlet newSrc = image.getAttribute('src');\r\n\t\t\t\tlet dpr = window.devicePixelRatio || 1;\r\n\t\t\t\tlet img = image.closest('.imageHolderUrh');\r\n\t\t\t\tlet width = img.clientWidth;\r\n\t\t\t\tlet height = img.clientHeight;\r\n\t\t\t\tlet dprWidth = dpr * width;\r\n\t\t\t\t\r\n\t\t\t\tdprWidth = Math.min(s['maxWidth'], //Limit size to maxWidth\r\n\t\t\t\t\tMath.round( //Round in case widthStep isn't an integer\r\n\t\t\t\t\t\tMath.ceil(dprWidth / s['widthStep']) * s['widthStep'] //Divide, ceiling, then multiply\r\n\t\t\t\t\t)\r\n\t\t\t\t);\r\n\r\n\t\t\t\t// calculate dprHeight based on the height/width ratio and the dprWidth step.\r\n\t\t\t\tlet dprHeight = dprWidth * (height/width);\r\n\r\n\t\t\t\tnewSrc = image.getAttribute('src').replace(/width=([^&]*)/, `width=${dprWidth}`);\r\n\t\t\t\tnewSrc = newSrc.replace(/height=([^&]*)/, `height=${dprHeight}`);\r\n\r\n\t\t\t\timage.setAttribute('src', newSrc);\r\n\t\t\t\timage.setAttribute('data-src', newSrc);\r\n\t\t\t\timage.setAttribute('data-pixel-width', dprWidth);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvar changed = s['changed'].slice();\r\n\t\ts['changed'].length = 0;\r\n\r\n\t\t//5. Callback when ready\r\n\t\tif ((changed.length > 0 || !s.readyCalled) && 'function' === typeof s['readyCallback']) {\r\n\t\t\ts['readyCallback'](changed);\r\n\t\t\ts.readyCalled = true;\r\n\t\t}\r\n\r\n\t\tlog(\"Slimmage: restored \" + newImages + \" images from noscript tags, checked \" + totalImages + \" images, changed \" + changed.length + \". \" + (new Date().getTime() - stopwatch) + \"ms\");\r\n\t};\r\n\r\n\ts['checkResponsiveImages'] = s.cr;\r\n\t// Run on resize and domready (w.load as a fallback)\r\n\tif (w.addEventListener) {\r\n\t\tw.addEventListener(\"resize\", function () { s.cr(500); }, false);\r\n\t\tw.addEventListener(\"DOMContentLoaded\", function () {\r\n\t\t\ts.cr();\r\n\t\t\t// Run once only\r\n\t\t\tw.removeEventListener(\"load\", s.cr, false);\r\n\t\t}, false);\r\n\t\tw.addEventListener(\"load\", s.cr, false);\r\n\t} else if (w.attachEvent) {\r\n\t\tw.attachEvent(\"onload\", s.cr);\r\n\t\tw.attachEvent(\"onresize\", function () { s.cr(500); });\r\n\t}\r\n\r\n}(window));\r\n","window.slimmage = {\r\n verbose: false,\r\n tryWebP: false,\r\n maxWidth: 2048,\r\n widthStep: 80,\r\n jpegQuality: 90,\r\n jpegRetinaQuality: 80,\r\n webpTimeout: 20\r\n};","var DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n var proto = Element.prototype;\n\n proto.matches = proto.matchesSelector ||\n proto.mozMatchesSelector ||\n proto.msMatchesSelector ||\n proto.oMatchesSelector ||\n proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n if (typeof element.matches === 'function' &&\n element.matches(selector)) {\n return element;\n }\n element = element.parentNode;\n }\n}\n\nmodule.exports = closest;\n","var closest = require('./closest');\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n var listenerFn = listener.apply(this, arguments);\n\n element.addEventListener(type, listenerFn, useCapture);\n\n return {\n destroy: function() {\n element.removeEventListener(type, listenerFn, useCapture);\n }\n }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n // Handle the regular Element usage\n if (typeof elements.addEventListener === 'function') {\n return _delegate.apply(null, arguments);\n }\n\n // Handle Element-less usage, it defaults to global delegation\n if (typeof type === 'function') {\n // Use `document` as the first parameter, then apply arguments\n // This is a short way to .unshift `arguments` without running into deoptimizations\n return _delegate.bind(null, document).apply(null, arguments);\n }\n\n // Handle Selector-based usage\n if (typeof elements === 'string') {\n elements = document.querySelectorAll(elements);\n }\n\n // Handle Array-like based usage\n return Array.prototype.map.call(elements, function (element) {\n return _delegate(element, selector, type, callback, useCapture);\n });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n return function(e) {\n e.delegateTarget = closest(e.target, selector);\n\n if (e.delegateTarget) {\n callback.call(element, e);\n }\n }\n}\n\nmodule.exports = delegate;\n","var Handlebars = require(\"../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
  • \\r\\n \\r\\n \"\n + alias2(alias1((depth0 != null ? lookupProperty(depth0,\"name\") : depth0), depth0))\n + \"\\r\\n \\r\\n
  • \\r\\n\";\n},\"useData\":true});","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _handlebarsBase = require('./handlebars/base');\n\nvar base = _interopRequireWildcard(_handlebarsBase);\n\n// Each of these augment the Handlebars object. No need to setup here.\n// (This is done to easily share code between commonjs and browse envs)\n\nvar _handlebarsSafeString = require('./handlebars/safe-string');\n\nvar _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString);\n\nvar _handlebarsException = require('./handlebars/exception');\n\nvar _handlebarsException2 = _interopRequireDefault(_handlebarsException);\n\nvar _handlebarsUtils = require('./handlebars/utils');\n\nvar Utils = _interopRequireWildcard(_handlebarsUtils);\n\nvar _handlebarsRuntime = require('./handlebars/runtime');\n\nvar runtime = _interopRequireWildcard(_handlebarsRuntime);\n\nvar _handlebarsNoConflict = require('./handlebars/no-conflict');\n\nvar _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);\n\n// For compatibility and usage outside of module systems, make the Handlebars object a namespace\nfunction create() {\n var hb = new base.HandlebarsEnvironment();\n\n Utils.extend(hb, base);\n hb.SafeString = _handlebarsSafeString2['default'];\n hb.Exception = _handlebarsException2['default'];\n hb.Utils = Utils;\n hb.escapeExpression = Utils.escapeExpression;\n\n hb.VM = runtime;\n hb.template = function (spec) {\n return runtime.template(spec, hb);\n };\n\n return hb;\n}\n\nvar inst = create();\ninst.create = create;\n\n_handlebarsNoConflict2['default'](inst);\n\ninst['default'] = inst;\n\nexports['default'] = inst;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9oYW5kbGViYXJzLnJ1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OEJBQXNCLG1CQUFtQjs7SUFBN0IsSUFBSTs7Ozs7b0NBSU8sMEJBQTBCOzs7O21DQUMzQix3QkFBd0I7Ozs7K0JBQ3ZCLG9CQUFvQjs7SUFBL0IsS0FBSzs7aUNBQ1Esc0JBQXNCOztJQUFuQyxPQUFPOztvQ0FFSSwwQkFBMEI7Ozs7O0FBR2pELFNBQVMsTUFBTSxHQUFHO0FBQ2hCLE1BQUksRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7O0FBRTFDLE9BQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3ZCLElBQUUsQ0FBQyxVQUFVLG9DQUFhLENBQUM7QUFDM0IsSUFBRSxDQUFDLFNBQVMsbUNBQVksQ0FBQztBQUN6QixJQUFFLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNqQixJQUFFLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDOztBQUU3QyxJQUFFLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUNoQixJQUFFLENBQUMsUUFBUSxHQUFHLFVBQVMsSUFBSSxFQUFFO0FBQzNCLFdBQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7R0FDbkMsQ0FBQzs7QUFFRixTQUFPLEVBQUUsQ0FBQztDQUNYOztBQUVELElBQUksSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDOztBQUVyQixrQ0FBVyxJQUFJLENBQUMsQ0FBQzs7QUFFakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQzs7cUJBRVIsSUFBSSIsImZpbGUiOiJoYW5kbGViYXJzLnJ1bnRpbWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBiYXNlIGZyb20gJy4vaGFuZGxlYmFycy9iYXNlJztcblxuLy8gRWFjaCBvZiB0aGVzZSBhdWdtZW50IHRoZSBIYW5kbGViYXJzIG9iamVjdC4gTm8gbmVlZCB0byBzZXR1cCBoZXJlLlxuLy8gKFRoaXMgaXMgZG9uZSB0byBlYXNpbHkgc2hhcmUgY29kZSBiZXR3ZWVuIGNvbW1vbmpzIGFuZCBicm93c2UgZW52cylcbmltcG9ydCBTYWZlU3RyaW5nIGZyb20gJy4vaGFuZGxlYmFycy9zYWZlLXN0cmluZyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4vaGFuZGxlYmFycy9leGNlcHRpb24nO1xuaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi9oYW5kbGViYXJzL3V0aWxzJztcbmltcG9ydCAqIGFzIHJ1bnRpbWUgZnJvbSAnLi9oYW5kbGViYXJzL3J1bnRpbWUnO1xuXG5pbXBvcnQgbm9Db25mbGljdCBmcm9tICcuL2hhbmRsZWJhcnMvbm8tY29uZmxpY3QnO1xuXG4vLyBGb3IgY29tcGF0aWJpbGl0eSBhbmQgdXNhZ2Ugb3V0c2lkZSBvZiBtb2R1bGUgc3lzdGVtcywgbWFrZSB0aGUgSGFuZGxlYmFycyBvYmplY3QgYSBuYW1lc3BhY2VcbmZ1bmN0aW9uIGNyZWF0ZSgpIHtcbiAgbGV0IGhiID0gbmV3IGJhc2UuSGFuZGxlYmFyc0Vudmlyb25tZW50KCk7XG5cbiAgVXRpbHMuZXh0ZW5kKGhiLCBiYXNlKTtcbiAgaGIuU2FmZVN0cmluZyA9IFNhZmVTdHJpbmc7XG4gIGhiLkV4Y2VwdGlvbiA9IEV4Y2VwdGlvbjtcbiAgaGIuVXRpbHMgPSBVdGlscztcbiAgaGIuZXNjYXBlRXhwcmVzc2lvbiA9IFV0aWxzLmVzY2FwZUV4cHJlc3Npb247XG5cbiAgaGIuVk0gPSBydW50aW1lO1xuICBoYi50ZW1wbGF0ZSA9IGZ1bmN0aW9uKHNwZWMpIHtcbiAgICByZXR1cm4gcnVudGltZS50ZW1wbGF0ZShzcGVjLCBoYik7XG4gIH07XG5cbiAgcmV0dXJuIGhiO1xufVxuXG5sZXQgaW5zdCA9IGNyZWF0ZSgpO1xuaW5zdC5jcmVhdGUgPSBjcmVhdGU7XG5cbm5vQ29uZmxpY3QoaW5zdCk7XG5cbmluc3RbJ2RlZmF1bHQnXSA9IGluc3Q7XG5cbmV4cG9ydCBkZWZhdWx0IGluc3Q7XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.HandlebarsEnvironment = HandlebarsEnvironment;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('./utils');\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _helpers = require('./helpers');\n\nvar _decorators = require('./decorators');\n\nvar _logger = require('./logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _internalProtoAccess = require('./internal/proto-access');\n\nvar VERSION = '4.7.7';\nexports.VERSION = VERSION;\nvar COMPILER_REVISION = 8;\nexports.COMPILER_REVISION = COMPILER_REVISION;\nvar LAST_COMPATIBLE_COMPILER_REVISION = 7;\n\nexports.LAST_COMPATIBLE_COMPILER_REVISION = LAST_COMPATIBLE_COMPILER_REVISION;\nvar REVISION_CHANGES = {\n 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n 2: '== 1.0.0-rc.3',\n 3: '== 1.0.0-rc.4',\n 4: '== 1.x.x',\n 5: '== 2.0.0-alpha.x',\n 6: '>= 2.0.0-beta.1',\n 7: '>= 4.0.0 <4.3.0',\n 8: '>= 4.3.0'\n};\n\nexports.REVISION_CHANGES = REVISION_CHANGES;\nvar objectType = '[object Object]';\n\nfunction HandlebarsEnvironment(helpers, partials, decorators) {\n this.helpers = helpers || {};\n this.partials = partials || {};\n this.decorators = decorators || {};\n\n _helpers.registerDefaultHelpers(this);\n _decorators.registerDefaultDecorators(this);\n}\n\nHandlebarsEnvironment.prototype = {\n constructor: HandlebarsEnvironment,\n\n logger: _logger2['default'],\n log: _logger2['default'].log,\n\n registerHelper: function registerHelper(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple helpers');\n }\n _utils.extend(this.helpers, name);\n } else {\n this.helpers[name] = fn;\n }\n },\n unregisterHelper: function unregisterHelper(name) {\n delete this.helpers[name];\n },\n\n registerPartial: function registerPartial(name, partial) {\n if (_utils.toString.call(name) === objectType) {\n _utils.extend(this.partials, name);\n } else {\n if (typeof partial === 'undefined') {\n throw new _exception2['default']('Attempting to register a partial called \"' + name + '\" as undefined');\n }\n this.partials[name] = partial;\n }\n },\n unregisterPartial: function unregisterPartial(name) {\n delete this.partials[name];\n },\n\n registerDecorator: function registerDecorator(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple decorators');\n }\n _utils.extend(this.decorators, name);\n } else {\n this.decorators[name] = fn;\n }\n },\n unregisterDecorator: function unregisterDecorator(name) {\n delete this.decorators[name];\n },\n /**\n * Reset the memory of illegal property accesses that have already been logged.\n * @deprecated should only be used in handlebars test-cases\n */\n resetLoggedPropertyAccesses: function resetLoggedPropertyAccesses() {\n _internalProtoAccess.resetLoggedProperties();\n }\n};\n\nvar log = _logger2['default'].log;\n\nexports.log = log;\nexports.createFrame = _utils.createFrame;\nexports.logger = _logger2['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2Jhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7cUJBQThDLFNBQVM7O3lCQUNqQyxhQUFhOzs7O3VCQUNJLFdBQVc7OzBCQUNSLGNBQWM7O3NCQUNyQyxVQUFVOzs7O21DQUNTLHlCQUF5Qjs7QUFFeEQsSUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDOztBQUN4QixJQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQzs7QUFDNUIsSUFBTSxpQ0FBaUMsR0FBRyxDQUFDLENBQUM7OztBQUU1QyxJQUFNLGdCQUFnQixHQUFHO0FBQzlCLEdBQUMsRUFBRSxhQUFhO0FBQ2hCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxVQUFVO0FBQ2IsR0FBQyxFQUFFLGtCQUFrQjtBQUNyQixHQUFDLEVBQUUsaUJBQWlCO0FBQ3BCLEdBQUMsRUFBRSxpQkFBaUI7QUFDcEIsR0FBQyxFQUFFLFVBQVU7Q0FDZCxDQUFDOzs7QUFFRixJQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQzs7QUFFOUIsU0FBUyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRTtBQUNuRSxNQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDN0IsTUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksRUFBRSxDQUFDO0FBQy9CLE1BQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxJQUFJLEVBQUUsQ0FBQzs7QUFFbkMsa0NBQXVCLElBQUksQ0FBQyxDQUFDO0FBQzdCLHdDQUEwQixJQUFJLENBQUMsQ0FBQztDQUNqQzs7QUFFRCxxQkFBcUIsQ0FBQyxTQUFTLEdBQUc7QUFDaEMsYUFBVyxFQUFFLHFCQUFxQjs7QUFFbEMsUUFBTSxxQkFBUTtBQUNkLEtBQUcsRUFBRSxvQkFBTyxHQUFHOztBQUVmLGdCQUFjLEVBQUUsd0JBQVMsSUFBSSxFQUFFLEVBQUUsRUFBRTtBQUNqQyxRQUFJLGdCQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxVQUFVLEVBQUU7QUFDdEMsVUFBSSxFQUFFLEVBQUU7QUFDTixjQUFNLDJCQUFjLHlDQUF5QyxDQUFDLENBQUM7T0FDaEU7QUFDRCxvQkFBTyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQzVCLE1BQU07QUFDTCxVQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUN6QjtHQUNGO0FBQ0Qsa0JBQWdCLEVBQUUsMEJBQVMsSUFBSSxFQUFFO0FBQy9CLFdBQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztHQUMzQjs7QUFFRCxpQkFBZSxFQUFFLHlCQUFTLElBQUksRUFBRSxPQUFPLEVBQUU7QUFDdkMsUUFBSSxnQkFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLG9CQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDN0IsTUFBTTtBQUNMLFVBQUksT0FBTyxPQUFPLEtBQUssV0FBVyxFQUFFO0FBQ2xDLGNBQU0seUVBQ3dDLElBQUksb0JBQ2pELENBQUM7T0FDSDtBQUNELFVBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDO0tBQy9CO0dBQ0Y7QUFDRCxtQkFBaUIsRUFBRSwyQkFBUyxJQUFJLEVBQUU7QUFDaEMsV0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0dBQzVCOztBQUVELG1CQUFpQixFQUFFLDJCQUFTLElBQUksRUFBRSxFQUFFLEVBQUU7QUFDcEMsUUFBSSxnQkFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLFVBQUksRUFBRSxFQUFFO0FBQ04sY0FBTSwyQkFBYyw0Q0FBNEMsQ0FBQyxDQUFDO09BQ25FO0FBQ0Qsb0JBQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUMvQixNQUFNO0FBQ0wsVUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDNUI7R0FDRjtBQUNELHFCQUFtQixFQUFFLDZCQUFTLElBQUksRUFBRTtBQUNsQyxXQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7R0FDOUI7Ozs7O0FBS0QsNkJBQTJCLEVBQUEsdUNBQUc7QUFDNUIsZ0RBQXVCLENBQUM7R0FDekI7Q0FDRixDQUFDOztBQUVLLElBQUksR0FBRyxHQUFHLG9CQUFPLEdBQUcsQ0FBQzs7O1FBRW5CLFdBQVc7UUFBRSxNQUFNIiwiZmlsZSI6ImJhc2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVGcmFtZSwgZXh0ZW5kLCB0b1N0cmluZyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuL2V4Y2VwdGlvbic7XG5pbXBvcnQgeyByZWdpc3RlckRlZmF1bHRIZWxwZXJzIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IHJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnMgfSBmcm9tICcuL2RlY29yYXRvcnMnO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgeyByZXNldExvZ2dlZFByb3BlcnRpZXMgfSBmcm9tICcuL2ludGVybmFsL3Byb3RvLWFjY2Vzcyc7XG5cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuNy43JztcbmV4cG9ydCBjb25zdCBDT01QSUxFUl9SRVZJU0lPTiA9IDg7XG5leHBvcnQgY29uc3QgTEFTVF9DT01QQVRJQkxFX0NPTVBJTEVSX1JFVklTSU9OID0gNztcblxuZXhwb3J0IGNvbnN0IFJFVklTSU9OX0NIQU5HRVMgPSB7XG4gIDE6ICc8PSAxLjAucmMuMicsIC8vIDEuMC5yYy4yIGlzIGFjdHVhbGx5IHJldjIgYnV0IGRvZXNuJ3QgcmVwb3J0IGl0XG4gIDI6ICc9PSAxLjAuMC1yYy4zJyxcbiAgMzogJz09IDEuMC4wLXJjLjQnLFxuICA0OiAnPT0gMS54LngnLFxuICA1OiAnPT0gMi4wLjAtYWxwaGEueCcsXG4gIDY6ICc+PSAyLjAuMC1iZXRhLjEnLFxuICA3OiAnPj0gNC4wLjAgPDQuMy4wJyxcbiAgODogJz49IDQuMy4wJ1xufTtcblxuY29uc3Qgb2JqZWN0VHlwZSA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG5leHBvcnQgZnVuY3Rpb24gSGFuZGxlYmFyc0Vudmlyb25tZW50KGhlbHBlcnMsIHBhcnRpYWxzLCBkZWNvcmF0b3JzKSB7XG4gIHRoaXMuaGVscGVycyA9IGhlbHBlcnMgfHwge307XG4gIHRoaXMucGFydGlhbHMgPSBwYXJ0aWFscyB8fCB7fTtcbiAgdGhpcy5kZWNvcmF0b3JzID0gZGVjb3JhdG9ycyB8fCB7fTtcblxuICByZWdpc3RlckRlZmF1bHRIZWxwZXJzKHRoaXMpO1xuICByZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzKHRoaXMpO1xufVxuXG5IYW5kbGViYXJzRW52aXJvbm1lbnQucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogSGFuZGxlYmFyc0Vudmlyb25tZW50LFxuXG4gIGxvZ2dlcjogbG9nZ2VyLFxuICBsb2c6IGxvZ2dlci5sb2csXG5cbiAgcmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uKG5hbWUsIGZuKSB7XG4gICAgaWYgKHRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9iamVjdFR5cGUpIHtcbiAgICAgIGlmIChmbikge1xuICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdBcmcgbm90IHN1cHBvcnRlZCB3aXRoIG11bHRpcGxlIGhlbHBlcnMnKTtcbiAgICAgIH1cbiAgICAgIGV4dGVuZCh0aGlzLmhlbHBlcnMsIG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhlbHBlcnNbbmFtZV0gPSBmbjtcbiAgICB9XG4gIH0sXG4gIHVucmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5oZWxwZXJzW25hbWVdO1xuICB9LFxuXG4gIHJlZ2lzdGVyUGFydGlhbDogZnVuY3Rpb24obmFtZSwgcGFydGlhbCkge1xuICAgIGlmICh0b1N0cmluZy5jYWxsKG5hbWUpID09PSBvYmplY3RUeXBlKSB7XG4gICAgICBleHRlbmQodGhpcy5wYXJ0aWFscywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0eXBlb2YgcGFydGlhbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgICAgICBgQXR0ZW1wdGluZyB0byByZWdpc3RlciBhIHBhcnRpYWwgY2FsbGVkIFwiJHtuYW1lfVwiIGFzIHVuZGVmaW5lZGBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucGFydGlhbHNbbmFtZV0gPSBwYXJ0aWFsO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5wYXJ0aWFsc1tuYW1lXTtcbiAgfSxcblxuICByZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSwgZm4pIHtcbiAgICBpZiAodG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkge1xuICAgICAgaWYgKGZuKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0FyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVsdGlwbGUgZGVjb3JhdG9ycycpO1xuICAgICAgfVxuICAgICAgZXh0ZW5kKHRoaXMuZGVjb3JhdG9ycywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVjb3JhdG9yc1tuYW1lXSA9IGZuO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSkge1xuICAgIGRlbGV0ZSB0aGlzLmRlY29yYXRvcnNbbmFtZV07XG4gIH0sXG4gIC8qKlxuICAgKiBSZXNldCB0aGUgbWVtb3J5IG9mIGlsbGVnYWwgcHJvcGVydHkgYWNjZXNzZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBsb2dnZWQuXG4gICAqIEBkZXByZWNhdGVkIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gaGFuZGxlYmFycyB0ZXN0LWNhc2VzXG4gICAqL1xuICByZXNldExvZ2dlZFByb3BlcnR5QWNjZXNzZXMoKSB7XG4gICAgcmVzZXRMb2dnZWRQcm9wZXJ0aWVzKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBsZXQgbG9nID0gbG9nZ2VyLmxvZztcblxuZXhwb3J0IHsgY3JlYXRlRnJhbWUsIGxvZ2dlciB9O1xuIl19\n","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultDecorators = registerDefaultDecorators;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _decoratorsInline = require('./decorators/inline');\n\nvar _decoratorsInline2 = _interopRequireDefault(_decoratorsInline);\n\nfunction registerDefaultDecorators(instance) {\n _decoratorsInline2['default'](instance);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Z0NBQTJCLHFCQUFxQjs7OztBQUV6QyxTQUFTLHlCQUF5QixDQUFDLFFBQVEsRUFBRTtBQUNsRCxnQ0FBZSxRQUFRLENBQUMsQ0FBQztDQUMxQiIsImZpbGUiOiJkZWNvcmF0b3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVySW5saW5lIGZyb20gJy4vZGVjb3JhdG9ycy9pbmxpbmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9ycyhpbnN0YW5jZSkge1xuICByZWdpc3RlcklubGluZShpbnN0YW5jZSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerDecorator('inline', function (fn, props, container, options) {\n var ret = fn;\n if (!props.partials) {\n props.partials = {};\n ret = function (context, options) {\n // Create a new partials stack frame prior to exec.\n var original = container.partials;\n container.partials = _utils.extend({}, original, props.partials);\n var ret = fn(context, options);\n container.partials = original;\n return ret;\n };\n }\n\n props.partials[options.args[0]] = options.fn;\n\n return ret;\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMvaW5saW5lLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQXVCLFVBQVU7O3FCQUVsQixVQUFTLFFBQVEsRUFBRTtBQUNoQyxVQUFRLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFO0FBQzNFLFFBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNiLFFBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO0FBQ25CLFdBQUssQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLFNBQUcsR0FBRyxVQUFTLE9BQU8sRUFBRSxPQUFPLEVBQUU7O0FBRS9CLFlBQUksUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7QUFDbEMsaUJBQVMsQ0FBQyxRQUFRLEdBQUcsY0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRCxZQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQy9CLGlCQUFTLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztBQUM5QixlQUFPLEdBQUcsQ0FBQztPQUNaLENBQUM7S0FDSDs7QUFFRCxTQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUU3QyxXQUFPLEdBQUcsQ0FBQztHQUNaLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6ImlubGluZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4dGVuZCB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJEZWNvcmF0b3IoJ2lubGluZScsIGZ1bmN0aW9uKGZuLCBwcm9wcywgY29udGFpbmVyLCBvcHRpb25zKSB7XG4gICAgbGV0IHJldCA9IGZuO1xuICAgIGlmICghcHJvcHMucGFydGlhbHMpIHtcbiAgICAgIHByb3BzLnBhcnRpYWxzID0ge307XG4gICAgICByZXQgPSBmdW5jdGlvbihjb250ZXh0LCBvcHRpb25zKSB7XG4gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBwYXJ0aWFscyBzdGFjayBmcmFtZSBwcmlvciB0byBleGVjLlxuICAgICAgICBsZXQgb3JpZ2luYWwgPSBjb250YWluZXIucGFydGlhbHM7XG4gICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IGV4dGVuZCh7fSwgb3JpZ2luYWwsIHByb3BzLnBhcnRpYWxzKTtcbiAgICAgICAgbGV0IHJldCA9IGZuKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgICAgICBjb250YWluZXIucGFydGlhbHMgPSBvcmlnaW5hbDtcbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMucGFydGlhbHNbb3B0aW9ucy5hcmdzWzBdXSA9IG9wdGlvbnMuZm47XG5cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nvar errorProps = ['description', 'fileName', 'lineNumber', 'endLineNumber', 'message', 'name', 'number', 'stack'];\n\nfunction Exception(message, node) {\n var loc = node && node.loc,\n line = undefined,\n endLineNumber = undefined,\n column = undefined,\n endColumn = undefined;\n\n if (loc) {\n line = loc.start.line;\n endLineNumber = loc.end.line;\n column = loc.start.column;\n endColumn = loc.end.column;\n\n message += ' - ' + line + ':' + column;\n }\n\n var tmp = Error.prototype.constructor.call(this, message);\n\n // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n for (var idx = 0; idx < errorProps.length; idx++) {\n this[errorProps[idx]] = tmp[errorProps[idx]];\n }\n\n /* istanbul ignore else */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, Exception);\n }\n\n try {\n if (loc) {\n this.lineNumber = line;\n this.endLineNumber = endLineNumber;\n\n // Work around issue under safari where we can't directly set the column value\n /* istanbul ignore next */\n if (Object.defineProperty) {\n Object.defineProperty(this, 'column', {\n value: column,\n enumerable: true\n });\n Object.defineProperty(this, 'endColumn', {\n value: endColumn,\n enumerable: true\n });\n } else {\n this.column = column;\n this.endColumn = endColumn;\n }\n }\n } catch (nop) {\n /* Ignore if the browser is very particular */\n }\n}\n\nException.prototype = new Error();\n\nexports['default'] = Exception;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2V4Y2VwdGlvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFNLFVBQVUsR0FBRyxDQUNqQixhQUFhLEVBQ2IsVUFBVSxFQUNWLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsT0FBTyxDQUNSLENBQUM7O0FBRUYsU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRTtBQUNoQyxNQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUc7TUFDeEIsSUFBSSxZQUFBO01BQ0osYUFBYSxZQUFBO01BQ2IsTUFBTSxZQUFBO01BQ04sU0FBUyxZQUFBLENBQUM7O0FBRVosTUFBSSxHQUFHLEVBQUU7QUFDUCxRQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7QUFDdEIsaUJBQWEsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztBQUM3QixVQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDMUIsYUFBUyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDOztBQUUzQixXQUFPLElBQUksS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDO0dBQ3hDOztBQUVELE1BQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7OztBQUcxRCxPQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUNoRCxRQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0dBQzlDOzs7QUFHRCxNQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRTtBQUMzQixTQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0dBQzFDOztBQUVELE1BQUk7QUFDRixRQUFJLEdBQUcsRUFBRTtBQUNQLFVBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBQ3ZCLFVBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDOzs7O0FBSW5DLFVBQUksTUFBTSxDQUFDLGNBQWMsRUFBRTtBQUN6QixjQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7QUFDcEMsZUFBSyxFQUFFLE1BQU07QUFDYixvQkFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO0FBQ0gsY0FBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQ3ZDLGVBQUssRUFBRSxTQUFTO0FBQ2hCLG9CQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7T0FDSixNQUFNO0FBQ0wsWUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDckIsWUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7T0FDNUI7S0FDRjtHQUNGLENBQUMsT0FBTyxHQUFHLEVBQUU7O0dBRWI7Q0FDRjs7QUFFRCxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7O3FCQUVuQixTQUFTIiwiZmlsZSI6ImV4Y2VwdGlvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGVycm9yUHJvcHMgPSBbXG4gICdkZXNjcmlwdGlvbicsXG4gICdmaWxlTmFtZScsXG4gICdsaW5lTnVtYmVyJyxcbiAgJ2VuZExpbmVOdW1iZXInLFxuICAnbWVzc2FnZScsXG4gICduYW1lJyxcbiAgJ251bWJlcicsXG4gICdzdGFjaydcbl07XG5cbmZ1bmN0aW9uIEV4Y2VwdGlvbihtZXNzYWdlLCBub2RlKSB7XG4gIGxldCBsb2MgPSBub2RlICYmIG5vZGUubG9jLFxuICAgIGxpbmUsXG4gICAgZW5kTGluZU51bWJlcixcbiAgICBjb2x1bW4sXG4gICAgZW5kQ29sdW1uO1xuXG4gIGlmIChsb2MpIHtcbiAgICBsaW5lID0gbG9jLnN0YXJ0LmxpbmU7XG4gICAgZW5kTGluZU51bWJlciA9IGxvYy5lbmQubGluZTtcbiAgICBjb2x1bW4gPSBsb2Muc3RhcnQuY29sdW1uO1xuICAgIGVuZENvbHVtbiA9IGxvYy5lbmQuY29sdW1uO1xuXG4gICAgbWVzc2FnZSArPSAnIC0gJyArIGxpbmUgKyAnOicgKyBjb2x1bW47XG4gIH1cblxuICBsZXQgdG1wID0gRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yLmNhbGwodGhpcywgbWVzc2FnZSk7XG5cbiAgLy8gVW5mb3J0dW5hdGVseSBlcnJvcnMgYXJlIG5vdCBlbnVtZXJhYmxlIGluIENocm9tZSAoYXQgbGVhc3QpLCBzbyBgZm9yIHByb3AgaW4gdG1wYCBkb2Vzbid0IHdvcmsuXG4gIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IGVycm9yUHJvcHMubGVuZ3RoOyBpZHgrKykge1xuICAgIHRoaXNbZXJyb3JQcm9wc1tpZHhdXSA9IHRtcFtlcnJvclByb3BzW2lkeF1dO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgRXhjZXB0aW9uKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgaWYgKGxvYykge1xuICAgICAgdGhpcy5saW5lTnVtYmVyID0gbGluZTtcbiAgICAgIHRoaXMuZW5kTGluZU51bWJlciA9IGVuZExpbmVOdW1iZXI7XG5cbiAgICAgIC8vIFdvcmsgYXJvdW5kIGlzc3VlIHVuZGVyIHNhZmFyaSB3aGVyZSB3ZSBjYW4ndCBkaXJlY3RseSBzZXQgdGhlIGNvbHVtbiB2YWx1ZVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdjb2x1bW4nLCB7XG4gICAgICAgICAgdmFsdWU6IGNvbHVtbixcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2VuZENvbHVtbicsIHtcbiAgICAgICAgICB2YWx1ZTogZW5kQ29sdW1uLFxuICAgICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbHVtbiA9IGNvbHVtbjtcbiAgICAgICAgdGhpcy5lbmRDb2x1bW4gPSBlbmRDb2x1bW47XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChub3ApIHtcbiAgICAvKiBJZ25vcmUgaWYgdGhlIGJyb3dzZXIgaXMgdmVyeSBwYXJ0aWN1bGFyICovXG4gIH1cbn1cblxuRXhjZXB0aW9uLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpO1xuXG5leHBvcnQgZGVmYXVsdCBFeGNlcHRpb247XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultHelpers = registerDefaultHelpers;\nexports.moveHelperToHooks = moveHelperToHooks;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _helpersBlockHelperMissing = require('./helpers/block-helper-missing');\n\nvar _helpersBlockHelperMissing2 = _interopRequireDefault(_helpersBlockHelperMissing);\n\nvar _helpersEach = require('./helpers/each');\n\nvar _helpersEach2 = _interopRequireDefault(_helpersEach);\n\nvar _helpersHelperMissing = require('./helpers/helper-missing');\n\nvar _helpersHelperMissing2 = _interopRequireDefault(_helpersHelperMissing);\n\nvar _helpersIf = require('./helpers/if');\n\nvar _helpersIf2 = _interopRequireDefault(_helpersIf);\n\nvar _helpersLog = require('./helpers/log');\n\nvar _helpersLog2 = _interopRequireDefault(_helpersLog);\n\nvar _helpersLookup = require('./helpers/lookup');\n\nvar _helpersLookup2 = _interopRequireDefault(_helpersLookup);\n\nvar _helpersWith = require('./helpers/with');\n\nvar _helpersWith2 = _interopRequireDefault(_helpersWith);\n\nfunction registerDefaultHelpers(instance) {\n _helpersBlockHelperMissing2['default'](instance);\n _helpersEach2['default'](instance);\n _helpersHelperMissing2['default'](instance);\n _helpersIf2['default'](instance);\n _helpersLog2['default'](instance);\n _helpersLookup2['default'](instance);\n _helpersWith2['default'](instance);\n}\n\nfunction moveHelperToHooks(instance, helperName, keepHelper) {\n if (instance.helpers[helperName]) {\n instance.hooks[helperName] = instance.helpers[helperName];\n if (!keepHelper) {\n delete instance.helpers[helperName];\n }\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O3lDQUF1QyxnQ0FBZ0M7Ozs7MkJBQzlDLGdCQUFnQjs7OztvQ0FDUCwwQkFBMEI7Ozs7eUJBQ3JDLGNBQWM7Ozs7MEJBQ2IsZUFBZTs7Ozs2QkFDWixrQkFBa0I7Ozs7MkJBQ3BCLGdCQUFnQjs7OztBQUVsQyxTQUFTLHNCQUFzQixDQUFDLFFBQVEsRUFBRTtBQUMvQyx5Q0FBMkIsUUFBUSxDQUFDLENBQUM7QUFDckMsMkJBQWEsUUFBUSxDQUFDLENBQUM7QUFDdkIsb0NBQXNCLFFBQVEsQ0FBQyxDQUFDO0FBQ2hDLHlCQUFXLFFBQVEsQ0FBQyxDQUFDO0FBQ3JCLDBCQUFZLFFBQVEsQ0FBQyxDQUFDO0FBQ3RCLDZCQUFlLFFBQVEsQ0FBQyxDQUFDO0FBQ3pCLDJCQUFhLFFBQVEsQ0FBQyxDQUFDO0NBQ3hCOztBQUVNLFNBQVMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUU7QUFDbEUsTUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO0FBQ2hDLFlBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMxRCxRQUFJLENBQUMsVUFBVSxFQUFFO0FBQ2YsYUFBTyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQ3JDO0dBQ0Y7Q0FDRiIsImZpbGUiOiJoZWxwZXJzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVyQmxvY2tIZWxwZXJNaXNzaW5nIGZyb20gJy4vaGVscGVycy9ibG9jay1oZWxwZXItbWlzc2luZyc7XG5pbXBvcnQgcmVnaXN0ZXJFYWNoIGZyb20gJy4vaGVscGVycy9lYWNoJztcbmltcG9ydCByZWdpc3RlckhlbHBlck1pc3NpbmcgZnJvbSAnLi9oZWxwZXJzL2hlbHBlci1taXNzaW5nJztcbmltcG9ydCByZWdpc3RlcklmIGZyb20gJy4vaGVscGVycy9pZic7XG5pbXBvcnQgcmVnaXN0ZXJMb2cgZnJvbSAnLi9oZWxwZXJzL2xvZyc7XG5pbXBvcnQgcmVnaXN0ZXJMb29rdXAgZnJvbSAnLi9oZWxwZXJzL2xvb2t1cCc7XG5pbXBvcnQgcmVnaXN0ZXJXaXRoIGZyb20gJy4vaGVscGVycy93aXRoJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRGVmYXVsdEhlbHBlcnMoaW5zdGFuY2UpIHtcbiAgcmVnaXN0ZXJCbG9ja0hlbHBlck1pc3NpbmcoaW5zdGFuY2UpO1xuICByZWdpc3RlckVhY2goaW5zdGFuY2UpO1xuICByZWdpc3RlckhlbHBlck1pc3NpbmcoaW5zdGFuY2UpO1xuICByZWdpc3RlcklmKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJMb2coaW5zdGFuY2UpO1xuICByZWdpc3Rlckxvb2t1cChpbnN0YW5jZSk7XG4gIHJlZ2lzdGVyV2l0aChpbnN0YW5jZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3ZlSGVscGVyVG9Ib29rcyhpbnN0YW5jZSwgaGVscGVyTmFtZSwga2VlcEhlbHBlcikge1xuICBpZiAoaW5zdGFuY2UuaGVscGVyc1toZWxwZXJOYW1lXSkge1xuICAgIGluc3RhbmNlLmhvb2tzW2hlbHBlck5hbWVdID0gaW5zdGFuY2UuaGVscGVyc1toZWxwZXJOYW1lXTtcbiAgICBpZiAoIWtlZXBIZWxwZXIpIHtcbiAgICAgIGRlbGV0ZSBpbnN0YW5jZS5oZWxwZXJzW2hlbHBlck5hbWVdO1xuICAgIH1cbiAgfVxufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerHelper('blockHelperMissing', function (context, options) {\n var inverse = options.inverse,\n fn = options.fn;\n\n if (context === true) {\n return fn(this);\n } else if (context === false || context == null) {\n return inverse(this);\n } else if (_utils.isArray(context)) {\n if (context.length > 0) {\n if (options.ids) {\n options.ids = [options.name];\n }\n\n return instance.helpers.each(context, options);\n } else {\n return inverse(this);\n }\n } else {\n if (options.data && options.ids) {\n var data = _utils.createFrame(options.data);\n data.contextPath = _utils.appendContextPath(options.data.contextPath, options.name);\n options = { data: data };\n }\n\n return fn(context, options);\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvYmxvY2staGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztxQkFBd0QsVUFBVTs7cUJBRW5ELFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLEVBQUUsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3ZFLFFBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPO1FBQzNCLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUVsQixRQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7QUFDcEIsYUFBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDakIsTUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtBQUMvQyxhQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN0QixNQUFNLElBQUksZUFBUSxPQUFPLENBQUMsRUFBRTtBQUMzQixVQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ3RCLFlBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUNmLGlCQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzlCOztBQUVELGVBQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO09BQ2hELE1BQU07QUFDTCxlQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztPQUN0QjtLQUNGLE1BQU07QUFDTCxVQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixZQUFJLElBQUksR0FBRyxtQkFBWSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckMsWUFBSSxDQUFDLFdBQVcsR0FBRyx5QkFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQ3hCLE9BQU8sQ0FBQyxJQUFJLENBQ2IsQ0FBQztBQUNGLGVBQU8sR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztPQUMxQjs7QUFFRCxhQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDN0I7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJibG9jay1oZWxwZXItbWlzc2luZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFwcGVuZENvbnRleHRQYXRoLCBjcmVhdGVGcmFtZSwgaXNBcnJheSB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2Jsb2NrSGVscGVyTWlzc2luZycsIGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBsZXQgaW52ZXJzZSA9IG9wdGlvbnMuaW52ZXJzZSxcbiAgICAgIGZuID0gb3B0aW9ucy5mbjtcblxuICAgIGlmIChjb250ZXh0ID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gZm4odGhpcyk7XG4gICAgfSBlbHNlIGlmIChjb250ZXh0ID09PSBmYWxzZSB8fCBjb250ZXh0ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheShjb250ZXh0KSkge1xuICAgICAgaWYgKGNvbnRleHQubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAob3B0aW9ucy5pZHMpIHtcbiAgICAgICAgICBvcHRpb25zLmlkcyA9IFtvcHRpb25zLm5hbWVdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluc3RhbmNlLmhlbHBlcnMuZWFjaChjb250ZXh0LCBvcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7XG4gICAgICAgIGxldCBkYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKFxuICAgICAgICAgIG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCxcbiAgICAgICAgICBvcHRpb25zLm5hbWVcbiAgICAgICAgKTtcbiAgICAgICAgb3B0aW9ucyA9IHsgZGF0YTogZGF0YSB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm4oY29udGV4dCwgb3B0aW9ucyk7XG4gICAgfVxuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('each', function (context, options) {\n if (!options) {\n throw new _exception2['default']('Must pass iterator to #each');\n }\n\n var fn = options.fn,\n inverse = options.inverse,\n i = 0,\n ret = '',\n data = undefined,\n contextPath = undefined;\n\n if (options.data && options.ids) {\n contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.';\n }\n\n if (_utils.isFunction(context)) {\n context = context.call(this);\n }\n\n if (options.data) {\n data = _utils.createFrame(options.data);\n }\n\n function execIteration(field, index, last) {\n if (data) {\n data.key = field;\n data.index = index;\n data.first = index === 0;\n data.last = !!last;\n\n if (contextPath) {\n data.contextPath = contextPath + field;\n }\n }\n\n ret = ret + fn(context[field], {\n data: data,\n blockParams: _utils.blockParams([context[field], field], [contextPath + field, null])\n });\n }\n\n if (context && typeof context === 'object') {\n if (_utils.isArray(context)) {\n for (var j = context.length; i < j; i++) {\n if (i in context) {\n execIteration(i, i, i === context.length - 1);\n }\n }\n } else if (global.Symbol && context[global.Symbol.iterator]) {\n var newContext = [];\n var iterator = context[global.Symbol.iterator]();\n for (var it = iterator.next(); !it.done; it = iterator.next()) {\n newContext.push(it.value);\n }\n context = newContext;\n for (var j = context.length; i < j; i++) {\n execIteration(i, i, i === context.length - 1);\n }\n } else {\n (function () {\n var priorKey = undefined;\n\n Object.keys(context).forEach(function (key) {\n // We're running the iterations one step out of sync so we can detect\n // the last iteration without have to scan the object twice and create\n // an itermediate keys array.\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1);\n }\n priorKey = key;\n i++;\n });\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1, true);\n }\n })();\n }\n }\n\n if (i === 0) {\n ret = inverse(this);\n }\n\n return ret;\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvZWFjaC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O3FCQU1PLFVBQVU7O3lCQUNLLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVMsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUN6RCxRQUFJLENBQUMsT0FBTyxFQUFFO0FBQ1osWUFBTSwyQkFBYyw2QkFBNkIsQ0FBQyxDQUFDO0tBQ3BEOztBQUVELFFBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFO1FBQ2pCLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTztRQUN6QixDQUFDLEdBQUcsQ0FBQztRQUNMLEdBQUcsR0FBRyxFQUFFO1FBQ1IsSUFBSSxZQUFBO1FBQ0osV0FBVyxZQUFBLENBQUM7O0FBRWQsUUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUU7QUFDL0IsaUJBQVcsR0FDVCx5QkFBa0IsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztLQUNyRTs7QUFFRCxRQUFJLGtCQUFXLE9BQU8sQ0FBQyxFQUFFO0FBQ3ZCLGFBQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCOztBQUVELFFBQUksT0FBTyxDQUFDLElBQUksRUFBRTtBQUNoQixVQUFJLEdBQUcsbUJBQVksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2xDOztBQUVELGFBQVMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0FBQ3pDLFVBQUksSUFBSSxFQUFFO0FBQ1IsWUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFDakIsWUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDbkIsWUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLFlBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQzs7QUFFbkIsWUFBSSxXQUFXLEVBQUU7QUFDZixjQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsR0FBRyxLQUFLLENBQUM7U0FDeEM7T0FDRjs7QUFFRCxTQUFHLEdBQ0QsR0FBRyxHQUNILEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDakIsWUFBSSxFQUFFLElBQUk7QUFDVixtQkFBVyxFQUFFLG1CQUNYLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUN2QixDQUFDLFdBQVcsR0FBRyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQzVCO09BQ0YsQ0FBQyxDQUFDO0tBQ047O0FBRUQsUUFBSSxPQUFPLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFO0FBQzFDLFVBQUksZUFBUSxPQUFPLENBQUMsRUFBRTtBQUNwQixhQUFLLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN2QyxjQUFJLENBQUMsSUFBSSxPQUFPLEVBQUU7QUFDaEIseUJBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1dBQy9DO1NBQ0Y7T0FDRixNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRTtBQUMzRCxZQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7QUFDdEIsWUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztBQUNuRCxhQUFLLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRTtBQUM3RCxvQkFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDM0I7QUFDRCxlQUFPLEdBQUcsVUFBVSxDQUFDO0FBQ3JCLGFBQUssSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3ZDLHVCQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztTQUMvQztPQUNGLE1BQU07O0FBQ0wsY0FBSSxRQUFRLFlBQUEsQ0FBQzs7QUFFYixnQkFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQSxHQUFHLEVBQUk7Ozs7QUFJbEMsZ0JBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtBQUMxQiwyQkFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDaEM7QUFDRCxvQkFBUSxHQUFHLEdBQUcsQ0FBQztBQUNmLGFBQUMsRUFBRSxDQUFDO1dBQ0wsQ0FBQyxDQUFDO0FBQ0gsY0FBSSxRQUFRLEtBQUssU0FBUyxFQUFFO0FBQzFCLHlCQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7V0FDdEM7O09BQ0Y7S0FDRjs7QUFFRCxRQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDWCxTQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3JCOztBQUVELFdBQU8sR0FBRyxDQUFDO0dBQ1osQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoiZWFjaC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGFwcGVuZENvbnRleHRQYXRoLFxuICBibG9ja1BhcmFtcyxcbiAgY3JlYXRlRnJhbWUsXG4gIGlzQXJyYXksXG4gIGlzRnVuY3Rpb25cbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuLi9leGNlcHRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignZWFjaCcsIGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ011c3QgcGFzcyBpdGVyYXRvciB0byAjZWFjaCcpO1xuICAgIH1cblxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm4sXG4gICAgICBpbnZlcnNlID0gb3B0aW9ucy5pbnZlcnNlLFxuICAgICAgaSA9IDAsXG4gICAgICByZXQgPSAnJyxcbiAgICAgIGRhdGEsXG4gICAgICBjb250ZXh0UGF0aDtcblxuICAgIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5pZHMpIHtcbiAgICAgIGNvbnRleHRQYXRoID1cbiAgICAgICAgYXBwZW5kQ29udGV4dFBhdGgob3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoLCBvcHRpb25zLmlkc1swXSkgKyAnLic7XG4gICAgfVxuXG4gICAgaWYgKGlzRnVuY3Rpb24oY29udGV4dCkpIHtcbiAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNhbGwodGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZGF0YSkge1xuICAgICAgZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXhlY0l0ZXJhdGlvbihmaWVsZCwgaW5kZXgsIGxhc3QpIHtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIGRhdGEua2V5ID0gZmllbGQ7XG4gICAgICAgIGRhdGEuaW5kZXggPSBpbmRleDtcbiAgICAgICAgZGF0YS5maXJzdCA9IGluZGV4ID09PSAwO1xuICAgICAgICBkYXRhLmxhc3QgPSAhIWxhc3Q7XG5cbiAgICAgICAgaWYgKGNvbnRleHRQYXRoKSB7XG4gICAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGNvbnRleHRQYXRoICsgZmllbGQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0ID1cbiAgICAgICAgcmV0ICtcbiAgICAgICAgZm4oY29udGV4dFtmaWVsZF0sIHtcbiAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgIGJsb2NrUGFyYW1zOiBibG9ja1BhcmFtcyhcbiAgICAgICAgICAgIFtjb250ZXh0W2ZpZWxkXSwgZmllbGRdLFxuICAgICAgICAgICAgW2NvbnRleHRQYXRoICsgZmllbGQsIG51bGxdXG4gICAgICAgICAgKVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoY29udGV4dCAmJiB0eXBlb2YgY29udGV4dCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc0FycmF5KGNvbnRleHQpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSBjb250ZXh0Lmxlbmd0aDsgaSA8IGo7IGkrKykge1xuICAgICAgICAgIGlmIChpIGluIGNvbnRleHQpIHtcbiAgICAgICAgICAgIGV4ZWNJdGVyYXRpb24oaSwgaSwgaSA9PT0gY29udGV4dC5sZW5ndGggLSAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZ2xvYmFsLlN5bWJvbCAmJiBjb250ZXh0W2dsb2JhbC5TeW1ib2wuaXRlcmF0b3JdKSB7XG4gICAgICAgIGNvbnN0IG5ld0NvbnRleHQgPSBbXTtcbiAgICAgICAgY29uc3QgaXRlcmF0b3IgPSBjb250ZXh0W2dsb2JhbC5TeW1ib2wuaXRlcmF0b3JdKCk7XG4gICAgICAgIGZvciAobGV0IGl0ID0gaXRlcmF0b3IubmV4dCgpOyAhaXQuZG9uZTsgaXQgPSBpdGVyYXRvci5uZXh0KCkpIHtcbiAgICAgICAgICBuZXdDb250ZXh0LnB1c2goaXQudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRleHQgPSBuZXdDb250ZXh0O1xuICAgICAgICBmb3IgKGxldCBqID0gY29udGV4dC5sZW5ndGg7IGkgPCBqOyBpKyspIHtcbiAgICAgICAgICBleGVjSXRlcmF0aW9uKGksIGksIGkgPT09IGNvbnRleHQubGVuZ3RoIC0gMSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBwcmlvcktleTtcblxuICAgICAgICBPYmplY3Qua2V5cyhjb250ZXh0KS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgLy8gV2UncmUgcnVubmluZyB0aGUgaXRlcmF0aW9ucyBvbmUgc3RlcCBvdXQgb2Ygc3luYyBzbyB3ZSBjYW4gZGV0ZWN0XG4gICAgICAgICAgLy8gdGhlIGxhc3QgaXRlcmF0aW9uIHdpdGhvdXQgaGF2ZSB0byBzY2FuIHRoZSBvYmplY3QgdHdpY2UgYW5kIGNyZWF0ZVxuICAgICAgICAgIC8vIGFuIGl0ZXJtZWRpYXRlIGtleXMgYXJyYXkuXG4gICAgICAgICAgaWYgKHByaW9yS2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGV4ZWNJdGVyYXRpb24ocHJpb3JLZXksIGkgLSAxKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcHJpb3JLZXkgPSBrZXk7XG4gICAgICAgICAgaSsrO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHByaW9yS2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBleGVjSXRlcmF0aW9uKHByaW9yS2V5LCBpIC0gMSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgcmV0ID0gaW52ZXJzZSh0aGlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('helperMissing', function () /* [args, ]options */{\n if (arguments.length === 1) {\n // A missing field in a {{foo}} construct.\n return undefined;\n } else {\n // Someone is actually trying to call something, blow up.\n throw new _exception2['default']('Missing helper: \"' + arguments[arguments.length - 1].name + '\"');\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozt5QkFBc0IsY0FBYzs7OztxQkFFckIsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsaUNBQWdDO0FBQ3ZFLFFBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7O0FBRTFCLGFBQU8sU0FBUyxDQUFDO0tBQ2xCLE1BQU07O0FBRUwsWUFBTSwyQkFDSixtQkFBbUIsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUNqRSxDQUFDO0tBQ0g7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJoZWxwZXItbWlzc2luZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2hlbHBlck1pc3NpbmcnLCBmdW5jdGlvbigvKiBbYXJncywgXW9wdGlvbnMgKi8pIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgLy8gQSBtaXNzaW5nIGZpZWxkIGluIGEge3tmb299fSBjb25zdHJ1Y3QuXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTb21lb25lIGlzIGFjdHVhbGx5IHRyeWluZyB0byBjYWxsIHNvbWV0aGluZywgYmxvdyB1cC5cbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oXG4gICAgICAgICdNaXNzaW5nIGhlbHBlcjogXCInICsgYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXS5uYW1lICsgJ1wiJ1xuICAgICAgKTtcbiAgICB9XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('if', function (conditional, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#if requires exactly one argument');\n }\n if (_utils.isFunction(conditional)) {\n conditional = conditional.call(this);\n }\n\n // Default behavior is to render the positive path if the value is truthy and not empty.\n // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n if (!options.hash.includeZero && !conditional || _utils.isEmpty(conditional)) {\n return options.inverse(this);\n } else {\n return options.fn(this);\n }\n });\n\n instance.registerHelper('unless', function (conditional, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#unless requires exactly one argument');\n }\n return instance.helpers['if'].call(this, conditional, {\n fn: options.inverse,\n inverse: options.fn,\n hash: options.hash\n });\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaWYuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztxQkFBb0MsVUFBVTs7eUJBQ3hCLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVMsV0FBVyxFQUFFLE9BQU8sRUFBRTtBQUMzRCxRQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQ3pCLFlBQU0sMkJBQWMsbUNBQW1DLENBQUMsQ0FBQztLQUMxRDtBQUNELFFBQUksa0JBQVcsV0FBVyxDQUFDLEVBQUU7QUFDM0IsaUJBQVcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3RDOzs7OztBQUtELFFBQUksQUFBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsV0FBVyxJQUFLLGVBQVEsV0FBVyxDQUFDLEVBQUU7QUFDdkUsYUFBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCLE1BQU07QUFDTCxhQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDekI7R0FDRixDQUFDLENBQUM7O0FBRUgsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxXQUFXLEVBQUUsT0FBTyxFQUFFO0FBQy9ELFFBQUksU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7QUFDekIsWUFBTSwyQkFBYyx1Q0FBdUMsQ0FBQyxDQUFDO0tBQzlEO0FBQ0QsV0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQ3BELFFBQUUsRUFBRSxPQUFPLENBQUMsT0FBTztBQUNuQixhQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUU7QUFDbkIsVUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO0tBQ25CLENBQUMsQ0FBQztHQUNKLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6ImlmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNFbXB0eSwgaXNGdW5jdGlvbiB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2lmJywgZnVuY3Rpb24oY29uZGl0aW9uYWwsIG9wdGlvbnMpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCcjaWYgcmVxdWlyZXMgZXhhY3RseSBvbmUgYXJndW1lbnQnKTtcbiAgICB9XG4gICAgaWYgKGlzRnVuY3Rpb24oY29uZGl0aW9uYWwpKSB7XG4gICAgICBjb25kaXRpb25hbCA9IGNvbmRpdGlvbmFsLmNhbGwodGhpcyk7XG4gICAgfVxuXG4gICAgLy8gRGVmYXVsdCBiZWhhdmlvciBpcyB0byByZW5kZXIgdGhlIHBvc2l0aXZlIHBhdGggaWYgdGhlIHZhbHVlIGlzIHRydXRoeSBhbmQgbm90IGVtcHR5LlxuICAgIC8vIFRoZSBgaW5jbHVkZVplcm9gIG9wdGlvbiBtYXkgYmUgc2V0IHRvIHRyZWF0IHRoZSBjb25kdGlvbmFsIGFzIHB1cmVseSBub3QgZW1wdHkgYmFzZWQgb24gdGhlXG4gICAgLy8gYmVoYXZpb3Igb2YgaXNFbXB0eS4gRWZmZWN0aXZlbHkgdGhpcyBkZXRlcm1pbmVzIGlmIDAgaXMgaGFuZGxlZCBieSB0aGUgcG9zaXRpdmUgcGF0aCBvciBuZWdhdGl2ZS5cbiAgICBpZiAoKCFvcHRpb25zLmhhc2guaW5jbHVkZVplcm8gJiYgIWNvbmRpdGlvbmFsKSB8fCBpc0VtcHR5KGNvbmRpdGlvbmFsKSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuaW52ZXJzZSh0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuZm4odGhpcyk7XG4gICAgfVxuICB9KTtcblxuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcigndW5sZXNzJywgZnVuY3Rpb24oY29uZGl0aW9uYWwsIG9wdGlvbnMpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCcjdW5sZXNzIHJlcXVpcmVzIGV4YWN0bHkgb25lIGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIHJldHVybiBpbnN0YW5jZS5oZWxwZXJzWydpZiddLmNhbGwodGhpcywgY29uZGl0aW9uYWwsIHtcbiAgICAgIGZuOiBvcHRpb25zLmludmVyc2UsXG4gICAgICBpbnZlcnNlOiBvcHRpb25zLmZuLFxuICAgICAgaGFzaDogb3B0aW9ucy5oYXNoXG4gICAgfSk7XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n instance.registerHelper('log', function () /* message, options */{\n var args = [undefined],\n options = arguments[arguments.length - 1];\n for (var i = 0; i < arguments.length - 1; i++) {\n args.push(arguments[i]);\n }\n\n var level = 1;\n if (options.hash.level != null) {\n level = options.hash.level;\n } else if (options.data && options.data.level != null) {\n level = options.data.level;\n }\n args[0] = level;\n\n instance.log.apply(instance, args);\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsa0NBQWlDO0FBQzlELFFBQUksSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ3BCLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM1QyxTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDN0MsVUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN6Qjs7QUFFRCxRQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDZCxRQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtBQUM5QixXQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7S0FDNUIsTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO0FBQ3JELFdBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztLQUM1QjtBQUNELFFBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7O0FBRWhCLFlBQVEsQ0FBQyxHQUFHLE1BQUEsQ0FBWixRQUFRLEVBQVEsSUFBSSxDQUFDLENBQUM7R0FDdkIsQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoibG9nLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2xvZycsIGZ1bmN0aW9uKC8qIG1lc3NhZ2UsIG9wdGlvbnMgKi8pIHtcbiAgICBsZXQgYXJncyA9IFt1bmRlZmluZWRdLFxuICAgICAgb3B0aW9ucyA9IGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV07XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICBhcmdzLnB1c2goYXJndW1lbnRzW2ldKTtcbiAgICB9XG5cbiAgICBsZXQgbGV2ZWwgPSAxO1xuICAgIGlmIChvcHRpb25zLmhhc2gubGV2ZWwgIT0gbnVsbCkge1xuICAgICAgbGV2ZWwgPSBvcHRpb25zLmhhc2gubGV2ZWw7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5kYXRhLmxldmVsICE9IG51bGwpIHtcbiAgICAgIGxldmVsID0gb3B0aW9ucy5kYXRhLmxldmVsO1xuICAgIH1cbiAgICBhcmdzWzBdID0gbGV2ZWw7XG5cbiAgICBpbnN0YW5jZS5sb2coLi4uYXJncyk7XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n instance.registerHelper('lookup', function (obj, field, options) {\n if (!obj) {\n // Note for 5.0: Change to \"obj == null\" in 5.0\n return obj;\n }\n return options.lookupProperty(obj, field);\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9va3VwLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtBQUM5RCxRQUFJLENBQUMsR0FBRyxFQUFFOztBQUVSLGFBQU8sR0FBRyxDQUFDO0tBQ1o7QUFDRCxXQUFPLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0dBQzNDLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6Imxvb2t1cC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdsb29rdXAnLCBmdW5jdGlvbihvYmosIGZpZWxkLCBvcHRpb25zKSB7XG4gICAgaWYgKCFvYmopIHtcbiAgICAgIC8vIE5vdGUgZm9yIDUuMDogQ2hhbmdlIHRvIFwib2JqID09IG51bGxcIiBpbiA1LjBcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zLmxvb2t1cFByb3BlcnR5KG9iaiwgZmllbGQpO1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('with', function (context, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#with requires exactly one argument');\n }\n if (_utils.isFunction(context)) {\n context = context.call(this);\n }\n\n var fn = options.fn;\n\n if (!_utils.isEmpty(context)) {\n var data = options.data;\n if (options.data && options.ids) {\n data = _utils.createFrame(options.data);\n data.contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]);\n }\n\n return fn(context, {\n data: data,\n blockParams: _utils.blockParams([context], [data && data.contextPath])\n });\n } else {\n return options.inverse(this);\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvd2l0aC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O3FCQU1PLFVBQVU7O3lCQUNLLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVMsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUN6RCxRQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQ3pCLFlBQU0sMkJBQWMscUNBQXFDLENBQUMsQ0FBQztLQUM1RDtBQUNELFFBQUksa0JBQVcsT0FBTyxDQUFDLEVBQUU7QUFDdkIsYUFBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDOUI7O0FBRUQsUUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQzs7QUFFcEIsUUFBSSxDQUFDLGVBQVEsT0FBTyxDQUFDLEVBQUU7QUFDckIsVUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztBQUN4QixVQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixZQUFJLEdBQUcsbUJBQVksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pDLFlBQUksQ0FBQyxXQUFXLEdBQUcseUJBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7T0FDSDs7QUFFRCxhQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUU7QUFDakIsWUFBSSxFQUFFLElBQUk7QUFDVixtQkFBVyxFQUFFLG1CQUFZLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO09BQ2hFLENBQUMsQ0FBQztLQUNKLE1BQU07QUFDTCxhQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDOUI7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJ3aXRoLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYXBwZW5kQ29udGV4dFBhdGgsXG4gIGJsb2NrUGFyYW1zLFxuICBjcmVhdGVGcmFtZSxcbiAgaXNFbXB0eSxcbiAgaXNGdW5jdGlvblxufSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4uL2V4Y2VwdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCd3aXRoJywgZnVuY3Rpb24oY29udGV4dCwgb3B0aW9ucykge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoICE9IDIpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJyN3aXRoIHJlcXVpcmVzIGV4YWN0bHkgb25lIGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIGlmIChpc0Z1bmN0aW9uKGNvbnRleHQpKSB7XG4gICAgICBjb250ZXh0ID0gY29udGV4dC5jYWxsKHRoaXMpO1xuICAgIH1cblxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm47XG5cbiAgICBpZiAoIWlzRW1wdHkoY29udGV4dCkpIHtcbiAgICAgIGxldCBkYXRhID0gb3B0aW9ucy5kYXRhO1xuICAgICAgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmlkcykge1xuICAgICAgICBkYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKFxuICAgICAgICAgIG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCxcbiAgICAgICAgICBvcHRpb25zLmlkc1swXVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm4oY29udGV4dCwge1xuICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICBibG9ja1BhcmFtczogYmxvY2tQYXJhbXMoW2NvbnRleHRdLCBbZGF0YSAmJiBkYXRhLmNvbnRleHRQYXRoXSlcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5pbnZlcnNlKHRoaXMpO1xuICAgIH1cbiAgfSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.createNewLookupObject = createNewLookupObject;\n\nvar _utils = require('../utils');\n\n/**\n * Create a new object with \"null\"-prototype to avoid truthy results on prototype properties.\n * The resulting object can be used with \"object[property]\" to check if a property exists\n * @param {...object} sources a varargs parameter of source objects that will be merged\n * @returns {object}\n */\n\nfunction createNewLookupObject() {\n for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n return _utils.extend.apply(undefined, [Object.create(null)].concat(sources));\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL2NyZWF0ZS1uZXctbG9va3VwLW9iamVjdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztxQkFBdUIsVUFBVTs7Ozs7Ozs7O0FBUTFCLFNBQVMscUJBQXFCLEdBQWE7b0NBQVQsT0FBTztBQUFQLFdBQU87OztBQUM5QyxTQUFPLGdDQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQUssT0FBTyxFQUFDLENBQUM7Q0FDaEQiLCJmaWxlIjoiY3JlYXRlLW5ldy1sb29rdXAtb2JqZWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXh0ZW5kIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBvYmplY3Qgd2l0aCBcIm51bGxcIi1wcm90b3R5cGUgdG8gYXZvaWQgdHJ1dGh5IHJlc3VsdHMgb24gcHJvdG90eXBlIHByb3BlcnRpZXMuXG4gKiBUaGUgcmVzdWx0aW5nIG9iamVjdCBjYW4gYmUgdXNlZCB3aXRoIFwib2JqZWN0W3Byb3BlcnR5XVwiIHRvIGNoZWNrIGlmIGEgcHJvcGVydHkgZXhpc3RzXG4gKiBAcGFyYW0gey4uLm9iamVjdH0gc291cmNlcyBhIHZhcmFyZ3MgcGFyYW1ldGVyIG9mIHNvdXJjZSBvYmplY3RzIHRoYXQgd2lsbCBiZSBtZXJnZWRcbiAqIEByZXR1cm5zIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVOZXdMb29rdXBPYmplY3QoLi4uc291cmNlcykge1xuICByZXR1cm4gZXh0ZW5kKE9iamVjdC5jcmVhdGUobnVsbCksIC4uLnNvdXJjZXMpO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\nexports.createProtoAccessControl = createProtoAccessControl;\nexports.resultIsAllowed = resultIsAllowed;\nexports.resetLoggedProperties = resetLoggedProperties;\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _createNewLookupObject = require('./create-new-lookup-object');\n\nvar _logger = require('../logger');\n\nvar logger = _interopRequireWildcard(_logger);\n\nvar loggedProperties = Object.create(null);\n\nfunction createProtoAccessControl(runtimeOptions) {\n var defaultMethodWhiteList = Object.create(null);\n defaultMethodWhiteList['constructor'] = false;\n defaultMethodWhiteList['__defineGetter__'] = false;\n defaultMethodWhiteList['__defineSetter__'] = false;\n defaultMethodWhiteList['__lookupGetter__'] = false;\n\n var defaultPropertyWhiteList = Object.create(null);\n // eslint-disable-next-line no-proto\n defaultPropertyWhiteList['__proto__'] = false;\n\n return {\n properties: {\n whitelist: _createNewLookupObject.createNewLookupObject(defaultPropertyWhiteList, runtimeOptions.allowedProtoProperties),\n defaultValue: runtimeOptions.allowProtoPropertiesByDefault\n },\n methods: {\n whitelist: _createNewLookupObject.createNewLookupObject(defaultMethodWhiteList, runtimeOptions.allowedProtoMethods),\n defaultValue: runtimeOptions.allowProtoMethodsByDefault\n }\n };\n}\n\nfunction resultIsAllowed(result, protoAccessControl, propertyName) {\n if (typeof result === 'function') {\n return checkWhiteList(protoAccessControl.methods, propertyName);\n } else {\n return checkWhiteList(protoAccessControl.properties, propertyName);\n }\n}\n\nfunction checkWhiteList(protoAccessControlForType, propertyName) {\n if (protoAccessControlForType.whitelist[propertyName] !== undefined) {\n return protoAccessControlForType.whitelist[propertyName] === true;\n }\n if (protoAccessControlForType.defaultValue !== undefined) {\n return protoAccessControlForType.defaultValue;\n }\n logUnexpecedPropertyAccessOnce(propertyName);\n return false;\n}\n\nfunction logUnexpecedPropertyAccessOnce(propertyName) {\n if (loggedProperties[propertyName] !== true) {\n loggedProperties[propertyName] = true;\n logger.log('error', 'Handlebars: Access has been denied to resolve the property \"' + propertyName + '\" because it is not an \"own property\" of its parent.\\n' + 'You can add a runtime option to disable the check or this warning:\\n' + 'See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details');\n }\n}\n\nfunction resetLoggedProperties() {\n Object.keys(loggedProperties).forEach(function (propertyName) {\n delete loggedProperties[propertyName];\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL3Byb3RvLWFjY2Vzcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O3FDQUFzQyw0QkFBNEI7O3NCQUMxQyxXQUFXOztJQUF2QixNQUFNOztBQUVsQixJQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7O0FBRXRDLFNBQVMsd0JBQXdCLENBQUMsY0FBYyxFQUFFO0FBQ3ZELE1BQUksc0JBQXNCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqRCx3QkFBc0IsQ0FBQyxhQUFhLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDOUMsd0JBQXNCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDbkQsd0JBQXNCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDbkQsd0JBQXNCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxLQUFLLENBQUM7O0FBRW5ELE1BQUksd0JBQXdCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzs7QUFFbkQsMEJBQXdCLENBQUMsV0FBVyxDQUFDLEdBQUcsS0FBSyxDQUFDOztBQUU5QyxTQUFPO0FBQ0wsY0FBVSxFQUFFO0FBQ1YsZUFBUyxFQUFFLDZDQUNULHdCQUF3QixFQUN4QixjQUFjLENBQUMsc0JBQXNCLENBQ3RDO0FBQ0Qsa0JBQVksRUFBRSxjQUFjLENBQUMsNkJBQTZCO0tBQzNEO0FBQ0QsV0FBTyxFQUFFO0FBQ1AsZUFBUyxFQUFFLDZDQUNULHNCQUFzQixFQUN0QixjQUFjLENBQUMsbUJBQW1CLENBQ25DO0FBQ0Qsa0JBQVksRUFBRSxjQUFjLENBQUMsMEJBQTBCO0tBQ3hEO0dBQ0YsQ0FBQztDQUNIOztBQUVNLFNBQVMsZUFBZSxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUU7QUFDeEUsTUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLEVBQUU7QUFDaEMsV0FBTyxjQUFjLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO0dBQ2pFLE1BQU07QUFDTCxXQUFPLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7R0FDcEU7Q0FDRjs7QUFFRCxTQUFTLGNBQWMsQ0FBQyx5QkFBeUIsRUFBRSxZQUFZLEVBQUU7QUFDL0QsTUFBSSx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssU0FBUyxFQUFFO0FBQ25FLFdBQU8seUJBQXlCLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksQ0FBQztHQUNuRTtBQUNELE1BQUkseUJBQXlCLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBRTtBQUN4RCxXQUFPLHlCQUF5QixDQUFDLFlBQVksQ0FBQztHQUMvQztBQUNELGdDQUE4QixDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQzdDLFNBQU8sS0FBSyxDQUFDO0NBQ2Q7O0FBRUQsU0FBUyw4QkFBOEIsQ0FBQyxZQUFZLEVBQUU7QUFDcEQsTUFBSSxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsS0FBSyxJQUFJLEVBQUU7QUFDM0Msb0JBQWdCLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3RDLFVBQU0sQ0FBQyxHQUFHLENBQ1IsT0FBTyxFQUNQLGlFQUErRCxZQUFZLG9JQUNILG9IQUMyQyxDQUNwSCxDQUFDO0dBQ0g7Q0FDRjs7QUFFTSxTQUFTLHFCQUFxQixHQUFHO0FBQ3RDLFFBQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQSxZQUFZLEVBQUk7QUFDcEQsV0FBTyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztHQUN2QyxDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJwcm90by1hY2Nlc3MuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVOZXdMb29rdXBPYmplY3QgfSBmcm9tICcuL2NyZWF0ZS1uZXctbG9va3VwLW9iamVjdCc7XG5pbXBvcnQgKiBhcyBsb2dnZXIgZnJvbSAnLi4vbG9nZ2VyJztcblxuY29uc3QgbG9nZ2VkUHJvcGVydGllcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcm90b0FjY2Vzc0NvbnRyb2wocnVudGltZU9wdGlvbnMpIHtcbiAgbGV0IGRlZmF1bHRNZXRob2RXaGl0ZUxpc3QgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBkZWZhdWx0TWV0aG9kV2hpdGVMaXN0Wydjb25zdHJ1Y3RvciddID0gZmFsc2U7XG4gIGRlZmF1bHRNZXRob2RXaGl0ZUxpc3RbJ19fZGVmaW5lR2V0dGVyX18nXSA9IGZhbHNlO1xuICBkZWZhdWx0TWV0aG9kV2hpdGVMaXN0WydfX2RlZmluZVNldHRlcl9fJ10gPSBmYWxzZTtcbiAgZGVmYXVsdE1ldGhvZFdoaXRlTGlzdFsnX19sb29rdXBHZXR0ZXJfXyddID0gZmFsc2U7XG5cbiAgbGV0IGRlZmF1bHRQcm9wZXJ0eVdoaXRlTGlzdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b1xuICBkZWZhdWx0UHJvcGVydHlXaGl0ZUxpc3RbJ19fcHJvdG9fXyddID0gZmFsc2U7XG5cbiAgcmV0dXJuIHtcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICB3aGl0ZWxpc3Q6IGNyZWF0ZU5ld0xvb2t1cE9iamVjdChcbiAgICAgICAgZGVmYXVsdFByb3BlcnR5V2hpdGVMaXN0LFxuICAgICAgICBydW50aW1lT3B0aW9ucy5hbGxvd2VkUHJvdG9Qcm9wZXJ0aWVzXG4gICAgICApLFxuICAgICAgZGVmYXVsdFZhbHVlOiBydW50aW1lT3B0aW9ucy5hbGxvd1Byb3RvUHJvcGVydGllc0J5RGVmYXVsdFxuICAgIH0sXG4gICAgbWV0aG9kczoge1xuICAgICAgd2hpdGVsaXN0OiBjcmVhdGVOZXdMb29rdXBPYmplY3QoXG4gICAgICAgIGRlZmF1bHRNZXRob2RXaGl0ZUxpc3QsXG4gICAgICAgIHJ1bnRpbWVPcHRpb25zLmFsbG93ZWRQcm90b01ldGhvZHNcbiAgICAgICksXG4gICAgICBkZWZhdWx0VmFsdWU6IHJ1bnRpbWVPcHRpb25zLmFsbG93UHJvdG9NZXRob2RzQnlEZWZhdWx0XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzdWx0SXNBbGxvd2VkKHJlc3VsdCwgcHJvdG9BY2Nlc3NDb250cm9sLCBwcm9wZXJ0eU5hbWUpIHtcbiAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gY2hlY2tXaGl0ZUxpc3QocHJvdG9BY2Nlc3NDb250cm9sLm1ldGhvZHMsIHByb3BlcnR5TmFtZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNoZWNrV2hpdGVMaXN0KHByb3RvQWNjZXNzQ29udHJvbC5wcm9wZXJ0aWVzLCBwcm9wZXJ0eU5hbWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrV2hpdGVMaXN0KHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUsIHByb3BlcnR5TmFtZSkge1xuICBpZiAocHJvdG9BY2Nlc3NDb250cm9sRm9yVHlwZS53aGl0ZWxpc3RbcHJvcGVydHlOYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUud2hpdGVsaXN0W3Byb3BlcnR5TmFtZV0gPT09IHRydWU7XG4gIH1cbiAgaWYgKHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gcHJvdG9BY2Nlc3NDb250cm9sRm9yVHlwZS5kZWZhdWx0VmFsdWU7XG4gIH1cbiAgbG9nVW5leHBlY2VkUHJvcGVydHlBY2Nlc3NPbmNlKHByb3BlcnR5TmFtZSk7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gbG9nVW5leHBlY2VkUHJvcGVydHlBY2Nlc3NPbmNlKHByb3BlcnR5TmFtZSkge1xuICBpZiAobG9nZ2VkUHJvcGVydGllc1twcm9wZXJ0eU5hbWVdICE9PSB0cnVlKSB7XG4gICAgbG9nZ2VkUHJvcGVydGllc1twcm9wZXJ0eU5hbWVdID0gdHJ1ZTtcbiAgICBsb2dnZXIubG9nKFxuICAgICAgJ2Vycm9yJyxcbiAgICAgIGBIYW5kbGViYXJzOiBBY2Nlc3MgaGFzIGJlZW4gZGVuaWVkIHRvIHJlc29sdmUgdGhlIHByb3BlcnR5IFwiJHtwcm9wZXJ0eU5hbWV9XCIgYmVjYXVzZSBpdCBpcyBub3QgYW4gXCJvd24gcHJvcGVydHlcIiBvZiBpdHMgcGFyZW50LlxcbmAgK1xuICAgICAgICBgWW91IGNhbiBhZGQgYSBydW50aW1lIG9wdGlvbiB0byBkaXNhYmxlIHRoZSBjaGVjayBvciB0aGlzIHdhcm5pbmc6XFxuYCArXG4gICAgICAgIGBTZWUgaHR0cHM6Ly9oYW5kbGViYXJzanMuY29tL2FwaS1yZWZlcmVuY2UvcnVudGltZS1vcHRpb25zLmh0bWwjb3B0aW9ucy10by1jb250cm9sLXByb3RvdHlwZS1hY2Nlc3MgZm9yIGRldGFpbHNgXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRMb2dnZWRQcm9wZXJ0aWVzKCkge1xuICBPYmplY3Qua2V5cyhsb2dnZWRQcm9wZXJ0aWVzKS5mb3JFYWNoKHByb3BlcnR5TmFtZSA9PiB7XG4gICAgZGVsZXRlIGxvZ2dlZFByb3BlcnRpZXNbcHJvcGVydHlOYW1lXTtcbiAgfSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.wrapHelper = wrapHelper;\n\nfunction wrapHelper(helper, transformOptionsFn) {\n if (typeof helper !== 'function') {\n // This should not happen, but apparently it does in https://github.com/wycats/handlebars.js/issues/1639\n // We try to make the wrapper least-invasive by not wrapping it, if the helper is not a function.\n return helper;\n }\n var wrapper = function wrapper() /* dynamic arguments */{\n var options = arguments[arguments.length - 1];\n arguments[arguments.length - 1] = transformOptionsFn(options);\n return helper.apply(this, arguments);\n };\n return wrapper;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL3dyYXBIZWxwZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTyxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLEVBQUU7QUFDckQsTUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLEVBQUU7OztBQUdoQyxXQUFPLE1BQU0sQ0FBQztHQUNmO0FBQ0QsTUFBSSxPQUFPLEdBQUcsU0FBVixPQUFPLDBCQUFxQztBQUM5QyxRQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNoRCxhQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM5RCxXQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0dBQ3RDLENBQUM7QUFDRixTQUFPLE9BQU8sQ0FBQztDQUNoQiIsImZpbGUiOiJ3cmFwSGVscGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHdyYXBIZWxwZXIoaGVscGVyLCB0cmFuc2Zvcm1PcHRpb25zRm4pIHtcbiAgaWYgKHR5cGVvZiBoZWxwZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBUaGlzIHNob3VsZCBub3QgaGFwcGVuLCBidXQgYXBwYXJlbnRseSBpdCBkb2VzIGluIGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9pc3N1ZXMvMTYzOVxuICAgIC8vIFdlIHRyeSB0byBtYWtlIHRoZSB3cmFwcGVyIGxlYXN0LWludmFzaXZlIGJ5IG5vdCB3cmFwcGluZyBpdCwgaWYgdGhlIGhlbHBlciBpcyBub3QgYSBmdW5jdGlvbi5cbiAgICByZXR1cm4gaGVscGVyO1xuICB9XG4gIGxldCB3cmFwcGVyID0gZnVuY3Rpb24oLyogZHluYW1pYyBhcmd1bWVudHMgKi8pIHtcbiAgICBjb25zdCBvcHRpb25zID0gYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXTtcbiAgICBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdID0gdHJhbnNmb3JtT3B0aW9uc0ZuKG9wdGlvbnMpO1xuICAgIHJldHVybiBoZWxwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfTtcbiAgcmV0dXJuIHdyYXBwZXI7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('./utils');\n\nvar logger = {\n methodMap: ['debug', 'info', 'warn', 'error'],\n level: 'info',\n\n // Maps a given level value to the `methodMap` indexes above.\n lookupLevel: function lookupLevel(level) {\n if (typeof level === 'string') {\n var levelMap = _utils.indexOf(logger.methodMap, level.toLowerCase());\n if (levelMap >= 0) {\n level = levelMap;\n } else {\n level = parseInt(level, 10);\n }\n }\n\n return level;\n },\n\n // Can be overridden in the host environment\n log: function log(level) {\n level = logger.lookupLevel(level);\n\n if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {\n var method = logger.methodMap[level];\n // eslint-disable-next-line no-console\n if (!console[method]) {\n method = 'log';\n }\n\n for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n message[_key - 1] = arguments[_key];\n }\n\n console[method].apply(console, message); // eslint-disable-line no-console\n }\n }\n};\n\nexports['default'] = logger;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2xvZ2dlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O3FCQUF3QixTQUFTOztBQUVqQyxJQUFJLE1BQU0sR0FBRztBQUNYLFdBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQztBQUM3QyxPQUFLLEVBQUUsTUFBTTs7O0FBR2IsYUFBVyxFQUFFLHFCQUFTLEtBQUssRUFBRTtBQUMzQixRQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtBQUM3QixVQUFJLFFBQVEsR0FBRyxlQUFRLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDOUQsVUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFO0FBQ2pCLGFBQUssR0FBRyxRQUFRLENBQUM7T0FDbEIsTUFBTTtBQUNMLGFBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO09BQzdCO0tBQ0Y7O0FBRUQsV0FBTyxLQUFLLENBQUM7R0FDZDs7O0FBR0QsS0FBRyxFQUFFLGFBQVMsS0FBSyxFQUFjO0FBQy9CLFNBQUssR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDOztBQUVsQyxRQUNFLE9BQU8sT0FBTyxLQUFLLFdBQVcsSUFDOUIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxFQUN6QztBQUNBLFVBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7O0FBRXJDLFVBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDcEIsY0FBTSxHQUFHLEtBQUssQ0FBQztPQUNoQjs7d0NBWG1CLE9BQU87QUFBUCxlQUFPOzs7QUFZM0IsYUFBTyxDQUFDLE1BQU0sT0FBQyxDQUFmLE9BQU8sRUFBWSxPQUFPLENBQUMsQ0FBQztLQUM3QjtHQUNGO0NBQ0YsQ0FBQzs7cUJBRWEsTUFBTSIsImZpbGUiOiJsb2dnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmRleE9mIH0gZnJvbSAnLi91dGlscyc7XG5cbmxldCBsb2dnZXIgPSB7XG4gIG1ldGhvZE1hcDogWydkZWJ1ZycsICdpbmZvJywgJ3dhcm4nLCAnZXJyb3InXSxcbiAgbGV2ZWw6ICdpbmZvJyxcblxuICAvLyBNYXBzIGEgZ2l2ZW4gbGV2ZWwgdmFsdWUgdG8gdGhlIGBtZXRob2RNYXBgIGluZGV4ZXMgYWJvdmUuXG4gIGxvb2t1cExldmVsOiBmdW5jdGlvbihsZXZlbCkge1xuICAgIGlmICh0eXBlb2YgbGV2ZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICBsZXQgbGV2ZWxNYXAgPSBpbmRleE9mKGxvZ2dlci5tZXRob2RNYXAsIGxldmVsLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgaWYgKGxldmVsTWFwID49IDApIHtcbiAgICAgICAgbGV2ZWwgPSBsZXZlbE1hcDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldmVsID0gcGFyc2VJbnQobGV2ZWwsIDEwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGV2ZWw7XG4gIH0sXG5cbiAgLy8gQ2FuIGJlIG92ZXJyaWRkZW4gaW4gdGhlIGhvc3QgZW52aXJvbm1lbnRcbiAgbG9nOiBmdW5jdGlvbihsZXZlbCwgLi4ubWVzc2FnZSkge1xuICAgIGxldmVsID0gbG9nZ2VyLmxvb2t1cExldmVsKGxldmVsKTtcblxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgbG9nZ2VyLmxvb2t1cExldmVsKGxvZ2dlci5sZXZlbCkgPD0gbGV2ZWxcbiAgICApIHtcbiAgICAgIGxldCBtZXRob2QgPSBsb2dnZXIubWV0aG9kTWFwW2xldmVsXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBpZiAoIWNvbnNvbGVbbWV0aG9kXSkge1xuICAgICAgICBtZXRob2QgPSAnbG9nJztcbiAgICAgIH1cbiAgICAgIGNvbnNvbGVbbWV0aG9kXSguLi5tZXNzYWdlKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2dnZXI7XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (Handlebars) {\n /* istanbul ignore next */\n var root = typeof global !== 'undefined' ? global : window,\n $Handlebars = root.Handlebars;\n /* istanbul ignore next */\n Handlebars.noConflict = function () {\n if (root.Handlebars === Handlebars) {\n root.Handlebars = $Handlebars;\n }\n return Handlebars;\n };\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL25vLWNvbmZsaWN0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxVQUFVLEVBQUU7O0FBRWxDLE1BQUksSUFBSSxHQUFHLE9BQU8sTUFBTSxLQUFLLFdBQVcsR0FBRyxNQUFNLEdBQUcsTUFBTTtNQUN4RCxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQzs7QUFFaEMsWUFBVSxDQUFDLFVBQVUsR0FBRyxZQUFXO0FBQ2pDLFFBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUU7QUFDbEMsVUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUM7S0FDL0I7QUFDRCxXQUFPLFVBQVUsQ0FBQztHQUNuQixDQUFDO0NBQ0giLCJmaWxlIjoibm8tY29uZmxpY3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihIYW5kbGViYXJzKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGxldCByb290ID0gdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWwgOiB3aW5kb3csXG4gICAgJEhhbmRsZWJhcnMgPSByb290LkhhbmRsZWJhcnM7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIEhhbmRsZWJhcnMubm9Db25mbGljdCA9IGZ1bmN0aW9uKCkge1xuICAgIGlmIChyb290LkhhbmRsZWJhcnMgPT09IEhhbmRsZWJhcnMpIHtcbiAgICAgIHJvb3QuSGFuZGxlYmFycyA9ICRIYW5kbGViYXJzO1xuICAgIH1cbiAgICByZXR1cm4gSGFuZGxlYmFycztcbiAgfTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nexports.checkRevision = checkRevision;\nexports.template = template;\nexports.wrapProgram = wrapProgram;\nexports.resolvePartial = resolvePartial;\nexports.invokePartial = invokePartial;\nexports.noop = noop;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _utils = require('./utils');\n\nvar Utils = _interopRequireWildcard(_utils);\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _base = require('./base');\n\nvar _helpers = require('./helpers');\n\nvar _internalWrapHelper = require('./internal/wrapHelper');\n\nvar _internalProtoAccess = require('./internal/proto-access');\n\nfunction checkRevision(compilerInfo) {\n var compilerRevision = compilerInfo && compilerInfo[0] || 1,\n currentRevision = _base.COMPILER_REVISION;\n\n if (compilerRevision >= _base.LAST_COMPATIBLE_COMPILER_REVISION && compilerRevision <= _base.COMPILER_REVISION) {\n return;\n }\n\n if (compilerRevision < _base.LAST_COMPATIBLE_COMPILER_REVISION) {\n var runtimeVersions = _base.REVISION_CHANGES[currentRevision],\n compilerVersions = _base.REVISION_CHANGES[compilerRevision];\n throw new _exception2['default']('Template was precompiled with an older version of Handlebars than the current runtime. ' + 'Please update your precompiler to a newer version (' + runtimeVersions + ') or downgrade your runtime to an older version (' + compilerVersions + ').');\n } else {\n // Use the embedded version info since the runtime doesn't know about this revision yet\n throw new _exception2['default']('Template was precompiled with a newer version of Handlebars than the current runtime. ' + 'Please update your runtime to a newer version (' + compilerInfo[1] + ').');\n }\n}\n\nfunction template(templateSpec, env) {\n /* istanbul ignore next */\n if (!env) {\n throw new _exception2['default']('No environment passed to template');\n }\n if (!templateSpec || !templateSpec.main) {\n throw new _exception2['default']('Unknown template object: ' + typeof templateSpec);\n }\n\n templateSpec.main.decorator = templateSpec.main_d;\n\n // Note: Using env.VM references rather than local var references throughout this section to allow\n // for external users to override these as pseudo-supported APIs.\n env.VM.checkRevision(templateSpec.compiler);\n\n // backwards compatibility for precompiled templates with compiler-version 7 (<4.3.0)\n var templateWasPrecompiledWithCompilerV7 = templateSpec.compiler && templateSpec.compiler[0] === 7;\n\n function invokePartialWrapper(partial, context, options) {\n if (options.hash) {\n context = Utils.extend({}, context, options.hash);\n if (options.ids) {\n options.ids[0] = true;\n }\n }\n partial = env.VM.resolvePartial.call(this, partial, context, options);\n\n var extendedOptions = Utils.extend({}, options, {\n hooks: this.hooks,\n protoAccessControl: this.protoAccessControl\n });\n\n var result = env.VM.invokePartial.call(this, partial, context, extendedOptions);\n\n if (result == null && env.compile) {\n options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);\n result = options.partials[options.name](context, extendedOptions);\n }\n if (result != null) {\n if (options.indent) {\n var lines = result.split('\\n');\n for (var i = 0, l = lines.length; i < l; i++) {\n if (!lines[i] && i + 1 === l) {\n break;\n }\n\n lines[i] = options.indent + lines[i];\n }\n result = lines.join('\\n');\n }\n return result;\n } else {\n throw new _exception2['default']('The partial ' + options.name + ' could not be compiled when running in runtime-only mode');\n }\n }\n\n // Just add water\n var container = {\n strict: function strict(obj, name, loc) {\n if (!obj || !(name in obj)) {\n throw new _exception2['default']('\"' + name + '\" not defined in ' + obj, {\n loc: loc\n });\n }\n return container.lookupProperty(obj, name);\n },\n lookupProperty: function lookupProperty(parent, propertyName) {\n var result = parent[propertyName];\n if (result == null) {\n return result;\n }\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return result;\n }\n\n if (_internalProtoAccess.resultIsAllowed(result, container.protoAccessControl, propertyName)) {\n return result;\n }\n return undefined;\n },\n lookup: function lookup(depths, name) {\n var len = depths.length;\n for (var i = 0; i < len; i++) {\n var result = depths[i] && container.lookupProperty(depths[i], name);\n if (result != null) {\n return depths[i][name];\n }\n }\n },\n lambda: function lambda(current, context) {\n return typeof current === 'function' ? current.call(context) : current;\n },\n\n escapeExpression: Utils.escapeExpression,\n invokePartial: invokePartialWrapper,\n\n fn: function fn(i) {\n var ret = templateSpec[i];\n ret.decorator = templateSpec[i + '_d'];\n return ret;\n },\n\n programs: [],\n program: function program(i, data, declaredBlockParams, blockParams, depths) {\n var programWrapper = this.programs[i],\n fn = this.fn(i);\n if (data || depths || blockParams || declaredBlockParams) {\n programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths);\n } else if (!programWrapper) {\n programWrapper = this.programs[i] = wrapProgram(this, i, fn);\n }\n return programWrapper;\n },\n\n data: function data(value, depth) {\n while (value && depth--) {\n value = value._parent;\n }\n return value;\n },\n mergeIfNeeded: function mergeIfNeeded(param, common) {\n var obj = param || common;\n\n if (param && common && param !== common) {\n obj = Utils.extend({}, common, param);\n }\n\n return obj;\n },\n // An empty object to use as replacement for null-contexts\n nullContext: Object.seal({}),\n\n noop: env.VM.noop,\n compilerInfo: templateSpec.compiler\n };\n\n function ret(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var data = options.data;\n\n ret._setup(options);\n if (!options.partial && templateSpec.useData) {\n data = initData(context, data);\n }\n var depths = undefined,\n blockParams = templateSpec.useBlockParams ? [] : undefined;\n if (templateSpec.useDepths) {\n if (options.depths) {\n depths = context != options.depths[0] ? [context].concat(options.depths) : options.depths;\n } else {\n depths = [context];\n }\n }\n\n function main(context /*, options*/) {\n return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths);\n }\n\n main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams);\n return main(context, options);\n }\n\n ret.isTop = true;\n\n ret._setup = function (options) {\n if (!options.partial) {\n var mergedHelpers = Utils.extend({}, env.helpers, options.helpers);\n wrapHelpersToPassLookupProperty(mergedHelpers, container);\n container.helpers = mergedHelpers;\n\n if (templateSpec.usePartial) {\n // Use mergeIfNeeded here to prevent compiling global partials multiple times\n container.partials = container.mergeIfNeeded(options.partials, env.partials);\n }\n if (templateSpec.usePartial || templateSpec.useDecorators) {\n container.decorators = Utils.extend({}, env.decorators, options.decorators);\n }\n\n container.hooks = {};\n container.protoAccessControl = _internalProtoAccess.createProtoAccessControl(options);\n\n var keepHelperInHelpers = options.allowCallsToHelperMissing || templateWasPrecompiledWithCompilerV7;\n _helpers.moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);\n _helpers.moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);\n } else {\n container.protoAccessControl = options.protoAccessControl; // internal option\n container.helpers = options.helpers;\n container.partials = options.partials;\n container.decorators = options.decorators;\n container.hooks = options.hooks;\n }\n };\n\n ret._child = function (i, data, blockParams, depths) {\n if (templateSpec.useBlockParams && !blockParams) {\n throw new _exception2['default']('must pass block params');\n }\n if (templateSpec.useDepths && !depths) {\n throw new _exception2['default']('must pass parent depths');\n }\n\n return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths);\n };\n return ret;\n}\n\nfunction wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) {\n function prog(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var currentDepths = depths;\n if (depths && context != depths[0] && !(context === container.nullContext && depths[0] === null)) {\n currentDepths = [context].concat(depths);\n }\n\n return fn(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), currentDepths);\n }\n\n prog = executeDecorators(fn, prog, container, depths, data, blockParams);\n\n prog.program = i;\n prog.depth = depths ? depths.length : 0;\n prog.blockParams = declaredBlockParams || 0;\n return prog;\n}\n\n/**\n * This is currently part of the official API, therefore implementation details should not be changed.\n */\n\nfunction resolvePartial(partial, context, options) {\n if (!partial) {\n if (options.name === '@partial-block') {\n partial = options.data['partial-block'];\n } else {\n partial = options.partials[options.name];\n }\n } else if (!partial.call && !options.name) {\n // This is a dynamic partial that returned a string\n options.name = partial;\n partial = options.partials[partial];\n }\n return partial;\n}\n\nfunction invokePartial(partial, context, options) {\n // Use the current closure context to save the partial-block if this partial\n var currentPartialBlock = options.data && options.data['partial-block'];\n options.partial = true;\n if (options.ids) {\n options.data.contextPath = options.ids[0] || options.data.contextPath;\n }\n\n var partialBlock = undefined;\n if (options.fn && options.fn !== noop) {\n (function () {\n options.data = _base.createFrame(options.data);\n // Wrapper function to get access to currentPartialBlock from the closure\n var fn = options.fn;\n partialBlock = options.data['partial-block'] = function partialBlockWrapper(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n // Restore the partial-block from the closure for the execution of the block\n // i.e. the part inside the block of the partial call.\n options.data = _base.createFrame(options.data);\n options.data['partial-block'] = currentPartialBlock;\n return fn(context, options);\n };\n if (fn.partials) {\n options.partials = Utils.extend({}, options.partials, fn.partials);\n }\n })();\n }\n\n if (partial === undefined && partialBlock) {\n partial = partialBlock;\n }\n\n if (partial === undefined) {\n throw new _exception2['default']('The partial ' + options.name + ' could not be found');\n } else if (partial instanceof Function) {\n return partial(context, options);\n }\n}\n\nfunction noop() {\n return '';\n}\n\nfunction initData(context, data) {\n if (!data || !('root' in data)) {\n data = data ? _base.createFrame(data) : {};\n data.root = context;\n }\n return data;\n}\n\nfunction executeDecorators(fn, prog, container, depths, data, blockParams) {\n if (fn.decorator) {\n var props = {};\n prog = fn.decorator(prog, props, container, depths && depths[0], data, blockParams, depths);\n Utils.extend(prog, props);\n }\n return prog;\n}\n\nfunction wrapHelpersToPassLookupProperty(mergedHelpers, container) {\n Object.keys(mergedHelpers).forEach(function (helperName) {\n var helper = mergedHelpers[helperName];\n mergedHelpers[helperName] = passLookupPropertyOption(helper, container);\n });\n}\n\nfunction passLookupPropertyOption(helper, container) {\n var lookupProperty = container.lookupProperty;\n return _internalWrapHelper.wrapHelper(helper, function (options) {\n return Utils.extend({ lookupProperty: lookupProperty }, options);\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3J1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7cUJBQXVCLFNBQVM7O0lBQXBCLEtBQUs7O3lCQUNLLGFBQWE7Ozs7b0JBTTVCLFFBQVE7O3VCQUNtQixXQUFXOztrQ0FDbEIsdUJBQXVCOzttQ0FJM0MseUJBQXlCOztBQUV6QixTQUFTLGFBQWEsQ0FBQyxZQUFZLEVBQUU7QUFDMUMsTUFBTSxnQkFBZ0IsR0FBRyxBQUFDLFlBQVksSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUssQ0FBQztNQUM3RCxlQUFlLDBCQUFvQixDQUFDOztBQUV0QyxNQUNFLGdCQUFnQiwyQ0FBcUMsSUFDckQsZ0JBQWdCLDJCQUFxQixFQUNyQztBQUNBLFdBQU87R0FDUjs7QUFFRCxNQUFJLGdCQUFnQiwwQ0FBb0MsRUFBRTtBQUN4RCxRQUFNLGVBQWUsR0FBRyx1QkFBaUIsZUFBZSxDQUFDO1FBQ3ZELGdCQUFnQixHQUFHLHVCQUFpQixnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3hELFVBQU0sMkJBQ0oseUZBQXlGLEdBQ3ZGLHFEQUFxRCxHQUNyRCxlQUFlLEdBQ2YsbURBQW1ELEdBQ25ELGdCQUFnQixHQUNoQixJQUFJLENBQ1AsQ0FBQztHQUNILE1BQU07O0FBRUwsVUFBTSwyQkFDSix3RkFBd0YsR0FDdEYsaURBQWlELEdBQ2pELFlBQVksQ0FBQyxDQUFDLENBQUMsR0FDZixJQUFJLENBQ1AsQ0FBQztHQUNIO0NBQ0Y7O0FBRU0sU0FBUyxRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTs7QUFFMUMsTUFBSSxDQUFDLEdBQUcsRUFBRTtBQUNSLFVBQU0sMkJBQWMsbUNBQW1DLENBQUMsQ0FBQztHQUMxRDtBQUNELE1BQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFO0FBQ3ZDLFVBQU0sMkJBQWMsMkJBQTJCLEdBQUcsT0FBTyxZQUFZLENBQUMsQ0FBQztH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QUFDbkMsV0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsY0FBYyxFQUFkLGNBQWMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0dBQ2xELENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6InJ1bnRpbWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBVdGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi9leGNlcHRpb24nO1xuaW1wb3J0IHtcbiAgQ09NUElMRVJfUkVWSVNJT04sXG4gIGNyZWF0ZUZyYW1lLFxuICBMQVNUX0NPTVBBVElCTEVfQ09NUElMRVJfUkVWSVNJT04sXG4gIFJFVklTSU9OX0NIQU5HRVNcbn0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IG1vdmVIZWxwZXJUb0hvb2tzIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IHdyYXBIZWxwZXIgfSBmcm9tICcuL2ludGVybmFsL3dyYXBIZWxwZXInO1xuaW1wb3J0IHtcbiAgY3JlYXRlUHJvdG9BY2Nlc3NDb250cm9sLFxuICByZXN1bHRJc0FsbG93ZWRcbn0gZnJvbSAnLi9pbnRlcm5hbC9wcm90by1hY2Nlc3MnO1xuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tSZXZpc2lvbihjb21waWxlckluZm8pIHtcbiAgY29uc3QgY29tcGlsZXJSZXZpc2lvbiA9IChjb21waWxlckluZm8gJiYgY29tcGlsZXJJbmZvWzBdKSB8fCAxLFxuICAgIGN1cnJlbnRSZXZpc2lvbiA9IENPTVBJTEVSX1JFVklTSU9OO1xuXG4gIGlmIChcbiAgICBjb21waWxlclJldmlzaW9uID49IExBU1RfQ09NUEFUSUJMRV9DT01QSUxFUl9SRVZJU0lPTiAmJlxuICAgIGNvbXBpbGVyUmV2aXNpb24gPD0gQ09NUElMRVJfUkVWSVNJT05cbiAgKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGNvbXBpbGVyUmV2aXNpb24gPCBMQVNUX0NPTVBBVElCTEVfQ09NUElMRVJfUkVWSVNJT04pIHtcbiAgICBjb25zdCBydW50aW1lVmVyc2lvbnMgPSBSRVZJU0lPTl9DSEFOR0VTW2N1cnJlbnRSZXZpc2lvbl0sXG4gICAgICBjb21waWxlclZlcnNpb25zID0gUkVWSVNJT05fQ0hBTkdFU1tjb21waWxlclJldmlzaW9uXTtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKFxuICAgICAgJ1RlbXBsYXRlIHdhcyBwcmVjb21waWxlZCB3aXRoIGFuIG9sZGVyIHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRoZSBjdXJyZW50IHJ1bnRpbWUuICcgK1xuICAgICAgICAnUGxlYXNlIHVwZGF0ZSB5b3VyIHByZWNvbXBpbGVyIHRvIGEgbmV3ZXIgdmVyc2lvbiAoJyArXG4gICAgICAgIHJ1bnRpbWVWZXJzaW9ucyArXG4gICAgICAgICcpIG9yIGRvd25ncmFkZSB5b3VyIHJ1bnRpbWUgdG8gYW4gb2xkZXIgdmVyc2lvbiAoJyArXG4gICAgICAgIGNvbXBpbGVyVmVyc2lvbnMgK1xuICAgICAgICAnKS4nXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBVc2UgdGhlIGVtYmVkZGVkIHZlcnNpb24gaW5mbyBzaW5jZSB0aGUgcnVudGltZSBkb2Vzbid0IGtub3cgYWJvdXQgdGhpcyByZXZpc2lvbiB5ZXRcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKFxuICAgICAgJ1RlbXBsYXRlIHdhcyBwcmVjb21waWxlZCB3aXRoIGEgbmV3ZXIgdmVyc2lvbiBvZiBIYW5kbGViYXJzIHRoYW4gdGhlIGN1cnJlbnQgcnVudGltZS4gJyArXG4gICAgICAgICdQbGVhc2UgdXBkYXRlIHlvdXIgcnVudGltZSB0byBhIG5ld2VyIHZlcnNpb24gKCcgK1xuICAgICAgICBjb21waWxlckluZm9bMV0gK1xuICAgICAgICAnKS4nXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVtcGxhdGUodGVtcGxhdGVTcGVjLCBlbnYpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgaWYgKCFlbnYpIHtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdObyBlbnZpcm9ubWVudCBwYXNzZWQgdG8gdGVtcGxhdGUnKTtcbiAgfVxuICBpZiAoIXRlbXBsYXRlU3BlYyB8fCAhdGVtcGxhdGVTcGVjLm1haW4pIHtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdVbmtub3duIHRlbXBsYXRlIG9iamVjdDogJyArIHR5cGVvZiB0ZW1wbGF0ZVNwZWMpO1xuICB9XG5cbiAgdGVtcGxhdGVTcGVjLm1haW4uZGVjb3JhdG9yID0gdGVtcGxhdGVTcGVjLm1haW5fZDtcblxuICAvLyBOb3RlOiBVc2luZyBlbnYuVk0gcmVmZXJlbmNlcyByYXRoZXIgdGhhbiBsb2NhbCB2YXIgcmVmZXJlbmNlcyB0aHJvdWdob3V0IHRoaXMgc2VjdGlvbiB0byBhbGxvd1xuICAvLyBmb3IgZXh0ZXJuYWwgdXNlcnMgdG8gb3ZlcnJpZGUgdGhlc2UgYXMgcHNldWRvLXN1cHBvcnRlZCBBUElzLlxuICBlbnYuVk0uY2hlY2tSZXZpc2lvbih0ZW1wbGF0ZVNwZWMuY29tcGlsZXIpO1xuXG4gIC8vIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGZvciBwcmVjb21waWxlZCB0ZW1wbGF0ZXMgd2l0aCBjb21waWxlci12ZXJzaW9uIDcgKDw0LjMuMClcbiAgY29uc3QgdGVtcGxhdGVXYXNQcmVjb21waWxlZFdpdGhDb21waWxlclY3ID1cbiAgICB0ZW1wbGF0ZVNwZWMuY29tcGlsZXIgJiYgdGVtcGxhdGVTcGVjLmNvbXBpbGVyWzBdID09PSA3O1xuXG4gIGZ1bmN0aW9uIGludm9rZVBhcnRpYWxXcmFwcGVyKHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5oYXNoKSB7XG4gICAgICBjb250ZXh0ID0gVXRpbHMuZXh0ZW5kKHt9LCBjb250ZXh0LCBvcHRpb25zLmhhc2gpO1xuICAgICAgaWYgKG9wdGlvbnMuaWRzKSB7XG4gICAgICAgIG9wdGlvbnMuaWRzWzBdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcGFydGlhbCA9IGVudi5WTS5yZXNvbHZlUGFydGlhbC5jYWxsKHRoaXMsIHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpO1xuXG4gICAgbGV0IGV4dGVuZGVkT3B0aW9ucyA9IFV0aWxzLmV4dGVuZCh7fSwgb3B0aW9ucywge1xuICAgICAgaG9va3M6IHRoaXMuaG9va3MsXG4gICAgICBwcm90b0FjY2Vzc0NvbnRyb2w6IHRoaXMucHJvdG9BY2Nlc3NDb250cm9sXG4gICAgfSk7XG5cbiAgICBsZXQgcmVzdWx0ID0gZW52LlZNLmludm9rZVBhcnRpYWwuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICBwYXJ0aWFsLFxuICAgICAgY29udGV4dCxcbiAgICAgIGV4dGVuZGVkT3B0aW9uc1xuICAgICk7XG5cbiAgICBpZiAocmVzdWx0ID09IG51bGwgJiYgZW52LmNvbXBpbGUpIHtcbiAgICAgIG9wdGlvbnMucGFydGlhbHNbb3B0aW9ucy5uYW1lXSA9IGVudi5jb21waWxlKFxuICAgICAgICBwYXJ0aWFsLFxuICAgICAgICB0ZW1wbGF0ZVNwZWMuY29tcGlsZXJPcHRpb25zLFxuICAgICAgICBlbnZcbiAgICAgICk7XG4gICAgICByZXN1bHQgPSBvcHRpb25zLnBhcnRpYWxzW29wdGlvbnMubmFtZV0oY29udGV4dCwgZXh0ZW5kZWRPcHRpb25zKTtcbiAgICB9XG4gICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7XG4gICAgICBpZiAob3B0aW9ucy5pbmRlbnQpIHtcbiAgICAgICAgbGV0IGxpbmVzID0gcmVzdWx0LnNwbGl0KCdcXG4nKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBsaW5lcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICBpZiAoIWxpbmVzW2ldICYmIGkgKyAxID09PSBsKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsaW5lc1tpXSA9IG9wdGlvbnMuaW5kZW50ICsgbGluZXNbaV07XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gbGluZXMuam9pbignXFxuJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKFxuICAgICAgICAnVGhlIHBhcnRpYWwgJyArXG4gICAgICAgICAgb3B0aW9ucy5uYW1lICtcbiAgICAgICAgICAnIGNvdWxkIG5vdCBiZSBjb21waWxlZCB3aGVuIHJ1bm5pbmcgaW4gcnVudGltZS1vbmx5IG1vZGUnXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8vIEp1c3QgYWRkIHdhdGVyXG4gIGxldCBjb250YWluZXIgPSB7XG4gICAgc3RyaWN0OiBmdW5jdGlvbihvYmosIG5hbWUsIGxvYykge1xuICAgICAgaWYgKCFvYmogfHwgIShuYW1lIGluIG9iaikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignXCInICsgbmFtZSArICdcIiBub3QgZGVmaW5lZCBpbiAnICsgb2JqLCB7XG4gICAgICAgICAgbG9jOiBsb2NcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29udGFpbmVyLmxvb2t1cFByb3BlcnR5KG9iaiwgbmFtZSk7XG4gICAgfSxcbiAgICBsb29rdXBQcm9wZXJ0eTogZnVuY3Rpb24ocGFyZW50LCBwcm9wZXJ0eU5hbWUpIHtcbiAgICAgIGxldCByZXN1bHQgPSBwYXJlbnRbcHJvcGVydHlOYW1lXTtcbiAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwYXJlbnQsIHByb3BlcnR5TmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3VsdElzQWxsb3dlZChyZXN1bHQsIGNvbnRhaW5lci5wcm90b0FjY2Vzc0NvbnRyb2wsIHByb3BlcnR5TmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSxcbiAgICBsb29rdXA6IGZ1bmN0aW9uKGRlcHRocywgbmFtZSkge1xuICAgICAgY29uc3QgbGVuID0gZGVwdGhzLmxlbmd0aDtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IGRlcHRoc1tpXSAmJiBjb250YWluZXIubG9va3VwUHJvcGVydHkoZGVwdGhzW2ldLCBuYW1lKTtcbiAgICAgICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGRlcHRoc1tpXVtuYW1lXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgbGFtYmRhOiBmdW5jdGlvbihjdXJyZW50LCBjb250ZXh0KSB7XG4gICAgICByZXR1cm4gdHlwZW9mIGN1cnJlbnQgPT09ICdmdW5jdGlvbicgPyBjdXJyZW50LmNhbGwoY29udGV4dCkgOiBjdXJyZW50O1xuICAgIH0sXG5cbiAgICBlc2NhcGVFeHByZXNzaW9uOiBVdGlscy5lc2NhcGVFeHByZXNzaW9uLFxuICAgIGludm9rZVBhcnRpYWw6IGludm9rZVBhcnRpYWxXcmFwcGVyLFxuXG4gICAgZm46IGZ1bmN0aW9uKGkpIHtcbiAgICAgIGxldCByZXQgPSB0ZW1wbGF0ZVNwZWNbaV07XG4gICAgICByZXQuZGVjb3JhdG9yID0gdGVtcGxhdGVTcGVjW2kgKyAnX2QnXTtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSxcblxuICAgIHByb2dyYW1zOiBbXSxcbiAgICBwcm9ncmFtOiBmdW5jdGlvbihpLCBkYXRhLCBkZWNsYXJlZEJsb2NrUGFyYW1zLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7XG4gICAgICBsZXQgcHJvZ3JhbVdyYXBwZXIgPSB0aGlzLnByb2dyYW1zW2ldLFxuICAgICAgICBmbiA9IHRoaXMuZm4oaSk7XG4gICAgICBpZiAoZGF0YSB8fCBkZXB0aHMgfHwgYmxvY2tQYXJhbXMgfHwgZGVjbGFyZWRCbG9ja1BhcmFtcykge1xuICAgICAgICBwcm9ncmFtV3JhcHBlciA9IHdyYXBQcm9ncmFtKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgaSxcbiAgICAgICAgICBmbixcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIGRlY2xhcmVkQmxvY2tQYXJhbXMsXG4gICAgICAgICAgYmxvY2tQYXJhbXMsXG4gICAgICAgICAgZGVwdGhzXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKCFwcm9ncmFtV3JhcHBlcikge1xuICAgICAgICBwcm9ncmFtV3JhcHBlciA9IHRoaXMucHJvZ3JhbXNbaV0gPSB3cmFwUHJvZ3JhbSh0aGlzLCBpLCBmbik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJvZ3JhbVdyYXBwZXI7XG4gICAgfSxcblxuICAgIGRhdGE6IGZ1bmN0aW9uKHZhbHVlLCBkZXB0aCkge1xuICAgICAgd2hpbGUgKHZhbHVlICYmIGRlcHRoLS0pIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5fcGFyZW50O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0sXG4gICAgbWVyZ2VJZk5lZWRlZDogZnVuY3Rpb24ocGFyYW0sIGNvbW1vbikge1xuICAgICAgbGV0IG9iaiA9IHBhcmFtIHx8IGNvbW1vbjtcblxuICAgICAgaWYgKHBhcmFtICYmIGNvbW1vbiAmJiBwYXJhbSAhPT0gY29tbW9uKSB7XG4gICAgICAgIG9iaiA9IFV0aWxzLmV4dGVuZCh7fSwgY29tbW9uLCBwYXJhbSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSxcbiAgICAvLyBBbiBlbXB0eSBvYmplY3QgdG8gdXNlIGFzIHJlcGxhY2VtZW50IGZvciBudWxsLWNvbnRleHRzXG4gICAgbnVsbENvbnRleHQ6IE9iamVjdC5zZWFsKHt9KSxcblxuICAgIG5vb3A6IGVudi5WTS5ub29wLFxuICAgIGNvbXBpbGVySW5mbzogdGVtcGxhdGVTcGVjLmNvbXBpbGVyXG4gIH07XG5cbiAgZnVuY3Rpb24gcmV0KGNvbnRleHQsIG9wdGlvbnMgPSB7fSkge1xuICAgIGxldCBkYXRhID0gb3B0aW9ucy5kYXRhO1xuXG4gICAgcmV0Ll9zZXR1cChvcHRpb25zKTtcbiAgICBpZiAoIW9wdGlvbnMucGFydGlhbCAmJiB0ZW1wbGF0ZVNwZWMudXNlRGF0YSkge1xuICAgICAgZGF0YSA9IGluaXREYXRhKGNvbnRleHQsIGRhdGEpO1xuICAgIH1cbiAgICBsZXQgZGVwdGhzLFxuICAgICAgYmxvY2tQYXJhbXMgPSB0ZW1wbGF0ZVNwZWMudXNlQmxvY2tQYXJhbXMgPyBbXSA6IHVuZGVmaW5lZDtcbiAgICBpZiAodGVtcGxhdGVTcGVjLnVzZURlcHRocykge1xuICAgICAgaWYgKG9wdGlvbnMuZGVwdGhzKSB7XG4gICAgICAgIGRlcHRocyA9XG4gICAgICAgICAgY29udGV4dCAhPSBvcHRpb25zLmRlcHRoc1swXVxuICAgICAgICAgICAgPyBbY29udGV4dF0uY29uY2F0KG9wdGlvbnMuZGVwdGhzKVxuICAgICAgICAgICAgOiBvcHRpb25zLmRlcHRocztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlcHRocyA9IFtjb250ZXh0XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYWluKGNvbnRleHQgLyosIG9wdGlvbnMqLykge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgJycgK1xuICAgICAgICB0ZW1wbGF0ZVNwZWMubWFpbihcbiAgICAgICAgICBjb250YWluZXIsXG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICBjb250YWluZXIuaGVscGVycyxcbiAgICAgICAgICBjb250YWluZXIucGFydGlhbHMsXG4gICAgICAgICAgZGF0YSxcbiAgICAgICAgICBibG9ja1BhcmFtcyxcbiAgICAgICAgICBkZXB0aHNcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBtYWluID0gZXhlY3V0ZURlY29yYXRvcnMoXG4gICAgICB0ZW1wbGF0ZVNwZWMubWFpbixcbiAgICAgIG1haW4sXG4gICAgICBjb250YWluZXIsXG4gICAgICBvcHRpb25zLmRlcHRocyB8fCBbXSxcbiAgICAgIGRhdGEsXG4gICAgICBibG9ja1BhcmFtc1xuICAgICk7XG4gICAgcmV0dXJuIG1haW4oY29udGV4dCwgb3B0aW9ucyk7XG4gIH1cblxuICByZXQuaXNUb3AgPSB0cnVlO1xuXG4gIHJldC5fc2V0dXAgPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgaWYgKCFvcHRpb25zLnBhcnRpYWwpIHtcbiAgICAgIGxldCBtZXJnZWRIZWxwZXJzID0gVXRpbHMuZXh0ZW5kKHt9LCBlbnYuaGVscGVycywgb3B0aW9ucy5oZWxwZXJzKTtcbiAgICAgIHdyYXBIZWxwZXJzVG9QYXNzTG9va3VwUHJvcGVydHkobWVyZ2VkSGVscGVycywgY29udGFpbmVyKTtcbiAgICAgIGNvbnRhaW5lci5oZWxwZXJzID0gbWVyZ2VkSGVscGVycztcblxuICAgICAgaWYgKHRlbXBsYXRlU3BlYy51c2VQYXJ0aWFsKSB7XG4gICAgICAgIC8vIFVzZSBtZXJnZUlmTmVlZGVkIGhlcmUgdG8gcHJldmVudCBjb21waWxpbmcgZ2xvYmFsIHBhcnRpYWxzIG11bHRpcGxlIHRpbWVzXG4gICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IGNvbnRhaW5lci5tZXJnZUlmTmVlZGVkKFxuICAgICAgICAgIG9wdGlvbnMucGFydGlhbHMsXG4gICAgICAgICAgZW52LnBhcnRpYWxzXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAodGVtcGxhdGVTcGVjLnVzZVBhcnRpYWwgfHwgdGVtcGxhdGVTcGVjLnVzZURlY29yYXRvcnMpIHtcbiAgICAgICAgY29udGFpbmVyLmRlY29yYXRvcnMgPSBVdGlscy5leHRlbmQoXG4gICAgICAgICAge30sXG4gICAgICAgICAgZW52LmRlY29yYXRvcnMsXG4gICAgICAgICAgb3B0aW9ucy5kZWNvcmF0b3JzXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRhaW5lci5ob29rcyA9IHt9O1xuICAgICAgY29udGFpbmVyLnByb3RvQWNjZXNzQ29udHJvbCA9IGNyZWF0ZVByb3RvQWNjZXNzQ29udHJvbChvcHRpb25zKTtcblxuICAgICAgbGV0IGtlZXBIZWxwZXJJbkhlbHBlcnMgPVxuICAgICAgICBvcHRpb25zLmFsbG93Q2FsbHNUb0hlbHBlck1pc3NpbmcgfHxcbiAgICAgICAgdGVtcGxhdGVXYXNQcmVjb21waWxlZFdpdGhDb21waWxlclY3O1xuICAgICAgbW92ZUhlbHBlclRvSG9va3MoY29udGFpbmVyLCAnaGVscGVyTWlzc2luZycsIGtlZXBIZWxwZXJJbkhlbHBlcnMpO1xuICAgICAgbW92ZUhlbHBlclRvSG9va3MoY29udGFpbmVyLCAnYmxvY2tIZWxwZXJNaXNzaW5nJywga2VlcEhlbHBlckluSGVscGVycyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRhaW5lci5wcm90b0FjY2Vzc0NvbnRyb2wgPSBvcHRpb25zLnByb3RvQWNjZXNzQ29udHJvbDsgLy8gaW50ZXJuYWwgb3B0aW9uXG4gICAgICBjb250YWluZXIuaGVscGVycyA9IG9wdGlvbnMuaGVscGVycztcbiAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IG9wdGlvbnMucGFydGlhbHM7XG4gICAgICBjb250YWluZXIuZGVjb3JhdG9ycyA9IG9wdGlvbnMuZGVjb3JhdG9ycztcbiAgICAgIGNvbnRhaW5lci5ob29rcyA9IG9wdGlvbnMuaG9va3M7XG4gICAgfVxuICB9O1xuXG4gIHJldC5fY2hpbGQgPSBmdW5jdGlvbihpLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7XG4gICAgaWYgKHRlbXBsYXRlU3BlYy51c2VCbG9ja1BhcmFtcyAmJiAhYmxvY2tQYXJhbXMpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ211c3QgcGFzcyBibG9jayBwYXJhbXMnKTtcbiAgICB9XG4gICAgaWYgKHRlbXBsYXRlU3BlYy51c2VEZXB0aHMgJiYgIWRlcHRocykge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignbXVzdCBwYXNzIHBhcmVudCBkZXB0aHMnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gd3JhcFByb2dyYW0oXG4gICAgICBjb250YWluZXIsXG4gICAgICBpLFxuICAgICAgdGVtcGxhdGVTcGVjW2ldLFxuICAgICAgZGF0YSxcbiAgICAgIDAsXG4gICAgICBibG9ja1BhcmFtcyxcbiAgICAgIGRlcHRoc1xuICAgICk7XG4gIH07XG4gIHJldHVybiByZXQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cmFwUHJvZ3JhbShcbiAgY29udGFpbmVyLFxuICBpLFxuICBmbixcbiAgZGF0YSxcbiAgZGVjbGFyZWRCbG9ja1BhcmFtcyxcbiAgYmxvY2tQYXJhbXMsXG4gIGRlcHRoc1xuKSB7XG4gIGZ1bmN0aW9uIHByb2coY29udGV4dCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGN1cnJlbnREZXB0aHMgPSBkZXB0aHM7XG4gICAgaWYgKFxuICAgICAgZGVwdGhzICYmXG4gICAgICBjb250ZXh0ICE9IGRlcHRoc1swXSAmJlxuICAgICAgIShjb250ZXh0ID09PSBjb250YWluZXIubnVsbENvbnRleHQgJiYgZGVwdGhzWzBdID09PSBudWxsKVxuICAgICkge1xuICAgICAgY3VycmVudERlcHRocyA9IFtjb250ZXh0XS5jb25jYXQoZGVwdGhzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm4oXG4gICAgICBjb250YWluZXIsXG4gICAgICBjb250ZXh0LFxuICAgICAgY29udGFpbmVyLmhlbHBlcnMsXG4gICAgICBjb250YWluZXIucGFydGlhbHMsXG4gICAgICBvcHRpb25zLmRhdGEgfHwgZGF0YSxcbiAgICAgIGJsb2NrUGFyYW1zICYmIFtvcHRpb25zLmJsb2NrUGFyYW1zXS5jb25jYXQoYmxvY2tQYXJhbXMpLFxuICAgICAgY3VycmVudERlcHRoc1xuICAgICk7XG4gIH1cblxuICBwcm9nID0gZXhlY3V0ZURlY29yYXRvcnMoZm4sIHByb2csIGNvbnRhaW5lciwgZGVwdGhzLCBkYXRhLCBibG9ja1BhcmFtcyk7XG5cbiAgcHJvZy5wcm9ncmFtID0gaTtcbiAgcHJvZy5kZXB0aCA9IGRlcHRocyA/IGRlcHRocy5sZW5ndGggOiAwO1xuICBwcm9nLmJsb2NrUGFyYW1zID0gZGVjbGFyZWRCbG9ja1BhcmFtcyB8fCAwO1xuICByZXR1cm4gcHJvZztcbn1cblxuLyoqXG4gKiBUaGlzIGlzIGN1cnJlbnRseSBwYXJ0IG9mIHRoZSBvZmZpY2lhbCBBUEksIHRoZXJlZm9yZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHNob3VsZCBub3QgYmUgY2hhbmdlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVQYXJ0aWFsKHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgaWYgKCFwYXJ0aWFsKSB7XG4gICAgaWYgKG9wdGlvbnMubmFtZSA9PT0gJ0BwYXJ0aWFsLWJsb2NrJykge1xuICAgICAgcGFydGlhbCA9IG9wdGlvbnMuZGF0YVsncGFydGlhbC1ibG9jayddO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0aWFsID0gb3B0aW9ucy5wYXJ0aWFsc1tvcHRpb25zLm5hbWVdO1xuICAgIH1cbiAgfSBlbHNlIGlmICghcGFydGlhbC5jYWxsICYmICFvcHRpb25zLm5hbWUpIHtcbiAgICAvLyBUaGlzIGlzIGEgZHluYW1pYyBwYXJ0aWFsIHRoYXQgcmV0dXJuZWQgYSBzdHJpbmdcbiAgICBvcHRpb25zLm5hbWUgPSBwYXJ0aWFsO1xuICAgIHBhcnRpYWwgPSBvcHRpb25zLnBhcnRpYWxzW3BhcnRpYWxdO1xuICB9XG4gIHJldHVybiBwYXJ0aWFsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlUGFydGlhbChwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKSB7XG4gIC8vIFVzZSB0aGUgY3VycmVudCBjbG9zdXJlIGNvbnRleHQgdG8gc2F2ZSB0aGUgcGFydGlhbC1ibG9jayBpZiB0aGlzIHBhcnRpYWxcbiAgY29uc3QgY3VycmVudFBhcnRpYWxCbG9jayA9IG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXTtcbiAgb3B0aW9ucy5wYXJ0aWFsID0gdHJ1ZTtcbiAgaWYgKG9wdGlvbnMuaWRzKSB7XG4gICAgb3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoID0gb3B0aW9ucy5pZHNbMF0gfHwgb3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoO1xuICB9XG5cbiAgbGV0IHBhcnRpYWxCbG9jaztcbiAgaWYgKG9wdGlvbnMuZm4gJiYgb3B0aW9ucy5mbiAhPT0gbm9vcCkge1xuICAgIG9wdGlvbnMuZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgLy8gV3JhcHBlciBmdW5jdGlvbiB0byBnZXQgYWNjZXNzIHRvIGN1cnJlbnRQYXJ0aWFsQmxvY2sgZnJvbSB0aGUgY2xvc3VyZVxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm47XG4gICAgcGFydGlhbEJsb2NrID0gb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ10gPSBmdW5jdGlvbiBwYXJ0aWFsQmxvY2tXcmFwcGVyKFxuICAgICAgY29udGV4dCxcbiAgICAgIG9wdGlvbnMgPSB7fVxuICAgICkge1xuICAgICAgLy8gUmVzdG9yZSB0aGUgcGFydGlhbC1ibG9jayBmcm9tIHRoZSBjbG9zdXJlIGZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBibG9ja1xuICAgICAgLy8gaS5lLiB0aGUgcGFydCBpbnNpZGUgdGhlIGJsb2NrIG9mIHRoZSBwYXJ0aWFsIGNhbGwuXG4gICAgICBvcHRpb25zLmRhdGEgPSBjcmVhdGVGcmFtZShvcHRpb25zLmRhdGEpO1xuICAgICAgb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ10gPSBjdXJyZW50UGFydGlhbEJsb2NrO1xuICAgICAgcmV0dXJuIGZuKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgIH07XG4gICAgaWYgKGZuLnBhcnRpYWxzKSB7XG4gICAgICBvcHRpb25zLnBhcnRpYWxzID0gVXRpbHMuZXh0ZW5kKHt9LCBvcHRpb25zLnBhcnRpYWxzLCBmbi5wYXJ0aWFscyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHBhcnRpYWwgPT09IHVuZGVmaW5lZCAmJiBwYXJ0aWFsQmxvY2spIHtcbiAgICBwYXJ0aWFsID0gcGFydGlhbEJsb2NrO1xuICB9XG5cbiAgaWYgKHBhcnRpYWwgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1RoZSBwYXJ0aWFsICcgKyBvcHRpb25zLm5hbWUgKyAnIGNvdWxkIG5vdCBiZSBmb3VuZCcpO1xuICB9IGVsc2UgaWYgKHBhcnRpYWwgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgIHJldHVybiBwYXJ0aWFsKGNvbnRleHQsIG9wdGlvbnMpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub29wKCkge1xuICByZXR1cm4gJyc7XG59XG5cbmZ1bmN0aW9uIGluaXREYXRhKGNvbnRleHQsIGRhdGEpIHtcbiAgaWYgKCFkYXRhIHx8ICEoJ3Jvb3QnIGluIGRhdGEpKSB7XG4gICAgZGF0YSA9IGRhdGEgPyBjcmVhdGVGcmFtZShkYXRhKSA6IHt9O1xuICAgIGRhdGEucm9vdCA9IGNvbnRleHQ7XG4gIH1cbiAgcmV0dXJuIGRhdGE7XG59XG5cbmZ1bmN0aW9uIGV4ZWN1dGVEZWNvcmF0b3JzKGZuLCBwcm9nLCBjb250YWluZXIsIGRlcHRocywgZGF0YSwgYmxvY2tQYXJhbXMpIHtcbiAgaWYgKGZuLmRlY29yYXRvcikge1xuICAgIGxldCBwcm9wcyA9IHt9O1xuICAgIHByb2cgPSBmbi5kZWNvcmF0b3IoXG4gICAgICBwcm9nLFxuICAgICAgcHJvcHMsXG4gICAgICBjb250YWluZXIsXG4gICAgICBkZXB0aHMgJiYgZGVwdGhzWzBdLFxuICAgICAgZGF0YSxcbiAgICAgIGJsb2NrUGFyYW1zLFxuICAgICAgZGVwdGhzXG4gICAgKTtcbiAgICBVdGlscy5leHRlbmQocHJvZywgcHJvcHMpO1xuICB9XG4gIHJldHVybiBwcm9nO1xufVxuXG5mdW5jdGlvbiB3cmFwSGVscGVyc1RvUGFzc0xvb2t1cFByb3BlcnR5KG1lcmdlZEhlbHBlcnMsIGNvbnRhaW5lcikge1xuICBPYmplY3Qua2V5cyhtZXJnZWRIZWxwZXJzKS5mb3JFYWNoKGhlbHBlck5hbWUgPT4ge1xuICAgIGxldCBoZWxwZXIgPSBtZXJnZWRIZWxwZXJzW2hlbHBlck5hbWVdO1xuICAgIG1lcmdlZEhlbHBlcnNbaGVscGVyTmFtZV0gPSBwYXNzTG9va3VwUHJvcGVydHlPcHRpb24oaGVscGVyLCBjb250YWluZXIpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcGFzc0xvb2t1cFByb3BlcnR5T3B0aW9uKGhlbHBlciwgY29udGFpbmVyKSB7XG4gIGNvbnN0IGxvb2t1cFByb3BlcnR5ID0gY29udGFpbmVyLmxvb2t1cFByb3BlcnR5O1xuICByZXR1cm4gd3JhcEhlbHBlcihoZWxwZXIsIG9wdGlvbnMgPT4ge1xuICAgIHJldHVybiBVdGlscy5leHRlbmQoeyBsb29rdXBQcm9wZXJ0eSB9LCBvcHRpb25zKTtcbiAgfSk7XG59XG4iXX0=\n","// Build out our basic SafeString type\n'use strict';\n\nexports.__esModule = true;\nfunction SafeString(string) {\n this.string = string;\n}\n\nSafeString.prototype.toString = SafeString.prototype.toHTML = function () {\n return '' + this.string;\n};\n\nexports['default'] = SafeString;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3NhZmUtc3RyaW5nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUU7QUFDMUIsTUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Q0FDdEI7O0FBRUQsVUFBVSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsWUFBVztBQUN2RSxTQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0NBQ3pCLENBQUM7O3FCQUVhLFVBQVUiLCJmaWxlIjoic2FmZS1zdHJpbmcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBCdWlsZCBvdXQgb3VyIGJhc2ljIFNhZmVTdHJpbmcgdHlwZVxuZnVuY3Rpb24gU2FmZVN0cmluZyhzdHJpbmcpIHtcbiAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7XG59XG5cblNhZmVTdHJpbmcucHJvdG90eXBlLnRvU3RyaW5nID0gU2FmZVN0cmluZy5wcm90b3R5cGUudG9IVE1MID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAnJyArIHRoaXMuc3RyaW5nO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2FmZVN0cmluZztcbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nexports.extend = extend;\nexports.indexOf = indexOf;\nexports.escapeExpression = escapeExpression;\nexports.isEmpty = isEmpty;\nexports.createFrame = createFrame;\nexports.blockParams = blockParams;\nexports.appendContextPath = appendContextPath;\nvar escape = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`',\n '=': '='\n};\n\nvar badChars = /[&<>\"'`=]/g,\n possible = /[&<>\"'`=]/;\n\nfunction escapeChar(chr) {\n return escape[chr];\n}\n\nfunction extend(obj /* , ...source */) {\n for (var i = 1; i < arguments.length; i++) {\n for (var key in arguments[i]) {\n if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n obj[key] = arguments[i][key];\n }\n }\n }\n\n return obj;\n}\n\nvar toString = Object.prototype.toString;\n\nexports.toString = toString;\n// Sourced from lodash\n// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n/* eslint-disable func-style */\nvar isFunction = function isFunction(value) {\n return typeof value === 'function';\n};\n// fallback for older versions of Chrome and Safari\n/* istanbul ignore next */\nif (isFunction(/x/)) {\n exports.isFunction = isFunction = function (value) {\n return typeof value === 'function' && toString.call(value) === '[object Function]';\n };\n}\nexports.isFunction = isFunction;\n\n/* eslint-enable func-style */\n\n/* istanbul ignore next */\nvar isArray = Array.isArray || function (value) {\n return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false;\n};\n\nexports.isArray = isArray;\n// Older IE versions do not directly support indexOf so we must implement our own, sadly.\n\nfunction indexOf(array, value) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n return -1;\n}\n\nfunction escapeExpression(string) {\n if (typeof string !== 'string') {\n // don't escape SafeStrings, since they're already safe\n if (string && string.toHTML) {\n return string.toHTML();\n } else if (string == null) {\n return '';\n } else if (!string) {\n return string + '';\n }\n\n // Force a string conversion as this will be done by the append regardless and\n // the regex test will do this transparently behind the scenes, causing issues if\n // an object's to string has escaped characters in it.\n string = '' + string;\n }\n\n if (!possible.test(string)) {\n return string;\n }\n return string.replace(badChars, escapeChar);\n}\n\nfunction isEmpty(value) {\n if (!value && value !== 0) {\n return true;\n } else if (isArray(value) && value.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction createFrame(object) {\n var frame = extend({}, object);\n frame._parent = object;\n return frame;\n}\n\nfunction blockParams(params, ids) {\n params.path = ids;\n return params;\n}\n\nfunction appendContextPath(contextPath, id) {\n return (contextPath ? contextPath + '.' : '') + id;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3V0aWxzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFNLE1BQU0sR0FBRztBQUNiLEtBQUcsRUFBRSxPQUFPO0FBQ1osS0FBRyxFQUFFLE1BQU07QUFDWCxLQUFHLEVBQUUsTUFBTTtBQUNYLEtBQUcsRUFBRSxRQUFRO0FBQ2IsS0FBRyxFQUFFLFFBQVE7QUFDYixLQUFHLEVBQUUsUUFBUTtBQUNiLEtBQUcsRUFBRSxRQUFRO0NBQ2QsQ0FBQzs7QUFFRixJQUFNLFFBQVEsR0FBRyxZQUFZO0lBQzNCLFFBQVEsR0FBRyxXQUFXLENBQUM7O0FBRXpCLFNBQVMsVUFBVSxDQUFDLEdBQUcsRUFBRTtBQUN2QixTQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUNwQjs7QUFFTSxTQUFTLE1BQU0sQ0FBQyxHQUFHLG9CQUFvQjtBQUM1QyxPQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN6QyxTQUFLLElBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUM1QixVQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7QUFDM0QsV0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztPQUM5QjtLQUNGO0dBQ0Y7O0FBRUQsU0FBTyxHQUFHLENBQUM7Q0FDWjs7QUFFTSxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQzs7Ozs7O0FBS2hELElBQUksVUFBVSxHQUFHLG9CQUFTLEtBQUssRUFBRTtBQUMvQixTQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQztDQUNwQyxDQUFDOzs7QUFHRixJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNuQixVQU9PLFVBQVUsR0FQakIsVUFBVSxHQUFHLFVBQVMsS0FBSyxFQUFFO0FBQzNCLFdBQ0UsT0FBTyxLQUFLLEtBQUssVUFBVSxJQUMzQixRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLG1CQUFtQixDQUM1QztHQUNILENBQUM7Q0FDSDtRQUNRLFVBQVUsR0FBVixVQUFVOzs7OztBQUlaLElBQU0sT0FBTyxHQUNsQixLQUFLLENBQUMsT0FBTyxJQUNiLFVBQVMsS0FBSyxFQUFFO0FBQ2QsU0FBTyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxHQUNyQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLGdCQUFnQixHQUN6QyxLQUFLLENBQUM7Q0FDWCxDQUFDOzs7OztBQUdHLFNBQVMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDcEMsT0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNoRCxRQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUU7QUFDdEIsYUFBTyxDQUFDLENBQUM7S0FDVjtHQUNGO0FBQ0QsU0FBTyxDQUFDLENBQUMsQ0FBQztDQUNYOztBQUVNLFNBQVMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFO0FBQ3ZDLE1BQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFOztBQUU5QixRQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO0FBQzNCLGFBQU8sTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQ3hCLE1BQU0sSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFO0FBQ3pCLGFBQU8sRUFBRSxDQUFDO0tBQ1gsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ2xCLGFBQU8sTUFBTSxHQUFHLEVBQUUsQ0FBQztLQUNwQjs7Ozs7QUFLRCxVQUFNLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQztHQUN0Qjs7QUFFRCxNQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUMxQixXQUFPLE1BQU0sQ0FBQztHQUNmO0FBQ0QsU0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztDQUM3Qzs7QUFFTSxTQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDN0IsTUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO0FBQ3pCLFdBQU8sSUFBSSxDQUFDO0dBQ2IsTUFBTSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUMvQyxXQUFPLElBQUksQ0FBQztHQUNiLE1BQU07QUFDTCxXQUFPLEtBQUssQ0FBQztHQUNkO0NBQ0Y7O0FBRU0sU0FBUyxXQUFXLENBQUMsTUFBTSxFQUFFO0FBQ2xDLE1BQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0IsT0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7QUFDdkIsU0FBTyxLQUFLLENBQUM7Q0FDZDs7QUFFTSxTQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO0FBQ3ZDLFFBQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0FBQ2xCLFNBQU8sTUFBTSxDQUFDO0NBQ2Y7O0FBRU0sU0FBUyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFO0FBQ2pELFNBQU8sQ0FBQyxXQUFXLEdBQUcsV0FBVyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUEsR0FBSSxFQUFFLENBQUM7Q0FDcEQiLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBlc2NhcGUgPSB7XG4gICcmJzogJyZhbXA7JyxcbiAgJzwnOiAnJmx0OycsXG4gICc+JzogJyZndDsnLFxuICAnXCInOiAnJnF1b3Q7JyxcbiAgXCInXCI6ICcmI3gyNzsnLFxuICAnYCc6ICcmI3g2MDsnLFxuICAnPSc6ICcmI3gzRDsnXG59O1xuXG5jb25zdCBiYWRDaGFycyA9IC9bJjw+XCInYD1dL2csXG4gIHBvc3NpYmxlID0gL1smPD5cIidgPV0vO1xuXG5mdW5jdGlvbiBlc2NhcGVDaGFyKGNocikge1xuICByZXR1cm4gZXNjYXBlW2Nocl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRlbmQob2JqIC8qICwgLi4uc291cmNlICovKSB7XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgZm9yIChsZXQga2V5IGluIGFyZ3VtZW50c1tpXSkge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhcmd1bWVudHNbaV0sIGtleSkpIHtcbiAgICAgICAgb2JqW2tleV0gPSBhcmd1bWVudHNbaV1ba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG5leHBvcnQgbGV0IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuLy8gU291cmNlZCBmcm9tIGxvZGFzaFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Jlc3RpZWpzL2xvZGFzaC9ibG9iL21hc3Rlci9MSUNFTlNFLnR4dFxuLyogZXNsaW50LWRpc2FibGUgZnVuYy1zdHlsZSAqL1xubGV0IGlzRnVuY3Rpb24gPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nO1xufTtcbi8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9ucyBvZiBDaHJvbWUgYW5kIFNhZmFyaVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmlmIChpc0Z1bmN0aW9uKC94LykpIHtcbiAgaXNGdW5jdGlvbiA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSdcbiAgICApO1xuICB9O1xufVxuZXhwb3J0IHsgaXNGdW5jdGlvbiB9O1xuLyogZXNsaW50LWVuYWJsZSBmdW5jLXN0eWxlICovXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5leHBvcnQgY29uc3QgaXNBcnJheSA9XG4gIEFycmF5LmlzQXJyYXkgfHxcbiAgZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0J1xuICAgICAgPyB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgQXJyYXldJ1xuICAgICAgOiBmYWxzZTtcbiAgfTtcblxuLy8gT2xkZXIgSUUgdmVyc2lvbnMgZG8gbm90IGRpcmVjdGx5IHN1cHBvcnQgaW5kZXhPZiBzbyB3ZSBtdXN0IGltcGxlbWVudCBvdXIgb3duLCBzYWRseS5cbmV4cG9ydCBmdW5jdGlvbiBpbmRleE9mKGFycmF5LCB2YWx1ZSkge1xuICBmb3IgKGxldCBpID0gMCwgbGVuID0gYXJyYXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoYXJyYXlbaV0gPT09IHZhbHVlKSB7XG4gICAgICByZXR1cm4gaTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlRXhwcmVzc2lvbihzdHJpbmcpIHtcbiAgaWYgKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgLy8gZG9uJ3QgZXNjYXBlIFNhZmVTdHJpbmdzLCBzaW5jZSB0aGV5J3JlIGFscmVhZHkgc2FmZVxuICAgIGlmIChzdHJpbmcgJiYgc3RyaW5nLnRvSFRNTCkge1xuICAgICAgcmV0dXJuIHN0cmluZy50b0hUTUwoKTtcbiAgICB9IGVsc2UgaWYgKHN0cmluZyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfSBlbHNlIGlmICghc3RyaW5nKSB7XG4gICAgICByZXR1cm4gc3RyaW5nICsgJyc7XG4gICAgfVxuXG4gICAgLy8gRm9yY2UgYSBzdHJpbmcgY29udmVyc2lvbiBhcyB0aGlzIHdpbGwgYmUgZG9uZSBieSB0aGUgYXBwZW5kIHJlZ2FyZGxlc3MgYW5kXG4gICAgLy8gdGhlIHJlZ2V4IHRlc3Qgd2lsbCBkbyB0aGlzIHRyYW5zcGFyZW50bHkgYmVoaW5kIHRoZSBzY2VuZXMsIGNhdXNpbmcgaXNzdWVzIGlmXG4gICAgLy8gYW4gb2JqZWN0J3MgdG8gc3RyaW5nIGhhcyBlc2NhcGVkIGNoYXJhY3RlcnMgaW4gaXQuXG4gICAgc3RyaW5nID0gJycgKyBzdHJpbmc7XG4gIH1cblxuICBpZiAoIXBvc3NpYmxlLnRlc3Qoc3RyaW5nKSkge1xuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKGJhZENoYXJzLCBlc2NhcGVDaGFyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRW1wdHkodmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSAmJiB2YWx1ZSAhPT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2UgaWYgKGlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRnJhbWUob2JqZWN0KSB7XG4gIGxldCBmcmFtZSA9IGV4dGVuZCh7fSwgb2JqZWN0KTtcbiAgZnJhbWUuX3BhcmVudCA9IG9iamVjdDtcbiAgcmV0dXJuIGZyYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmxvY2tQYXJhbXMocGFyYW1zLCBpZHMpIHtcbiAgcGFyYW1zLnBhdGggPSBpZHM7XG4gIHJldHVybiBwYXJhbXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRDb250ZXh0UGF0aChjb250ZXh0UGF0aCwgaWQpIHtcbiAgcmV0dXJuIChjb250ZXh0UGF0aCA/IGNvbnRleHRQYXRoICsgJy4nIDogJycpICsgaWQ7XG59XG4iXX0=\n","// Create a simple path alias to allow browserify to resolve\n// the runtime on a supported path.\nmodule.exports = require('./dist/cjs/handlebars.runtime')['default'];\n","/*!***************************************************\n* mark.js v8.11.1\n* https://markjs.io/\n* Copyright (c) 2014–2018, Julian Kühnel\n* Released under the MIT license https://git.io/vwTVl\n*****************************************************/\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.Mark = factory());\n}(this, (function () { 'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\n\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar DOMIterator = function () {\n function DOMIterator(ctx) {\n var iframes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var exclude = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n var iframesTimeout = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 5000;\n classCallCheck(this, DOMIterator);\n\n this.ctx = ctx;\n this.iframes = iframes;\n this.exclude = exclude;\n this.iframesTimeout = iframesTimeout;\n }\n\n createClass(DOMIterator, [{\n key: 'getContexts',\n value: function getContexts() {\n var ctx = void 0,\n filteredCtx = [];\n if (typeof this.ctx === 'undefined' || !this.ctx) {\n ctx = [];\n } else if (NodeList.prototype.isPrototypeOf(this.ctx)) {\n ctx = Array.prototype.slice.call(this.ctx);\n } else if (Array.isArray(this.ctx)) {\n ctx = this.ctx;\n } else if (typeof this.ctx === 'string') {\n ctx = Array.prototype.slice.call(document.querySelectorAll(this.ctx));\n } else {\n ctx = [this.ctx];\n }\n ctx.forEach(function (ctx) {\n var isDescendant = filteredCtx.filter(function (contexts) {\n return contexts.contains(ctx);\n }).length > 0;\n if (filteredCtx.indexOf(ctx) === -1 && !isDescendant) {\n filteredCtx.push(ctx);\n }\n });\n return filteredCtx;\n }\n }, {\n key: 'getIframeContents',\n value: function getIframeContents(ifr, successFn) {\n var errorFn = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n\n var doc = void 0;\n try {\n var ifrWin = ifr.contentWindow;\n doc = ifrWin.document;\n if (!ifrWin || !doc) {\n throw new Error('iframe inaccessible');\n }\n } catch (e) {\n errorFn();\n }\n if (doc) {\n successFn(doc);\n }\n }\n }, {\n key: 'isIframeBlank',\n value: function isIframeBlank(ifr) {\n var bl = 'about:blank',\n src = ifr.getAttribute('src').trim(),\n href = ifr.contentWindow.location.href;\n return href === bl && src !== bl && src;\n }\n }, {\n key: 'observeIframeLoad',\n value: function observeIframeLoad(ifr, successFn, errorFn) {\n var _this = this;\n\n var called = false,\n tout = null;\n var listener = function listener() {\n if (called) {\n return;\n }\n called = true;\n clearTimeout(tout);\n try {\n if (!_this.isIframeBlank(ifr)) {\n ifr.removeEventListener('load', listener);\n _this.getIframeContents(ifr, successFn, errorFn);\n }\n } catch (e) {\n errorFn();\n }\n };\n ifr.addEventListener('load', listener);\n tout = setTimeout(listener, this.iframesTimeout);\n }\n }, {\n key: 'onIframeReady',\n value: function onIframeReady(ifr, successFn, errorFn) {\n try {\n if (ifr.contentWindow.document.readyState === 'complete') {\n if (this.isIframeBlank(ifr)) {\n this.observeIframeLoad(ifr, successFn, errorFn);\n } else {\n this.getIframeContents(ifr, successFn, errorFn);\n }\n } else {\n this.observeIframeLoad(ifr, successFn, errorFn);\n }\n } catch (e) {\n errorFn();\n }\n }\n }, {\n key: 'waitForIframes',\n value: function waitForIframes(ctx, done) {\n var _this2 = this;\n\n var eachCalled = 0;\n this.forEachIframe(ctx, function () {\n return true;\n }, function (ifr) {\n eachCalled++;\n _this2.waitForIframes(ifr.querySelector('html'), function () {\n if (! --eachCalled) {\n done();\n }\n });\n }, function (handled) {\n if (!handled) {\n done();\n }\n });\n }\n }, {\n key: 'forEachIframe',\n value: function forEachIframe(ctx, filter, each) {\n var _this3 = this;\n\n var end = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function () {};\n\n var ifr = ctx.querySelectorAll('iframe'),\n open = ifr.length,\n handled = 0;\n ifr = Array.prototype.slice.call(ifr);\n var checkEnd = function checkEnd() {\n if (--open <= 0) {\n end(handled);\n }\n };\n if (!open) {\n checkEnd();\n }\n ifr.forEach(function (ifr) {\n if (DOMIterator.matches(ifr, _this3.exclude)) {\n checkEnd();\n } else {\n _this3.onIframeReady(ifr, function (con) {\n if (filter(ifr)) {\n handled++;\n each(con);\n }\n checkEnd();\n }, checkEnd);\n }\n });\n }\n }, {\n key: 'createIterator',\n value: function createIterator(ctx, whatToShow, filter) {\n return document.createNodeIterator(ctx, whatToShow, filter, false);\n }\n }, {\n key: 'createInstanceOnIframe',\n value: function createInstanceOnIframe(contents) {\n return new DOMIterator(contents.querySelector('html'), this.iframes);\n }\n }, {\n key: 'compareNodeIframe',\n value: function compareNodeIframe(node, prevNode, ifr) {\n var compCurr = node.compareDocumentPosition(ifr),\n prev = Node.DOCUMENT_POSITION_PRECEDING;\n if (compCurr & prev) {\n if (prevNode !== null) {\n var compPrev = prevNode.compareDocumentPosition(ifr),\n after = Node.DOCUMENT_POSITION_FOLLOWING;\n if (compPrev & after) {\n return true;\n }\n } else {\n return true;\n }\n }\n return false;\n }\n }, {\n key: 'getIteratorNode',\n value: function getIteratorNode(itr) {\n var prevNode = itr.previousNode();\n var node = void 0;\n if (prevNode === null) {\n node = itr.nextNode();\n } else {\n node = itr.nextNode() && itr.nextNode();\n }\n return {\n prevNode: prevNode,\n node: node\n };\n }\n }, {\n key: 'checkIframeFilter',\n value: function checkIframeFilter(node, prevNode, currIfr, ifr) {\n var key = false,\n handled = false;\n ifr.forEach(function (ifrDict, i) {\n if (ifrDict.val === currIfr) {\n key = i;\n handled = ifrDict.handled;\n }\n });\n if (this.compareNodeIframe(node, prevNode, currIfr)) {\n if (key === false && !handled) {\n ifr.push({\n val: currIfr,\n handled: true\n });\n } else if (key !== false && !handled) {\n ifr[key].handled = true;\n }\n return true;\n }\n if (key === false) {\n ifr.push({\n val: currIfr,\n handled: false\n });\n }\n return false;\n }\n }, {\n key: 'handleOpenIframes',\n value: function handleOpenIframes(ifr, whatToShow, eCb, fCb) {\n var _this4 = this;\n\n ifr.forEach(function (ifrDict) {\n if (!ifrDict.handled) {\n _this4.getIframeContents(ifrDict.val, function (con) {\n _this4.createInstanceOnIframe(con).forEachNode(whatToShow, eCb, fCb);\n });\n }\n });\n }\n }, {\n key: 'iterateThroughNodes',\n value: function iterateThroughNodes(whatToShow, ctx, eachCb, filterCb, doneCb) {\n var _this5 = this;\n\n var itr = this.createIterator(ctx, whatToShow, filterCb);\n var ifr = [],\n elements = [],\n node = void 0,\n prevNode = void 0,\n retrieveNodes = function retrieveNodes() {\n var _getIteratorNode = _this5.getIteratorNode(itr);\n\n prevNode = _getIteratorNode.prevNode;\n node = _getIteratorNode.node;\n\n return node;\n };\n while (retrieveNodes()) {\n if (this.iframes) {\n this.forEachIframe(ctx, function (currIfr) {\n return _this5.checkIframeFilter(node, prevNode, currIfr, ifr);\n }, function (con) {\n _this5.createInstanceOnIframe(con).forEachNode(whatToShow, function (ifrNode) {\n return elements.push(ifrNode);\n }, filterCb);\n });\n }\n elements.push(node);\n }\n elements.forEach(function (node) {\n eachCb(node);\n });\n if (this.iframes) {\n this.handleOpenIframes(ifr, whatToShow, eachCb, filterCb);\n }\n doneCb();\n }\n }, {\n key: 'forEachNode',\n value: function forEachNode(whatToShow, each, filter) {\n var _this6 = this;\n\n var done = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function () {};\n\n var contexts = this.getContexts();\n var open = contexts.length;\n if (!open) {\n done();\n }\n contexts.forEach(function (ctx) {\n var ready = function ready() {\n _this6.iterateThroughNodes(whatToShow, ctx, each, filter, function () {\n if (--open <= 0) {\n done();\n }\n });\n };\n if (_this6.iframes) {\n _this6.waitForIframes(ctx, ready);\n } else {\n ready();\n }\n });\n }\n }], [{\n key: 'matches',\n value: function matches(element, selector) {\n var selectors = typeof selector === 'string' ? [selector] : selector,\n fn = element.matches || element.matchesSelector || element.msMatchesSelector || element.mozMatchesSelector || element.oMatchesSelector || element.webkitMatchesSelector;\n if (fn) {\n var match = false;\n selectors.every(function (sel) {\n if (fn.call(element, sel)) {\n match = true;\n return false;\n }\n return true;\n });\n return match;\n } else {\n return false;\n }\n }\n }]);\n return DOMIterator;\n}();\n\nvar Mark$1 = function () {\n function Mark(ctx) {\n classCallCheck(this, Mark);\n\n this.ctx = ctx;\n this.ie = false;\n var ua = window.navigator.userAgent;\n if (ua.indexOf('MSIE') > -1 || ua.indexOf('Trident') > -1) {\n this.ie = true;\n }\n }\n\n createClass(Mark, [{\n key: 'log',\n value: function log(msg) {\n var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'debug';\n\n var log = this.opt.log;\n if (!this.opt.debug) {\n return;\n }\n if ((typeof log === 'undefined' ? 'undefined' : _typeof(log)) === 'object' && typeof log[level] === 'function') {\n log[level]('mark.js: ' + msg);\n }\n }\n }, {\n key: 'escapeStr',\n value: function escapeStr(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n }\n }, {\n key: 'createRegExp',\n value: function createRegExp(str) {\n if (this.opt.wildcards !== 'disabled') {\n str = this.setupWildcardsRegExp(str);\n }\n str = this.escapeStr(str);\n if (Object.keys(this.opt.synonyms).length) {\n str = this.createSynonymsRegExp(str);\n }\n if (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) {\n str = this.setupIgnoreJoinersRegExp(str);\n }\n if (this.opt.diacritics) {\n str = this.createDiacriticsRegExp(str);\n }\n str = this.createMergedBlanksRegExp(str);\n if (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) {\n str = this.createJoinersRegExp(str);\n }\n if (this.opt.wildcards !== 'disabled') {\n str = this.createWildcardsRegExp(str);\n }\n str = this.createAccuracyRegExp(str);\n return str;\n }\n }, {\n key: 'createSynonymsRegExp',\n value: function createSynonymsRegExp(str) {\n var syn = this.opt.synonyms,\n sens = this.opt.caseSensitive ? '' : 'i',\n joinerPlaceholder = this.opt.ignoreJoiners || this.opt.ignorePunctuation.length ? '\\0' : '';\n for (var index in syn) {\n if (syn.hasOwnProperty(index)) {\n var value = syn[index],\n k1 = this.opt.wildcards !== 'disabled' ? this.setupWildcardsRegExp(index) : this.escapeStr(index),\n k2 = this.opt.wildcards !== 'disabled' ? this.setupWildcardsRegExp(value) : this.escapeStr(value);\n if (k1 !== '' && k2 !== '') {\n str = str.replace(new RegExp('(' + this.escapeStr(k1) + '|' + this.escapeStr(k2) + ')', 'gm' + sens), joinerPlaceholder + ('(' + this.processSynomyms(k1) + '|') + (this.processSynomyms(k2) + ')') + joinerPlaceholder);\n }\n }\n }\n return str;\n }\n }, {\n key: 'processSynomyms',\n value: function processSynomyms(str) {\n if (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) {\n str = this.setupIgnoreJoinersRegExp(str);\n }\n return str;\n }\n }, {\n key: 'setupWildcardsRegExp',\n value: function setupWildcardsRegExp(str) {\n str = str.replace(/(?:\\\\)*\\?/g, function (val) {\n return val.charAt(0) === '\\\\' ? '?' : '\\x01';\n });\n return str.replace(/(?:\\\\)*\\*/g, function (val) {\n return val.charAt(0) === '\\\\' ? '*' : '\\x02';\n });\n }\n }, {\n key: 'createWildcardsRegExp',\n value: function createWildcardsRegExp(str) {\n var spaces = this.opt.wildcards === 'withSpaces';\n return str.replace(/\\u0001/g, spaces ? '[\\\\S\\\\s]?' : '\\\\S?').replace(/\\u0002/g, spaces ? '[\\\\S\\\\s]*?' : '\\\\S*');\n }\n }, {\n key: 'setupIgnoreJoinersRegExp',\n value: function setupIgnoreJoinersRegExp(str) {\n return str.replace(/[^(|)\\\\]/g, function (val, indx, original) {\n var nextChar = original.charAt(indx + 1);\n if (/[(|)\\\\]/.test(nextChar) || nextChar === '') {\n return val;\n } else {\n return val + '\\0';\n }\n });\n }\n }, {\n key: 'createJoinersRegExp',\n value: function createJoinersRegExp(str) {\n var joiner = [];\n var ignorePunctuation = this.opt.ignorePunctuation;\n if (Array.isArray(ignorePunctuation) && ignorePunctuation.length) {\n joiner.push(this.escapeStr(ignorePunctuation.join('')));\n }\n if (this.opt.ignoreJoiners) {\n joiner.push('\\\\u00ad\\\\u200b\\\\u200c\\\\u200d');\n }\n return joiner.length ? str.split(/\\u0000+/).join('[' + joiner.join('') + ']*') : str;\n }\n }, {\n key: 'createDiacriticsRegExp',\n value: function createDiacriticsRegExp(str) {\n var sens = this.opt.caseSensitive ? '' : 'i',\n dct = this.opt.caseSensitive ? ['aàáảãạăằắẳẵặâầấẩẫậäåāą', 'AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ', 'cçćč', 'CÇĆČ', 'dđď', 'DĐĎ', 'eèéẻẽẹêềếểễệëěēę', 'EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ', 'iìíỉĩịîïī', 'IÌÍỈĨỊÎÏĪ', 'lł', 'LŁ', 'nñňń', 'NÑŇŃ', 'oòóỏõọôồốổỗộơởỡớờợöøō', 'OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ', 'rř', 'RŘ', 'sšśșş', 'SŠŚȘŞ', 'tťțţ', 'TŤȚŢ', 'uùúủũụưừứửữựûüůū', 'UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ', 'yýỳỷỹỵÿ', 'YÝỲỶỸỴŸ', 'zžżź', 'ZŽŻŹ'] : ['aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ', 'cçćčCÇĆČ', 'dđďDĐĎ', 'eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ', 'iìíỉĩịîïīIÌÍỈĨỊÎÏĪ', 'lłLŁ', 'nñňńNÑŇŃ', 'oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ', 'rřRŘ', 'sšśșşSŠŚȘŞ', 'tťțţTŤȚŢ', 'uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ', 'yýỳỷỹỵÿYÝỲỶỸỴŸ', 'zžżźZŽŻŹ'];\n var handled = [];\n str.split('').forEach(function (ch) {\n dct.every(function (dct) {\n if (dct.indexOf(ch) !== -1) {\n if (handled.indexOf(dct) > -1) {\n return false;\n }\n str = str.replace(new RegExp('[' + dct + ']', 'gm' + sens), '[' + dct + ']');\n handled.push(dct);\n }\n return true;\n });\n });\n return str;\n }\n }, {\n key: 'createMergedBlanksRegExp',\n value: function createMergedBlanksRegExp(str) {\n return str.replace(/[\\s]+/gmi, '[\\\\s]+');\n }\n }, {\n key: 'createAccuracyRegExp',\n value: function createAccuracyRegExp(str) {\n var _this = this;\n\n var chars = '!\"#$%&\\'()*+,-./:;<=>?@[\\\\]^_`{|}~¡¿';\n var acc = this.opt.accuracy,\n val = typeof acc === 'string' ? acc : acc.value,\n ls = typeof acc === 'string' ? [] : acc.limiters,\n lsJoin = '';\n ls.forEach(function (limiter) {\n lsJoin += '|' + _this.escapeStr(limiter);\n });\n switch (val) {\n case 'partially':\n default:\n return '()(' + str + ')';\n case 'complementary':\n lsJoin = '\\\\s' + (lsJoin ? lsJoin : this.escapeStr(chars));\n return '()([^' + lsJoin + ']*' + str + '[^' + lsJoin + ']*)';\n case 'exactly':\n return '(^|\\\\s' + lsJoin + ')(' + str + ')(?=$|\\\\s' + lsJoin + ')';\n }\n }\n }, {\n key: 'getSeparatedKeywords',\n value: function getSeparatedKeywords(sv) {\n var _this2 = this;\n\n var stack = [];\n sv.forEach(function (kw) {\n if (!_this2.opt.separateWordSearch) {\n if (kw.trim() && stack.indexOf(kw) === -1) {\n stack.push(kw);\n }\n } else {\n kw.split(' ').forEach(function (kwSplitted) {\n if (kwSplitted.trim() && stack.indexOf(kwSplitted) === -1) {\n stack.push(kwSplitted);\n }\n });\n }\n });\n return {\n 'keywords': stack.sort(function (a, b) {\n return b.length - a.length;\n }),\n 'length': stack.length\n };\n }\n }, {\n key: 'isNumeric',\n value: function isNumeric(value) {\n return Number(parseFloat(value)) == value;\n }\n }, {\n key: 'checkRanges',\n value: function checkRanges(array) {\n var _this3 = this;\n\n if (!Array.isArray(array) || Object.prototype.toString.call(array[0]) !== '[object Object]') {\n this.log('markRanges() will only accept an array of objects');\n this.opt.noMatch(array);\n return [];\n }\n var stack = [];\n var last = 0;\n array.sort(function (a, b) {\n return a.start - b.start;\n }).forEach(function (item) {\n var _callNoMatchOnInvalid = _this3.callNoMatchOnInvalidRanges(item, last),\n start = _callNoMatchOnInvalid.start,\n end = _callNoMatchOnInvalid.end,\n valid = _callNoMatchOnInvalid.valid;\n\n if (valid) {\n item.start = start;\n item.length = end - start;\n stack.push(item);\n last = end;\n }\n });\n return stack;\n }\n }, {\n key: 'callNoMatchOnInvalidRanges',\n value: function callNoMatchOnInvalidRanges(range, last) {\n var start = void 0,\n end = void 0,\n valid = false;\n if (range && typeof range.start !== 'undefined') {\n start = parseInt(range.start, 10);\n end = start + parseInt(range.length, 10);\n if (this.isNumeric(range.start) && this.isNumeric(range.length) && end - last > 0 && end - start > 0) {\n valid = true;\n } else {\n this.log('Ignoring invalid or overlapping range: ' + ('' + JSON.stringify(range)));\n this.opt.noMatch(range);\n }\n } else {\n this.log('Ignoring invalid range: ' + JSON.stringify(range));\n this.opt.noMatch(range);\n }\n return {\n start: start,\n end: end,\n valid: valid\n };\n }\n }, {\n key: 'checkWhitespaceRanges',\n value: function checkWhitespaceRanges(range, originalLength, string) {\n var end = void 0,\n valid = true,\n max = string.length,\n offset = originalLength - max,\n start = parseInt(range.start, 10) - offset;\n start = start > max ? max : start;\n end = start + parseInt(range.length, 10);\n if (end > max) {\n end = max;\n this.log('End range automatically set to the max value of ' + max);\n }\n if (start < 0 || end - start < 0 || start > max || end > max) {\n valid = false;\n this.log('Invalid range: ' + JSON.stringify(range));\n this.opt.noMatch(range);\n } else if (string.substring(start, end).replace(/\\s+/g, '') === '') {\n valid = false;\n this.log('Skipping whitespace only range: ' + JSON.stringify(range));\n this.opt.noMatch(range);\n }\n return {\n start: start,\n end: end,\n valid: valid\n };\n }\n }, {\n key: 'getTextNodes',\n value: function getTextNodes(cb) {\n var _this4 = this;\n\n var val = '',\n nodes = [];\n this.iterator.forEachNode(NodeFilter.SHOW_TEXT, function (node) {\n nodes.push({\n start: val.length,\n end: (val += node.textContent).length,\n node: node\n });\n }, function (node) {\n if (_this4.matchesExclude(node.parentNode)) {\n return NodeFilter.FILTER_REJECT;\n } else {\n return NodeFilter.FILTER_ACCEPT;\n }\n }, function () {\n cb({\n value: val,\n nodes: nodes\n });\n });\n }\n }, {\n key: 'matchesExclude',\n value: function matchesExclude(el) {\n return DOMIterator.matches(el, this.opt.exclude.concat(['script', 'style', 'title', 'head', 'html']));\n }\n }, {\n key: 'wrapRangeInTextNode',\n value: function wrapRangeInTextNode(node, start, end) {\n var hEl = !this.opt.element ? 'mark' : this.opt.element,\n startNode = node.splitText(start),\n ret = startNode.splitText(end - start);\n var repl = document.createElement(hEl);\n repl.setAttribute('data-markjs', 'true');\n if (this.opt.className) {\n repl.setAttribute('class', this.opt.className);\n }\n repl.textContent = startNode.textContent;\n startNode.parentNode.replaceChild(repl, startNode);\n return ret;\n }\n }, {\n key: 'wrapRangeInMappedTextNode',\n value: function wrapRangeInMappedTextNode(dict, start, end, filterCb, eachCb) {\n var _this5 = this;\n\n dict.nodes.every(function (n, i) {\n var sibl = dict.nodes[i + 1];\n if (typeof sibl === 'undefined' || sibl.start > start) {\n if (!filterCb(n.node)) {\n return false;\n }\n var s = start - n.start,\n e = (end > n.end ? n.end : end) - n.start,\n startStr = dict.value.substr(0, n.start),\n endStr = dict.value.substr(e + n.start);\n n.node = _this5.wrapRangeInTextNode(n.node, s, e);\n dict.value = startStr + endStr;\n dict.nodes.forEach(function (k, j) {\n if (j >= i) {\n if (dict.nodes[j].start > 0 && j !== i) {\n dict.nodes[j].start -= e;\n }\n dict.nodes[j].end -= e;\n }\n });\n end -= e;\n eachCb(n.node.previousSibling, n.start);\n if (end > n.end) {\n start = n.end;\n } else {\n return false;\n }\n }\n return true;\n });\n }\n }, {\n key: 'wrapMatches',\n value: function wrapMatches(regex, ignoreGroups, filterCb, eachCb, endCb) {\n var _this6 = this;\n\n var matchIdx = ignoreGroups === 0 ? 0 : ignoreGroups + 1;\n this.getTextNodes(function (dict) {\n dict.nodes.forEach(function (node) {\n node = node.node;\n var match = void 0;\n while ((match = regex.exec(node.textContent)) !== null && match[matchIdx] !== '') {\n if (!filterCb(match[matchIdx], node)) {\n continue;\n }\n var pos = match.index;\n if (matchIdx !== 0) {\n for (var i = 1; i < matchIdx; i++) {\n pos += match[i].length;\n }\n }\n node = _this6.wrapRangeInTextNode(node, pos, pos + match[matchIdx].length);\n eachCb(node.previousSibling);\n regex.lastIndex = 0;\n }\n });\n endCb();\n });\n }\n }, {\n key: 'wrapMatchesAcrossElements',\n value: function wrapMatchesAcrossElements(regex, ignoreGroups, filterCb, eachCb, endCb) {\n var _this7 = this;\n\n var matchIdx = ignoreGroups === 0 ? 0 : ignoreGroups + 1;\n this.getTextNodes(function (dict) {\n var match = void 0;\n while ((match = regex.exec(dict.value)) !== null && match[matchIdx] !== '') {\n var start = match.index;\n if (matchIdx !== 0) {\n for (var i = 1; i < matchIdx; i++) {\n start += match[i].length;\n }\n }\n var end = start + match[matchIdx].length;\n _this7.wrapRangeInMappedTextNode(dict, start, end, function (node) {\n return filterCb(match[matchIdx], node);\n }, function (node, lastIndex) {\n regex.lastIndex = lastIndex;\n eachCb(node);\n });\n }\n endCb();\n });\n }\n }, {\n key: 'wrapRangeFromIndex',\n value: function wrapRangeFromIndex(ranges, filterCb, eachCb, endCb) {\n var _this8 = this;\n\n this.getTextNodes(function (dict) {\n var originalLength = dict.value.length;\n ranges.forEach(function (range, counter) {\n var _checkWhitespaceRange = _this8.checkWhitespaceRanges(range, originalLength, dict.value),\n start = _checkWhitespaceRange.start,\n end = _checkWhitespaceRange.end,\n valid = _checkWhitespaceRange.valid;\n\n if (valid) {\n _this8.wrapRangeInMappedTextNode(dict, start, end, function (node) {\n return filterCb(node, range, dict.value.substring(start, end), counter);\n }, function (node) {\n eachCb(node, range);\n });\n }\n });\n endCb();\n });\n }\n }, {\n key: 'unwrapMatches',\n value: function unwrapMatches(node) {\n var parent = node.parentNode;\n var docFrag = document.createDocumentFragment();\n while (node.firstChild) {\n docFrag.appendChild(node.removeChild(node.firstChild));\n }\n parent.replaceChild(docFrag, node);\n if (!this.ie) {\n parent.normalize();\n } else {\n this.normalizeTextNode(parent);\n }\n }\n }, {\n key: 'normalizeTextNode',\n value: function normalizeTextNode(node) {\n if (!node) {\n return;\n }\n if (node.nodeType === 3) {\n while (node.nextSibling && node.nextSibling.nodeType === 3) {\n node.nodeValue += node.nextSibling.nodeValue;\n node.parentNode.removeChild(node.nextSibling);\n }\n } else {\n this.normalizeTextNode(node.firstChild);\n }\n this.normalizeTextNode(node.nextSibling);\n }\n }, {\n key: 'markRegExp',\n value: function markRegExp(regexp, opt) {\n var _this9 = this;\n\n this.opt = opt;\n this.log('Searching with expression \"' + regexp + '\"');\n var totalMatches = 0,\n fn = 'wrapMatches';\n var eachCb = function eachCb(element) {\n totalMatches++;\n _this9.opt.each(element);\n };\n if (this.opt.acrossElements) {\n fn = 'wrapMatchesAcrossElements';\n }\n this[fn](regexp, this.opt.ignoreGroups, function (match, node) {\n return _this9.opt.filter(node, match, totalMatches);\n }, eachCb, function () {\n if (totalMatches === 0) {\n _this9.opt.noMatch(regexp);\n }\n _this9.opt.done(totalMatches);\n });\n }\n }, {\n key: 'mark',\n value: function mark(sv, opt) {\n var _this10 = this;\n\n this.opt = opt;\n var totalMatches = 0,\n fn = 'wrapMatches';\n\n var _getSeparatedKeywords = this.getSeparatedKeywords(typeof sv === 'string' ? [sv] : sv),\n kwArr = _getSeparatedKeywords.keywords,\n kwArrLen = _getSeparatedKeywords.length,\n sens = this.opt.caseSensitive ? '' : 'i',\n handler = function handler(kw) {\n var regex = new RegExp(_this10.createRegExp(kw), 'gm' + sens),\n matches = 0;\n _this10.log('Searching with expression \"' + regex + '\"');\n _this10[fn](regex, 1, function (term, node) {\n return _this10.opt.filter(node, kw, totalMatches, matches);\n }, function (element) {\n matches++;\n totalMatches++;\n _this10.opt.each(element);\n }, function () {\n if (matches === 0) {\n _this10.opt.noMatch(kw);\n }\n if (kwArr[kwArrLen - 1] === kw) {\n _this10.opt.done(totalMatches);\n } else {\n handler(kwArr[kwArr.indexOf(kw) + 1]);\n }\n });\n };\n\n if (this.opt.acrossElements) {\n fn = 'wrapMatchesAcrossElements';\n }\n if (kwArrLen === 0) {\n this.opt.done(totalMatches);\n } else {\n handler(kwArr[0]);\n }\n }\n }, {\n key: 'markRanges',\n value: function markRanges(rawRanges, opt) {\n var _this11 = this;\n\n this.opt = opt;\n var totalMatches = 0,\n ranges = this.checkRanges(rawRanges);\n if (ranges && ranges.length) {\n this.log('Starting to mark with the following ranges: ' + JSON.stringify(ranges));\n this.wrapRangeFromIndex(ranges, function (node, range, match, counter) {\n return _this11.opt.filter(node, range, match, counter);\n }, function (element, range) {\n totalMatches++;\n _this11.opt.each(element, range);\n }, function () {\n _this11.opt.done(totalMatches);\n });\n } else {\n this.opt.done(totalMatches);\n }\n }\n }, {\n key: 'unmark',\n value: function unmark(opt) {\n var _this12 = this;\n\n this.opt = opt;\n var sel = this.opt.element ? this.opt.element : '*';\n sel += '[data-markjs]';\n if (this.opt.className) {\n sel += '.' + this.opt.className;\n }\n this.log('Removal selector \"' + sel + '\"');\n this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT, function (node) {\n _this12.unwrapMatches(node);\n }, function (node) {\n var matchesSel = DOMIterator.matches(node, sel),\n matchesExclude = _this12.matchesExclude(node);\n if (!matchesSel || matchesExclude) {\n return NodeFilter.FILTER_REJECT;\n } else {\n return NodeFilter.FILTER_ACCEPT;\n }\n }, this.opt.done);\n }\n }, {\n key: 'opt',\n set: function set$$1(val) {\n this._opt = _extends({}, {\n 'element': '',\n 'className': '',\n 'exclude': [],\n 'iframes': false,\n 'iframesTimeout': 5000,\n 'separateWordSearch': true,\n 'diacritics': true,\n 'synonyms': {},\n 'accuracy': 'partially',\n 'acrossElements': false,\n 'caseSensitive': false,\n 'ignoreJoiners': false,\n 'ignoreGroups': 0,\n 'ignorePunctuation': [],\n 'wildcards': 'disabled',\n 'each': function each() {},\n 'noMatch': function noMatch() {},\n 'filter': function filter() {\n return true;\n },\n 'done': function done() {},\n 'debug': false,\n 'log': window.console\n }, val);\n },\n get: function get$$1() {\n return this._opt;\n }\n }, {\n key: 'iterator',\n get: function get$$1() {\n return new DOMIterator(this.ctx, this.opt.iframes, this.opt.exclude, this.opt.iframesTimeout);\n }\n }]);\n return Mark;\n}();\n\nfunction Mark(ctx) {\n var _this = this;\n\n var instance = new Mark$1(ctx);\n this.mark = function (sv, opt) {\n instance.mark(sv, opt);\n return _this;\n };\n this.markRegExp = function (sv, opt) {\n instance.markRegExp(sv, opt);\n return _this;\n };\n this.markRanges = function (sv, opt) {\n instance.markRanges(sv, opt);\n return _this;\n };\n this.unmark = function (opt) {\n instance.unmark(opt);\n return _this;\n };\n return this;\n}\n\nreturn Mark;\n\n})));\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","module.exports = $;","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","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\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\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\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\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}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\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}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","/*! js-cookie v3.0.1 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (key, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n key = encodeURIComponent(key)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n key + '=' + converter.write(value, key) + stringifiedAttributes)\n }\n\n function get (key) {\n if (typeof document === 'undefined' || (arguments.length && !key)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var foundKey = decodeURIComponent(parts[0]);\n jar[foundKey] = converter.read(value, foundKey);\n\n if (key === foundKey) {\n break\n }\n } catch (e) {}\n }\n\n return key ? jar[key] : jar\n }\n\n return Object.create(\n {\n set: set,\n get: get,\n remove: function (key, attributes) {\n set(\n key,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport default api;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// 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};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\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__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"./\" + chunkId + \".bundle.js\";\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))","var inProgress = {};\nvar dataWebpackPrefix = \"something_big_project:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// 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__.p = \"/scripts/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t\"index\": 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunksomething_big_project\"] = self[\"webpackChunksomething_big_project\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","import './libraries/slimmageSettings';\r\nimport './libraries/slimmage';\r\n\r\n// App\r\nimport App from './app';\r\nimport PolyfillController from './controllers/polyfill';\r\n\r\n// Controllers\r\nimport HeaderController from './controllers/header';\r\nimport MediaController from './controllers/media';\r\nimport AVGController from './controllers/avg';\r\n\r\n(async () => {\r\n document.querySelector('html').classList.remove('no-js');\r\n\r\n const polyfills = new PolyfillController();\r\n await polyfills.init();\r\n\r\n try {\r\n const app = new App();\r\n app.resizeThrottle = 10;\r\n app.scrollThrottle = 100;\r\n window.app = app;\r\n \r\n app.polyfillController = polyfills;\r\n \r\n app.AVGController = new AVGController();\r\n app.headerController = new HeaderController();\r\n app.mediaController = new MediaController();\r\n\r\n // Modules\r\n const loadModules = () => {\r\n if (document.querySelector('.shareContainer')) {\r\n import( /* webpackChunkName: \"modules/share\" */ './controllers/share/controller').then(e => {\r\n app.shareController = new e.default();\r\n });\r\n }\r\n\r\n if (document.querySelector('.swiper-container')) {\r\n import( /* webpackChunkName: \"modules/slider\" */ './controllers/slider').then(e => {\r\n app.sliderController = new e.default();\r\n });\r\n }\r\n\r\n if (document.querySelector('[data-gallery]')) {\r\n import( /* webpackChunkName: \"modules/gallery\" */ './controllers/gallery').then(e => {\r\n app.galleryController = new e.default();\r\n });\r\n }\r\n\r\n if (app.getParameter('debugger')) {\r\n import( /* webpackChunkName: \"modules/console\" */ './controllers/debugger').then(e => {\r\n app.debuggerController = new e.default();\r\n });\r\n }\r\n };\r\n\r\n loadModules();\r\n\r\n await app.init();\r\n } catch(e) {\r\n console.error(`Something went wrong initializing the app`);\r\n throw e;\r\n };\r\n\r\n console.log(`App initialized`);\r\n document.documentElement.classList.remove('preventAnimations');\r\n\r\n})();"],"names":["App","_resizeFunctionsArr","_resizeFunctions","_resizeFunctionsCounter","_resizeTimeout","resizeThrottle","_scrollFunctionsArr","_scrollFunctions","_scrollFunctionsCounter","_scrollTimeout","scrollThrottle","_resizeAnimationPreventerTimeout","newPageWarning","selectricCBs","breakpoints","xs","gutter","size","sm","md","ml","lg","xl","animationDuration","detectBrowser","setEventListeners","fullHeightListener","resizeAnimationPreventer","initCSSBreakpoints","addNewWindowTitles","addNoOpener","addAnchorEnhancement","initSelectric","initTippy","initCopy","initScrollTo","initScrollToTop","initPrintListener","initLabelClick","initMultiAttention","window","addEventListener","resize","bind","passive","document","scroll","querySelectorAll","forEach","label","e","key","toLowerCase","substr","click","Array","from","filter","a","hasAttribute","setAttribute","runFunctions","i","length","setTimeout","func","Object","keys","push","resizeTimer","windowWidth","innerWidth","registerResizeEvent","documentElement","classList","add","clearTimeout","remove","fullHeight","style","setProperty","innerHeight","isOpera","opr","addons","opera","navigator","userAgent","indexOf","isFirefox","InstallTrigger","isIphone","match","isIpad","isSafari","isIE","documentMode","isEdge","StyleMedia","isChrome","test","vendor","isBlink","CSS","getComputedStyle","documentStyling","breakpoint","getPropertyValue","parseInt","NaN","text","querySelector","dataset","newWindowText","getAttribute","trim","replace","href","hostname","location","parentElement","hash","scrollTo","el","preventDefault","target","scrollPosition","elementCoords","top","behavior","selector","min","max","Math","floor","random","result","characters","charactersLength","charAt","box","getBoundingClientRect","body","docEl","scrollTop","pageYOffset","scrollLeft","pageXOffset","clientTop","clientLeft","left","round","scrollToTopContainer","button","registerScrollEvent","blur","then","select","$","selectric","arrowButtonMarkup","contains","on","val","wrap","cb","console","error","tippy","source","tippySource","allowHTML","content","innerHTML","interactive","copyContent","copy","input","createElement","type","position","height","overflow","value","appendChild","execCommand","parentNode","removeChild","toast","printTexts","printElements","printParent","span","print","printElement","width","reverse","currentBreakpoint","message","ToastController","log","name","tmp","items","search","split","index","decodeURIComponent","insertBreakpointIndicator","insertColumnTester","tester","cols","blocks","classes","slimmage","cr","incompleteControllers","hasOwnProperty","obj","newPage","warn","join","links","link","linkIndex","linkid","image","activeContent","activeLink","activeImage","clientHeight","offsetHeight","activeImages","scrollHeight","Cookies","AVGController","avgPermissionsCookie","get","JSON","parse","undefined","cookieBar","dataLayer","AcceptedAnalyticsCookies","AcceptedTrackingCookies","checked","LoadAVGScripts","CheckOpen","SetupButtonClicks","Functional","Analytics","Tracking","functional","analytics","tracking","set","stringify","expires","AgreeCookies","event","SavePreferences","configureButton","LoadConfigurationForm","OpenConfigurationModal","noscript","LoadGoogleTagManager","gtmTag","gtmcode","w","d","s","l","Date","getTime","f","getElementsByTagName","j","dl","async","src","insertBefore","SetOrUpdatePermissionsCookie","toString","getElementById","saveConfirmation","ConfigPromise","fetch","response","html","parser","DOMParser","DOM","parseFromString","Promise","resolve","tempImg","Image","onload","onerror","Error","form","modal","id","closeConfigurationModal","closePopup","HeaderSearchController","HeaderController","headerElement","menuButton","previousScroll","scrollCounter","threshold","init","headerSearchController","app","toggleMenu","toggle","show","hide","SearchSuggestion","delegate","Mark","formInput","searchResultsContainer","apiEndpoint","abortController","waiterTime","changeWaiter","minInput","originalSearchSuggestions","originalSearchTitle","mark","AbortController","li","cloneNode","showSearchResults","hideSearchResults","focus","handleInputChange","submit","resetResults","focusButton","clearButton","removeAttribute","arrowUp","delegateTarget","arrowDown","nextElementSibling","previousElementSibling","query","updateResults","clickable","abort","fetchResults","data","insertSearchSuggestions","suggestions","Suggestions","item","suggestion","Title","url","Url","generate","TotalResults","options","signal","encodeURIComponent","json","MediaController","autoinit","youtube","vimeo","media","mediatype","tag","firstScriptTag","onYouTubeIframeAPIReady","YouTubeAPILoaded","module","Player","iframe","player","currentTarget","closest","videoPoster","play","YT","events","playVideo","imgtag","protocol","sourceRegex","imgsrc","imgElement","embed","embedIframe","outerHTML","tempDiv","before","firstElementChild","PolyfillController","polyfills","loaded","loadPolyfills","all","intersectionObserver","proxy","entries","customEvent","NodeList","prototype","Element","matches","msMatchesSelector","webkitMatchesSelector","nodeType","arr","defineProperty","configurable","enumerable","writable","argArr","slice","call","arguments","docFrag","createDocumentFragment","argItem","isNode","Node","createTextNode","String","CharacterData","DocumentType","ownProps","resArray","Event","CustomEvent","params","bubbles","cancelable","detail","evt","createEvent","initCustomEvent","CustomHTMLElement","defaultProperties","HTMLID","_id","_template","_html","_object","_properties","forceCreate","containerElement","firstChild","forceRenew","getOrCreate","properties","toUpperCase","substring","propertyKey","setKeyMethodName","givenValue","_property","_ensureType","isNaN","setProperties","_createPropertyMethods","require","apply","beginWebPTest","_testingWebP","WebP","setAttr","elem","className","tabIndex","useMap","is_blank","v","hyphenProp","currentStyle","b","c","parseFloat","temp","visibility","cssFloat","pixels","offsetWidth","nodesToArray","nodeList","array","visitor","mutator","injector","m","exec","q","qr","newq","elementWidth","previousSrc","previousPixelWidth","previousElement","devicePixelRatio","high_density","low_density","idealWidth","ceil","finalWidth","u","newSrc","_","k","p","zoom","toFixed","h","maxwidth","maxheight","img","cssMaxWidth","imageWidth","delay","il","jl","kl","timeoutid","webp_waiting","stopwatch","newImages","n","ns","div","contents","textContent","ai","attributes","specified","childImages","ci","totalImages","images","dpr","clientWidth","dprWidth","dprHeight","changed","readyCalled","removeEventListener","attachEvent","verbose","tryWebP","maxWidth","widthStep","jpegQuality","jpegRetinaQuality","webpTimeout","polyfillController","headerController","mediaController","loadModules","shareController","sliderController","galleryController","getParameter","debuggerController"],"sourceRoot":""}