{"version":3,"file":"main.e079ef0c65904909.js","mappings":"sIAAO,MAAMA,EAA4B,CAAC,cAiCnC,IAAKC,EAAZ,SAAYA,GACVA,SAAAC,QAAA,oBACAD,EAAAE,IAAA,MACAF,EAAAG,MAAA,eACAH,EAAAI,cAAA,wBACAJ,EAAAK,OAAA,SACAL,EAAAM,SAAA,kBACAN,EAAAO,MAAA,eACAP,EAAAQ,SAAA,kBACAR,EAAAS,UAAA,mBACAT,EAAAU,mBAAA,8BACAV,EAAAW,MAAA,eACAX,EAAAY,QAAA,iBACAZ,EAAAa,KAAA,cACAb,EAAAc,SAAA,kBACAd,EAAAe,OAAA,0BACAf,EAAAgB,QAAA,iBACAhB,EAAAiB,QAAA,wBACAjB,EAAAkB,UAAA,+BACAlB,EAAAmB,MAAA,sBACAnB,EAAAoB,MAAA,eApBUpB,CAqBZ,CArBA,CAAYA,GAAqB,IAuB1B,MAAMqB,EAAyB,CACpCrB,EAAsBE,IACtBF,EAAsBC,QACtBD,EAAsBK,OACtBL,EAAsBU,mBACtBV,EAAsBe,+SCHgBO,MAAA,2BACRA,MAAA,8BACOA,MAAA,8BACRA,MAAA,8NC7C3BA,MAAA,YAEEA,MAAA,GACFA,iCADEA,MAAA,GAAAA,MAAA,IAAAC,GAAAC,uBAAA,qGAlBNF,MAAA,UAAAA,CAKoC,UALpCA,CAKoC,UALpCA,CAKoC,oBAKhBA,MAAA,kBAAAG,IAAAH,MAAAI,IAAA,MAAAC,GAAAL,QAAUK,UAAAC,iCAAAH,IAA0CH,MAAAK,GAAAE,2BAA0B,GAGnDP,UAG3CA,MAAA,EAAAQ,EAAA,aAKFR,gDApBGA,MAAA,UAAAA,MAAA,EAAAS,EAAA,OAAAC,GAAAC,MAAA,UAAAD,GAAAC,KAAA,OAAAD,GAAAC,MAAA,UAAAD,GAAAC,OAUeX,MAAA,GAAAA,MAAA,UAAAU,GAAAE,WAAAZ,CAAsB,gBAAAU,GAAAG,iBAAtBb,CAAsB,QAAAc,IAKhCd,MAAA,GAAAA,MAAA,OAAAU,GAAAR,0EAaRF,MAAA,UACEA,MAAA,GACFA,iCADEA,MAAA,GAAAA,MAAA,IAAAe,GAAAC,oBAAA,uDAHFhB,MAAA,EAAAiB,GAAA,sBAEAjB,MAAA,EAAAkB,GAAA,eAIAlB,MAAA,EAAAmB,GAAA,8CANanB,MAAA,yBAAAoB,GAAAC,wBAAA,KAAAD,GAAAC,wBAAAC,UAENtB,MAAA,GAAAA,MAAA,OAAAoB,GAAAG,0BAIMvB,MAAA,GAAAA,MAAA,yBAAAoB,GAAAI,uBAAA,KAAAJ,GAAAI,uBAAAF,yIAwCHtB,MAAA,YASEA,MAAA,eAIFA,kEAZKA,MAAA,UAAAA,MAAA,EAAAyB,GAAAC,GAAAC,WAAA,UAAAD,GAAAf,KAAAiB,GAAAC,SAAAD,GAAAC,UAAAD,GAAAE,aAAAC,GAAAC,WAAAJ,GAAAK,KAAAF,GAAAC,WAAAJ,GAAAK,MAQKjC,MAAA,GAAAA,MAAA,WAAA4B,GAAAC,4DAMV7B,MAAA,WAAAA,CAE4C,aAIxCA,MAAA,EAAAkC,GAAA,sBACFlC,QAEAA,MAAA,eAIFA,sDAXKA,MAAA,uBAAAmC,GAAAC,OAEGpC,MAAA,GAAAA,MAAA,YAAA4B,GAAAC,UAES7B,MAAA,GAAAA,MAAA,mBAAA4B,GAAAS,gBAAAf,UAGPtB,MAAA,GAAAA,MAAA,WAAA4B,GAAAC,wDAWN7B,MAAA,qBAAcA,MAAA,kBAAAG,IAAAH,MAAAsC,IAAA,MAAAV,GAAA5B,MAAA,GAAAuC,UAAAC,EAAAxC,QAAUwC,SAAAC,gCAAAtC,GAAAyB,IAAgDY,EAAAE,qBAAsB1C,MAAAwC,EAAAjC,2BAA0B,GAK5EP,+DAJ9BA,MAAA,UAAA4B,GAAAe,YAAA3C,CAA6B,WAAA4B,GAAAC,SAA7B7B,CAA6B,KAAA4B,GAAAK,GAAAW,GAA7B5C,CAA6B,gBAAA4B,GAAAiB,iEAUzC7C,MAAA,GACEA,MAAA,EAAA8C,GAAA,sBACF9C,2CADeA,MAAA,GAAAA,MAAA,mBAAA4B,GAAAmB,6CAGf/C,MAAA,GACEA,MAAA,GACFA,2CADEA,MAAA,GAAAA,MAAA,IAAA4B,GAAAoB,MAAA,mCAKJhD,MAAA,cAAAA,CAGuB,aAGrBA,MAAA,GACFA,QAEEA,MAAA,aACAA,MAAA,GACFA,wDATQA,MAAA,UAAAiD,GAAAC,mBAINlD,MAAA,GAAAA,MAAA,cAAA4B,GAAAuB,cAAA,KAIAnD,MAAA,GAAAA,MAAA,WAAA4B,GAAAwB,IAAA,mCApCNpD,MAAA,QAAAA,CACmE,YAI/DA,MAAA,EAAAqD,GAAA,uBAOArD,MAAA,eAIEA,MAAA,EAAAsD,GAAA,uBAIAtD,MAAA,EAAAuD,GAAA,uBAIFvD,QAEAA,MAAA,EAAAwD,GAAA,iBAeFxD,wDAxCGA,MAAA,iCAAA4B,GAAA6B,gBASczD,MAAA,GAAAA,MAAA,QAAA4B,GAAA6B,gBAGPzD,MAAA,GAAAA,MAAA,UAAA0D,GAAAR,mBAGSlD,MAAA,GAAAA,MAAA,QAAA4B,GAAAoB,OAIAhD,MAAA,GAAAA,MAAA,OAAA4B,GAAAoB,OAORhD,MAAA,GAAAA,MAAA,QAAA4B,GAAA6B,kEAkBbzD,MAAA,GACEA,MAAA,EAAA2D,GAAA,sBAEF3D,2CAFeA,MAAA,GAAAA,MAAA,mBAAA4B,GAAAgC,yEASb5D,MAAA,GACEA,MAAA,EAAA6D,GAAA,sBACF7D,2CADeA,MAAA,GAAAA,MAAA,mBAAA4B,GAAAmB,6CAGf/C,MAAA,GACEA,MAAA,GACFA,2CADEA,MAAA,GAAAA,MAAA,IAAA4B,GAAAoB,MAAA,mCAVJhD,MAAA,eAKEA,MAAA,EAAA8D,GAAA,uBAIA9D,MAAA,EAAA+D,GAAA,uBAIF/D,sDAXQA,MAAA,UAAAgE,GAAAd,mBAGSlD,MAAA,GAAAA,MAAA,QAAA4B,GAAAoB,OAIAhD,MAAA,GAAAA,MAAA,OAAA4B,GAAAoB,wDAMjBhD,MAAA,GACEA,MAAA,EAAAiE,EAAA,sBAEFjE,2CAFeA,MAAA,GAAAA,MAAA,mBAAA4B,GAAAsC,yHAvGnBlE,MAAA,GAGEA,MAAA,eAEQA,MAAA,iBAAAG,IAAAH,MAAAmE,IAAA,MAAAvC,GAAA5B,MAAA,GAAAuC,UAAA6B,EAAApE,QAAA+B,GAAA/B,MAAA,UAASA,MAAAoE,EAAAC,mBAAAlE,GAA2B4B,GAAAC,WAAAJ,GAAAK,KAAoC,GAE9EjC,MAAA,EAAAsE,GAAA,cAeAtE,MAAA,EAAAuE,GAAA,cAeAvE,MAAA,EAAAwE,GAAA,cA6CAxE,MAAA,EAAAyE,GAAA,uBAKAzE,MAAA,EAAA0E,GAAA,iBAeA1E,MAAA,EAAA2E,GAAA,uBAKF3E,QAEFA,wDA1GUA,MAAA,GAAAA,MAAA,UAAAA,MAAA,EAAA4E,GAAAC,GAAAlD,aAIA3B,MAAA,GAAAA,MAAA,OAAA6E,GAAAC,QAAAlD,GAAAS,iBAeArC,MAAA,GAAAA,MAAA,OAAA4B,GAAAS,iBAeArC,MAAA,GAAAA,MAAA,OAAA6E,GAAAlD,YA6CS3B,MAAA,GAAAA,MAAA,OAAA4B,GAAAgC,uBAKN5D,MAAA,GAAAA,MAAA,QAAA6E,GAAAlD,YAeM3B,MAAA,GAAAA,MAAA,OAAA4B,GAAAsC,gDAeblE,MAAA,gCADFA,MAAA,GACEA,MAAA,EAAA+E,GAAA,uBACF/E,yCADiBA,MAAA,GAAAA,MAAA,mBAAAgF,sDAGjBhF,MAAA,WAAAA,CAC+B,aAI3BA,MAAA,EAAAiF,GAAA,sBACFjF,QAEAA,MAAA,eAIFA,2CATQA,MAAA,GAAAA,MAAA,YAAA4B,GAAAC,UAES7B,MAAA,GAAAA,MAAA,mBAAA4B,GAAAS,gBAAAf,UAGPtB,MAAA,GAAAA,MAAA,WAAA4B,GAAAC,4DAUR7B,MAAA,GACEA,MAAA,EAAAkF,GAAA,sBACFlF,2CADeA,MAAA,GAAAA,MAAA,mBAAA4B,GAAAmB,6CAGf/C,MAAA,GACEA,MAAA,GACFA,2CADEA,MAAA,GAAAA,MAAA,IAAA4B,GAAAoB,MAAA,+BAMFhD,MAAA,gCADFA,MAAA,GACEA,MAAA,EAAAmF,GAAA,uBACFnF,yCADiBA,MAAA,GAAAA,MAAA,mBAAAgF,8JAIfhF,MAAA,YAWEA,MAAA,eAGFA,kEAbKA,MAAA,UAAAA,MAAA,EAAAoF,GAAA,UAAAC,GAAA1E,KAAAiB,GAAAC,SAAAD,GAAAC,UAAAD,GAAAE,aAAAC,GAAAC,WAAAJ,GAAAK,KAAAF,GAAAC,WAAAJ,GAAAK,IAAA,UAAAoD,GAAAC,cAAA,SAAAD,GAAAC,cAAAD,GAAAE,iBAUKvF,MAAA,GAAAA,MAAA,WAAA4B,GAAAC,uCAXV7B,MAAA,EAAAwF,GAAA,sCAAMxF,MAAA,OAAAyF,GAAAX,2HAxCV9E,MAAA,eACQA,MAAA,iBAAAG,IAAAH,MAAA0F,IAAA,MAAA9D,GAAA5B,MAAA,GAAAuC,UAAAoD,EAAA3F,QAAA+B,GAAA/B,MAAA,UAASA,MAAA2F,EAAAtB,mBAAAlE,GAA2B4B,GAAAC,WAAAJ,GAAAK,KAAoC,GAE9EjC,MAAA,EAAA4F,GAAA,uBAIA5F,MAAA,EAAA6F,GAAA,cAcA7F,MAAA,eAIEA,MAAA,EAAA8F,GAAA,uBAIA9F,MAAA,EAAA+F,GAAA,uBAIF/F,QAEAA,MAAA,EAAAgG,GAAA,uBAIAhG,MAAA,EAAAiG,GAAA,0BAAAjG,OAmBFA,wDAvDiBA,MAAA,GAAAA,MAAA,gBAAAkG,GAAAZ,eAITtF,MAAA,GAAAA,MAAA,OAAA4B,GAAAS,iBAeErC,MAAA,GAAAA,MAAA,UAAAA,MAAA,EAAAmG,GAAAD,GAAAX,iBAGSvF,MAAA,GAAAA,MAAA,QAAA4B,GAAAoB,OAIAhD,MAAA,GAAAA,MAAA,OAAA4B,GAAAoB,OAMFhD,MAAA,GAAAA,MAAA,iBAAAkG,GAAAZ,6CApJnBtF,MAAA,EAAAoG,GAAA,uBA+GApG,MAAA,EAAAqG,GAAA,0BAAArG,4CA/GeA,MAAA,OAAAsG,GAAAC,cAAAvG,CAAqB,WAAAwG,8BA6L5BxG,MAAA,gCARNA,MAAA,GAEEA,MAAA,oBAAAA,CAG4B,YAGxBA,MAAA,EAAAyG,GAAA,uBACFzG,UAIJA,yCALqBA,MAAA,GAAAA,MAAA,mBAAA0G,kDAsBb1G,MAAA,qBAGcA,MAAA,kBAAAG,IAAAH,MAAA2G,IAAA,MAAAC,GAAA5G,QAAAuC,UAAAX,EAAA5B,MAAA,GAAAuC,UAAAsE,GAAA7G,QAAU4B,SAAAkF,yBAAA3G,GAAAyG,IAA8CC,GAAAnE,qBAAsB1C,MAAA6G,GAAAtG,2BAA0B,GAEpCP,6EAJpEA,MAAA,WAAA4B,GAAAC,UAAA+E,GAAA/E,SAAA7B,CAA4C,UAAA4G,GAAAG,QAA5C/G,CAA4C,yBAAAgH,GAAAC,UAAAL,GAAAM,KAAA,KAA5ClH,CAA4C,kBAAAgH,GAAAC,UAAArF,GAAAuF,YAAA7F,SAAA,gCAQtDtB,MAAA,2KAFJA,MAAA,GACEA,MAAA,YACEA,MAAA,EAAAoH,GAAA,uBACFpH,QACFA,gEAHOA,MAAA,GAAAA,MAAA,UAAAA,MAAA,EAAAqH,IAAAzF,GAAA6B,eAAA7B,GAAA0F,iBACYtH,MAAA,GAAAA,MAAA,mBAAA4B,GAAAuF,YAAA7F,SAAAtB,CAA8C,0BAAAA,MAAA,EAAAuH,GAAAX,GAAAM,qGAhBnElH,MAAA,YAOEA,MAAA,EAAAwH,GAAA,uBAOAxH,MAAA,EAAAyH,GAAA,uBAMFzH,sEAnBKA,MAAA,UAAAA,MAAA,EAAA0H,GAAAd,GAAA/E,SAAA+E,GAAAG,UAMY/G,MAAA,GAAAA,MAAA,OAAA2H,GAAAhG,aAAAC,GAAA6B,gBAOAzD,MAAA,GAAAA,MAAA,kBAAA2H,GAAAV,yCAfnBjH,MAAA,GACEA,MAAA,EAAA4H,GAAA,cAqBF5H,2CAhBwBA,MAAA,GAAAA,MAAA,UAAA4B,GAAAiG,uDAkBxB7H,MAAA,EAAA8H,GAAA,wDACa9H,MAAA,mBAAA4B,GAAAmG,+IA9Bf/H,MAAA,YAKEA,MAAA,EAAAgI,GAAA,uBAwBAhI,MAAA,EAAAiI,GAAA,aAGFjI,sDAhCKA,MAAA,UAAAA,MAAA,EAAAkI,GAAAC,GAAAxG,YAAAwG,GAAAxG,aAKY3B,MAAA,GAAAA,MAAA,OAAA4B,GAAAuF,aAwBDnH,MAAA,GAAAA,MAAA,QAAAmI,GAAAxG,0CAhDpB3B,MAAA,GAEEA,MAAA,EAAAoI,GAAA,uBAeApI,MAAA,EAAAqI,GAAA,0BAAArI,OAsCFA,6CArDiBA,MAAA,GAAAA,MAAA,OAAAsI,GAAAC,QAAAvI,CAAe,WAAA0G,sDAwD9B1G,MAAA,YAEEA,MAAA,EAAAwI,GAAA,sBACFxI,2CAFKA,MAAA,QAAA4B,GAAAS,iBACUrC,MAAA,GAAAA,MAAA,mBAAA4B,GAAAmG,4CA5DjB/H,MAAA,EAAAyI,GAAA,uBAyDAzI,MAAA,EAAA0I,GAAA,0BAAA1I,4CAzDeA,MAAA,OAAA2I,GAAApC,cAAAvG,CAAqB,WAAA4I,kCA3LxC5I,MAAA,kBAMEA,MAAA,EAAA6I,GAAA,sBAmLA7I,MAAA,EAAA8I,GAAA,sBAoEF9I,0CA5PWA,MAAA,WAAA4B,GAAAC,SAAA7B,CAA2B,KAAA4B,GAAAK,GAA3BjC,CAA2B,QAAA4B,GAAAoB,MAA3BhD,CAA2B,OAAA4B,GAAAmH,oCAHxC/I,MAAA,GAEEA,MAAA,EAAAgJ,GAAA,oBA+PFhJ,qCA/PcA,MAAA,GAAAA,MAAA,OAAA4B,GAAAqH,4RDrChB,IAAIC,GAAS,EAKAC,GAAe,MAAtB,MAAOA,GACXC,YAAmB9H,IAAA+H,KAAA/H,WAA6B,mDADrC6H,IAAenJ,aAAA,oCAAfmJ,GAAeG,UAAA,sCAAfH,EAAe,KAMfI,GAA6B,MAApC,MAAOA,GACXH,YAAmB9H,IAAA+H,KAAA/H,WAA6B,mDADrCiI,IAA6BvJ,aAAA,oCAA7BuJ,GAA6BD,UAAA,8CAA7BC,EAA6B,KAM7BC,GAA4B,MAAnC,MAAOA,GACXJ,YAAmB9H,IAAA+H,KAAA/H,WAA6B,mDADrCkI,IAA4BxJ,aAAA,oCAA5BwJ,GAA4BF,UAAA,6CAA5BE,EAA4B,KAM5BC,GAAoB,MAA3B,MAAOA,GACXL,YAAmB9H,IAAA+H,KAAA/H,WAA6B,mDADrCmI,IAAoBzJ,aAAA,oCAApByJ,GAAoBH,UAAA,kCAApBG,EAAoB,KAoBpBC,GAAN,MAAMA,GA8DX,OAAWtG,GACT,OAAOiG,KAAKxB,KAAK8B,QAAU,CAC7B,CAGAP,cA1DgBC,KAAA/B,gBAAiB,EAKjB+B,KAAAxH,UAAW,EAKXwH,KAAAvH,YAAa,EAKbuH,KAAA5F,gBAAiB,EAKjB4F,KAAAxB,KAAuB,GAKvBwB,KAAApH,GAAK,mBAAmBiH,KAe/BG,KAAAO,kBAAmB,EAKnBP,KAAAJ,OAAQ,EAEDI,KAAA1G,aAAc,EAEb0G,KAAAQ,aAAe,IAAIC,MACnBT,KAAAU,OAAS,IAAID,MAMvBT,KAAAxG,eAAgB,CAER,CAEfmH,mBACE,EAAKC,SAAMZ,KAAKlC,eACdkC,KAAKvC,2BACLuC,KAAKa,gBAET,CAEAA,gBAEIb,KAAKlG,eADP,EAAI8G,SAAMZ,KAAKxB,MACQ,EAGFwB,KAAKxB,KAAKsC,OAAQC,IAAQA,GAAIrD,SAAS4C,MAC9D,CAEA7C,yBAAyBuD,GAAiBD,MACpC,EAACH,SAAMG,OAAQ,EAACH,SAAMI,MACxBD,GAAIrD,QAAUsD,GACdhB,KAAKU,OAAOO,KAAK,CACfD,SACAD,OACAG,QAASlB,KAAKpH,MAGlB,MAAMuI,GAAQnB,KAAKxB,KAAK,GACXwB,KAAKxB,KAAK4C,MAAOL,IACrBA,GAAIrD,UAAYyD,GAAMzD,UAG7BsC,KAAK1G,YAAc6H,GAAMzD,QACzBsC,KAAKxG,eAAgB,GAErBwG,KAAKxG,eAAgB,EAEvBwG,KAAKa,eACP,CAEAQ,4BAA4BL,GAAgBC,IAAO,GACjDjB,KAAKxB,KAAK8C,QAASP,KACZA,GAAIvI,WAAUuI,GAAIrD,QAAUsD,MAEnChB,KAAKvC,yBAAyBuD,IAC9BhB,KAAKa,gBACDI,IACFjB,KAAKQ,aAAaS,KAAK,CAAEC,QAASlB,KAAKpH,GAAIoI,UAE/C,mDAnHWX,GAAuB,oCAAvBA,GAAuBJ,UAAA,0BAAAsB,eAAA,SAAAC,GAAAC,GAAAC,OAAA,EAAAF,cAKpB1B,GAAe,EAAwBA,aACvCM,GAAoB,EAAyBA,u3BAZzDzJ,MAAA,EAAAgL,EAAA,yBAAAhL,OACAA,MAAA,EAAAiL,EAAA,yBAAAjL,OACAA,MAAA,EAAAkL,GAAA,yBAAAlL,OACAA,MAAA,EAAAmL,GAAA,yBAAAnL,6BAGS0J,MAAuB0B,MAAA,IAVnCC,QAAY,EAAEC,EAAAC,IAAA,yBAUF7B,IAgIN,IAAM8B,GAAN,MAAMA,GAsFXpC,YAAoBqC,GAAkCC,GAA0BC,IAA5DtC,KAAAoC,SAAkCpC,KAAAqC,QAA0BrC,KAAAsC,aAjFhEtC,KAAAuC,UAA+B,GAUtCvC,KAAApC,UAAgC,SASzBoC,KAAAwC,eAAgB,EAShBxC,KAAA9D,gBAAiB,EACjB8D,KAAAvE,OAAQ,EACRuE,KAAA/D,cAAkC,QAClC+D,KAAA1H,YAAa,EACb0H,KAAA1I,KAA6C,GAG7C0I,KAAAyC,iBAAkB,EAClBzC,KAAA0C,kBAAmB,EACnB1C,KAAA9H,0BAA2B,EAC3B8H,KAAAnJ,uBAAyB,GAEzBmJ,KAAAd,SAAU,EAEVc,KAAA9C,eAAgB,EAEhB8C,KAAA2C,eAAgB,EAEhB3C,KAAA4C,cAAe,EACf5C,KAAAjH,MAAuB,KAOtBiH,KAAA6C,YAAc,IAAIpC,MAgB3BT,KAAA8C,YAAc,IAAIC,IAAI,CAAC,OAAQ,MAAO,IAAK,IAAK,SAAU,KAAM,OAMvD/C,KAAAQ,aAAe,IAAIC,MACnBT,KAAAU,OAAS,IAAID,MACbT,KAAAgD,yBAA2B,IAAIvC,MAC/BT,KAAAiD,UAAY,IAAIxC,MAwHzBT,KAAAkD,kBAAoB,KAC1B,MAAMC,MAAeC,MAAKpD,KAAKqC,MAAMgB,cAAc,kBACnDrD,KAAKsD,OAAOhC,QAASiC,KACnB,MAAM5K,EAAc4K,GAAM/K,UAAY+K,GAAM9K,YAAeuH,KAAKwD,eAAe7K,WAAW4K,GAAM3K,IAC1F6K,GAAUN,GAAaE,cAAc,IAAIE,GAAM3K,MACrD,GAAI6K,GAAS,CACX,MAAMC,GAAOD,GAAQE,QAAQ,SAC7B,IAAKJ,GAAM/K,UAAa+K,GAAM/K,UAAY+K,GAAM9K,WAAa,CAC3D,MAAMmL,GAAKF,GAAKL,cAAc,aAC9BrD,KAAK6D,YAAYD,GAAI,OAAQjL,GAE/BqH,KAAK8D,oBAAoBJ,GAAM/K,KAElC,EAGKqH,KAAA6D,YAAc,CAACxB,GAAe0B,GAAkBC,KACtD,MAAMC,GAAUD,EACZ,CACEE,GAAIA,IAAMlE,KAAKsC,WAAW6B,SAAS9B,GAAM0B,IACzCK,OAAQA,IAAM/B,IAAMgC,UAAUC,IAAIP,KAEpC,CACEG,GAAIA,IAAMlE,KAAKsC,WAAWiC,YAAYlC,GAAM0B,IAC5CK,OAAQA,IAAM/B,IAAMgC,UAAUG,OAAOT,KAE3C,IACEE,GAAQC,WAERD,GAAQG,UAnJ2F,CAEvGzD,kBACMX,KAAK1H,YAAc0H,KAAKyC,kBAC1BzC,KAAKsD,OAAOhC,QAASiC,KACnBA,GAAM9F,2BACN8F,GAAM/C,aAAaiE,QAAKC,KAAe1E,OAAO2E,UAAW3D,KACvDhB,KAAK4E,0BACL5E,KAAKQ,aAAaS,KAAKD,GAAK,GAE9BuC,GAAM7C,OAAO+D,QAAKC,KAAe1E,OAAO2E,UAAW3D,KACjDhB,KAAKU,OAAOO,KAAKD,GAAK,EACvB,GAEHhB,KAAK4E,0BACL5E,KAAK3G,sBAEP2G,KAAKwD,eAAeX,YAAY4B,QAAKC,KAAe1E,OAAO2E,UAAW3D,KACpEhB,KAAK6C,YAAY5B,KAAKD,GAAK,GAG7B6D,WAAW,KACT7E,KAAK8E,kBACL9E,KAAKkD,mBAAiB,EACrB,KAEHlD,KAAKoC,MAAM2C,eACb,CAEA1L,qBACE2G,KAAKrI,oBAAsBqI,KAAKsD,OAAO0B,OAAO,CAACC,GAAO1B,KAC7C0B,GAAQ1B,GAAMzJ,cACpB,GACHkG,KAAK4E,yBACP,CAEAA,0BACE,MAAMM,GAAalF,KAAKsD,OAAO6B,UACzBC,GAAaF,GAAW,GACjBA,GAAW9D,MAAOmC,IACtBA,GAAMjK,cAAgB8L,GAAW9L,cAAgBiK,GAAM/J,gBAI9DwG,KAAKzI,WAAa6N,GAAW9L,YAC7B0G,KAAKxI,kBAAmB,GAExBwI,KAAKxI,kBAAmB,CAE5B,CAEA4B,gCAAgC4H,GAAgBuC,IAC9CA,GAAMlC,4BAA4BL,IAClChB,KAAK4E,yBACP,CAEAE,mBAEEO,EADsBjC,MAAKpD,KAAKqC,MAAMiD,iBAAiB,wBACzChE,QAASiE,KACrB,GAAIA,GAAIC,SAASlF,OACf,UAAWmF,MAAUC,MAAMC,KAAKJ,GAAIC,UAC7BxF,KAAK8C,YAAY8C,IAAIH,GAAOI,UAC/BC,QAAQC,MAAM,+DAA+DL,MAAMC,KAAK3F,KAAK8C,aAAakD,KAAK,SAAQ,EAKjI,CAEA/O,iCAAiC+J,IAC/BhB,KAAKsD,OAAOhC,QAASiC,KACnBA,GAAMlC,4BAA4BL,IAAO,EAAK,GAEhDhB,KAAK3G,qBACL2G,KAAKiD,UAAUhC,KAAKD,GACtB,CAEArI,WAAWuI,IACT,OAAOlB,KAAKwD,gBAAkBxD,KAAKwD,eAAe7K,WAAWuI,GAC/D,CAEA+E,YACEjG,KAAKwD,eAAeyC,WACtB,CAEAC,OAAOhF,IACLlB,KAAKwD,eAAe0C,OAAOhF,GAC7B,CAEAiF,SAASjF,IACPlB,KAAKwD,eAAe2C,SAASjF,GAC/B,CAEAkF,cACEpG,KAAKwD,eAAe4C,aACtB,CAEAC,OAAOnF,IACLlB,KAAKwD,eAAe6C,OAAOnF,GAC7B,CAGOlG,mBAAmBgG,GAAmBrI,IAC3C,MAAM+K,GAAQ1C,GAAMsF,OAAmB3C,QAAQ,SAC3C3D,KAAKuG,YACPvG,KAAKkD,oBAELlD,KAAK8D,oBAAoBJ,GAAM/K,GAEnC,CAGQmL,oBAAoBzB,GAAe1J,IAEzCqH,KAAK6D,YAAYxB,GADE,YACgB1J,GACrC,CAoCAzB,2BACE8I,KAAKgD,yBAAyB/B,KAAKjB,KAAKrI,oBAC1C,mDA/OWwK,IAAkBxL,uCAAA,oCAAlBwL,GAAkBlC,UAAA,oBAAAsB,eAAA,SAAAC,GAAAC,GAAAC,OAAA,EAAAF,cAqEftB,GAA6B,EAAwBA,aAGrDC,GAA4B,EAAwBA,aALjDE,GAAuB,47GCnQ1C1J,MAAA,EAAA6P,EAAA,aAyBA7P,MAAA,EAAA8P,GAAA,yBAAA9P,OAYAA,MAAA,uBAIeA,MAAA,uBAAAG,IAAA,OAAe2K,GAAAjB,aAAAS,KAAA,CAAAC,QAAApK,GAAAoK,QAAAF,MAAAlK,GAAA4P,WAAuE,GAenG/P,MAAA,EAAAgQ,GAAA,sBAmQFhQ,gBA3TMA,MAAA,OAAA8K,GAAAgB,iBAsCS9L,MAAA,GAAAA,MAAA,YAAA8K,GAAAc,UAAA5L,CAAuB,cAAA8K,GAAA8E,YAAvB5P,CAAuB,gBAAA8K,GAAAe,cAAvB7L,CAAuB,UAAAA,MAAA,EAAAiQ,GAAA,IAAAnF,GAAA6B,OAAAhD,OAAA,UAAAmB,GAAAnK,OAAAmK,GAAAoF,UAAApF,GAAAgB,gBAAAhB,GAAAnJ,YAAAmJ,GAAAvE,cAAAuE,GAAAkB,cAAAlB,GAAAmB,cAAvBjM,CAAuB,UAAAA,MAAA,GAAAmQ,GAAArF,GAAAoF,WAAvBlQ,CAAuB,OAAA8K,GAAA/B,MAkBJ/I,MAAA,GAAAA,MAAA,UAAA8K,GAAA6B,wGDwIrBnB,MAAkBJ,MAAA,IAL9BC,QAAY,EAAEC,EAAAC,IAAA,qBA2Fc6E,MAAiCC,MAA+BC,SAtFhF9E,wHExJN,IAAM+E,EAAe,MAAtB,MAAOA,oDAAe,oCAAfA,GAAe,uCAfxBC,KACAC,KACAC,IACAC,IACAC,OAAiB,SAWRL,CAAe,uKCtCtB,MAAOM,EACJ,oBAAWC,GAChB,OAAO,IAAIC,OAAO,0DACpB,CAGO,eAAOC,CAASC,GAAiBC,IACtC,MAAMC,GAAMN,EAAqBC,UACjC,IAAIM,GACJ,MAAMC,GAA6B,GAE7BC,GAAmBA,CAACC,GAAaC,MAErC,MAAMC,GAAWF,GAAIG,MAAM,WAAW,GAChCC,GAAaH,GAAWrH,OAAOyH,IAAKA,GAAEC,SAASJ,KAErD,OAAOE,GAAWhI,OAAS,EACvB2H,GAAiBC,GAAIO,UAAU,EAAGC,KAAKC,IAAIT,GAAI5H,OAAS8H,GAAS9H,OAAQ,IAAKgI,IAC9EA,GAAW,EAAC,EAGZM,GAAcC,KAClB,MAAMC,GAAQD,GAAME,MAAM,OAAOjI,OAAOkI,MAAOA,IAC3CF,GAAMxI,OAAS,IACZ0H,GAAMc,MAGTd,GAAMc,MAAMG,QAAQH,IAFpBd,GAAMc,MAAQA,KAOpB,IAAII,GAAcC,OAAOvB,IAEzB,KAAQG,GAASD,GAAIsB,KAAKxB,KAAW,CACnC,MAAMyB,GAAYtB,GACZG,GAAMD,GAAiBoB,GAAU,GAAIxB,KAAS,GACpD,IAAIyB,GAAaD,GAAU,GAAGZ,UAAU,EAAGY,GAAU,GAAG/I,OAAS4H,GAAI5H,QACrE,GAAI4H,GAAK,CACFF,GAAME,MACTF,GAAME,IAAO,IAEf,MAAMqB,GAAIF,GAAU,IAAMA,GAAU,GAChCE,IACDvB,GAAME,IAAkBe,KAAKM,SAGhCD,GAAaD,GAAU,GAGzBT,GAAWU,IAEX,MAAME,GAAQN,GAAYO,QAAQJ,GAAU,IAC5CH,GAAcA,GAAYT,UAAU,EAAGe,IAASN,GAAYT,UAAUe,GAAQH,GAAU,GAAG/I,QAG7FsI,UAAWM,IACJlB,EACT,wGClCIrR,MAAA,YAEEA,MAAA,aACFA,sDAEAA,MAAA,mBAIYA,MAAA,mBAAAA,MAAA+S,IAAA,MAAAC,GAAAhT,QAAA,OAASA,MAAAgT,GAAAC,cAAa,sBAElCjT,eAHYA,MAAA,QAAAA,MAAA,gDAHAA,MAAA,wCASdA,MAAA,WAEEA,MAAA,eAGFA,kCAKEA,MAAA,wFAUFA,MAAA,GACEA,MAAA,eACQA,MAAA,iBAAAG,IAAA,MAAA+S,GAAAlT,MAAAmT,IAAA5Q,UAAA6Q,GAAApT,QAASG,UAAAkT,kBAAyBrT,MAAAoT,GAAAE,yBAAAJ,IAA8B,EAAhElT,CAAkE,8BAAAuT,GAAAvT,MAAAmT,IAAAN,MAAAW,GAAAxT,QAAA,OAAAA,MAAAwT,GAAAC,kBAAAF,GAAA,GAGxEvT,MAAA,sBACsEA,MAAA,GACtEA,UAEJA,0EALUA,MAAA,GAAAA,MAAA,UAAAA,MAAA,EAAA0T,GAAArT,GAAAoT,oBAAAF,KACSvT,MAAA,GAAAA,MAAA,SAAAK,GAAAsT,UAAAT,IAAAlT,CAA0B,OAAAK,GAAAuT,YAAAC,GAAAC,UAAAzT,GAAA0T,QAC6B/T,MAAA,GAAAA,MAAA,IAAAkT,GAAA,iMCvCjEc,GAAiC,CAC5CC,QAASC,KAETC,eAAaC,OAAW,IAAMC,IAC9BC,OAAO,GASF,IAAMD,GAAN,MAAMA,GAGXjL,YACUmL,GACAC,GACkBC,GAClBC,IAHArL,KAAAkL,SACAlL,KAAAmL,UACkBnL,KAAAoL,OAClBpL,KAAAqL,MANFrL,KAAAsL,0BAA2C,GAgB1CtL,KAAAuL,YAAc,uBAKdvL,KAAAwL,WAAa,iBAyBfxL,KAAA0K,MAAQ,EAKR1K,KAAAoK,mBAAoB,EACpBpK,KAAAyL,cAAe,EAENzL,KAAA0L,UAAY,IAAIC,IAAwB,IACxC3L,KAAA4L,OAAS,IAAID,SAA0BE,GAChD7L,KAAA8L,YAAwB,GAetB9L,KAAA+L,iBAAkB,EAClB/L,KAAAnC,KAAwB,GAMxBmC,KAAAgM,gBAAiB,EAEhBhM,KAAAiM,OAAS,IAAIxL,MAadT,KAAAkM,cAAiBC,IAAqBhD,OAAOgD,IAAO,IACpDnM,KAAAoM,oBAAqB,EAtF5BpM,KAAK4L,OAAOnH,QAAK3D,KAAOuL,UAAO,EAAG3H,KAAe1E,OAAO2E,UAAW2H,KACjEtM,KAAK8L,YAAcQ,GACnBtM,KAAKyL,aAAea,GAAMhM,OAAS,EACnCN,KAAKqL,GAAGkB,cAAY,EAExB,CAUA,SAAI1D,CAAMA,IACR7I,KAAKwM,QAAU3D,GACf7I,KAAKyM,mBACP,CAEA,SAAI5D,GACF,OAAO7I,KAAKwM,OACd,CACA,iBAAWE,GACT,OAAO1M,KAAK2M,eAAeC,cAAcC,WAC3C,CACA,iBAAWH,CAAc1D,IACnBA,KACFhJ,KAAK2M,eAAeC,cAAcE,UAAY9D,GAAE+D,QAAQ,OAAQ,UAChE/M,KAAKgN,aAAahE,GAAGhJ,KAAK0K,OAE9B,CAEA,kBAAWuC,GACT,OAAOjN,KAAKoL,IAAI8B,gBAAkBlN,KAAK2M,eAAeC,aACxD,CAsDAO,cAAcnM,MACPhB,KAAK2M,eAAeC,cAAcQ,SAASpM,GAAMsF,SAAmBtG,KAAKqN,6BAC5ErN,KAAKyL,cAAe,EAExB,CAGA6B,kBAAkBhH,IACZtG,KAAKuN,gCAAgCjH,KACtBtG,KAAKwN,gBAAgBC,SAC7BC,OAEb,CAEQH,gCAAgCjH,IACtC,MAAMqH,GAAoC3N,KAAK2N,yBAAyBrH,IAElEsH,GAAe5N,KAAKwN,gBAAgBC,SAAyBI,YACnE,OACE7N,KAAKqN,4BACJO,GAAYhB,cAAcQ,SAAS9G,MACnCqH,KACA3N,KAAK8N,uBAAuBxH,MAC5BtG,KAAK+N,uBAAuBzH,GAEjC,CAEQ+G,0BACN,OAAOrN,KAAKwN,iBAAoBxN,KAAKwN,gBAAgBC,SAAyBO,KAChF,CAEQL,yBAAyBrH,IAC/B,MAAM2H,GAA2BjO,KAAKkO,iCACtC,OAAAlO,KAAKsL,0BAA4B2C,GAAU3N,OAAS,EAAI2N,GAAYjO,KAAKsL,0BAClEtL,KAAKsL,0BAA0B6C,KAAMC,IAAWA,GAAOhB,SAAS9G,IACzE,CAEQ4H,iCAEN,OAAOxI,MAAMC,KADQ3F,KAAKwN,gBAAgBC,SAAyBI,YACrCjB,cAActH,iBAAiB,2DAC/D,CAEQwI,uBAAuBxH,IAC7B,OAAOA,GAAO3C,QAAQ,oBAAsB2C,GAAO3C,QAAQ,iBAC7D,CAEQoK,uBAAuBzH,IAC7B,OAAOA,GAAO3C,QAAQ,oBAAsB2C,GAAO3C,QAAQ,iBAC7D,CAEA0K,cACErO,KAAKoM,oBAAsBpM,KAAK4J,aAClC,CAEA0E,qBACMtO,KAAKgM,iBACPhM,KAAK2M,eAAeC,cAAcC,YAAc7M,KAAKkL,MAAMqD,SAASC,cAAcC,IAAI,UACtFzO,KAAK0O,mBAET,CAEAjC,oBACMzM,KAAK2O,UACP3O,KAAK2O,SAAS3O,KAAK6I,MAEvB,CAEA+F,WAAWC,IACT,IAAKA,GACH,OAEF7O,KAAKwM,QAAUqC,GACf,MAAMC,MAAOC,aAAUF,WAChBC,GAAKhG,MAEZ9I,KAAK0M,cAAgBsC,OAAOC,KAAKH,IAC9BI,IAAKC,IAAM,GAAGA,OAAML,GAAKK,OACzBnJ,KAAK,KACJ6I,GAAI/F,QACN9I,KAAK0M,cAAgB1M,KAAK0M,cAAgB,IAAMmC,GAAI/F,MAAM9C,KAAK,KAEnE,CAEAoJ,iBAAiBC,IACfrP,KAAK2O,SAAWU,EAClB,CAEAC,kBAAkBD,IAChBrP,KAAKuP,UAAYF,EACnB,CAEAX,mBACE1O,KAAK6I,MAAQrB,EAAqBG,SAChC3H,KAAK0M,cACL1M,KAAKnC,KAAKqR,IAAKM,IAAMA,GAAEtH,KAE3B,CAEA0B,cACE5J,KAAK2M,eAAeC,cAAcE,UAAY,GAC9C9M,KAAKyP,aACP,CAEAC,iBAAiB1O,IAEfA,GAAM2O,iBAIN,MAAMC,IAAU5O,GAAc6O,eAAoC7O,IAAO8O,cAAcC,QAAQ,cAG/FC,SAASC,YAAY,cAAc,EAAOL,GAC5C,CAEAM,gBAAgBlP,IACdA,GAAM2O,iBAEN,MAAMC,GAAO5O,GAAMmP,aAAaJ,QAAQ,cACxC/P,KAAK2M,eAAeC,cAAcwD,QAElCJ,SAASC,YAAY,cAAc,EAAOL,GAC5C,CAEAS,sBAAsBrP,IACpB,GAAIA,GAAMsP,iBACR,OAAO,EAET,OAAQtP,GAAMuP,KACZ,IAAK,KACL,IAAK,OACL,IAAK,UACL,IAAK,YACHvP,UAAM2O,kBACC,EAGX,OAAA3P,KAAKwQ,iBAAiBxP,KACf,CACT,CAEAyP,wBAAwBzP,IACtB,OAAQA,GAAMuP,KACZ,IAAK,KACL,IAAK,UACHvP,UAAM2O,iBACN3P,KAAKoK,mBAAqBpK,KAAK8L,YAAYxL,OAASN,KAAKoK,kBAAoB,GAAKpK,KAAK8L,YAAYxL,QAC5F,EACT,IAAK,OACL,IAAK,YACHU,UAAM2O,iBACN3P,KAAKoK,mBAAqBpK,KAAKoK,kBAAoB,GAAKpK,KAAK8L,YAAYxL,QAClE,EACT,IAAK,MACL,IAAK,SACH,OAAAN,KAAKyL,cAAe,EACnBzK,GAAMsF,OAAuBoK,QACvB,EACT,IAAK,QACH,OAAO1Q,KAAK2Q,YAAY3P,IAE1B,QACE,OAAO,EAEb,CAEA2P,YAAY3P,IAIV,OAHAA,GAAM2O,iBAGF3P,KAAKnC,KAAKyC,OAAS,GAAKN,KAAKoK,mBAAoB,GAAMpJ,cAAiB4P,eAC1E5Q,KAAK6Q,WAAW7Q,KAAKsK,UAAUtK,KAAK8L,YAAY9L,KAAKoK,sBAC9C,IAETpK,KAAKyP,eAEE,EACT,CAEAA,cAEE,GAAIzP,KAAKgM,eAAgB,CACvB,IAAI8E,GACA9Q,KAAK0M,cAAcpM,OAAS,IAC9BwQ,GAAO,CACLC,WAAY/Q,KAAKkL,MACjB8F,YAAa,CACX/E,OAAQjM,KAAK0M,eAEfuE,oBAAqB,UAIpBjR,KAAKmL,OAAO+F,SAAS,GAAIJ,IAEhC9Q,KAAK0O,mBACL1O,KAAKiM,OAAOhL,KAAKjB,KAAK6I,MACxB,CAMA2H,iBAAiBxP,IACf,GAAyB,IAArBhB,KAAKnC,KAAKyC,QAAgBU,GAAMmQ,SAAWnQ,GAAMoQ,UAAYpQ,GAAMqQ,QAAUC,OAAOC,eAAeC,WAAWlR,OAAS,EACzH,OAGF,MAAMmR,GAAUzQ,GAAMsF,OAGtB,GADAtG,KAAKoK,mBAAoB,GACpBqH,GAAQC,WAIX,OAHA1R,KAAK0K,MAAQ,EACb1K,KAAK4L,OAAO+F,KAAK3R,KAAKnC,KAAKqR,IAAK0C,IAAMA,GAAE1J,WACxClI,KAAKsK,UAAYtK,KAAKkM,eAIxBoF,OAAOC,eAAeM,gBAEtB,MAAMC,GADMR,OAAOC,eACDQ,WAAW,GAE7BD,GAAME,SAASP,GAAQC,WAAY,GAGnC,MAAM9J,GAAUkK,GAAMN,WAEhB5B,GAAOqC,KAAKC,UAAUtK,IAE5B0J,OAAOC,eAAeM,gBACtB7R,KAAK0K,MAAQkF,GAAKtP,OAAS,EAE3BN,KAAKgN,aAAahN,KAAK0M,cAAe1M,KAAK0K,MAC7C,CAQAsC,aAAapF,GAAiB8C,IAC5B,GAAyB,IAArB1K,KAAKnC,KAAKyC,OACZ,OASF,IAAIyH,GAPJ/H,KAAKmS,WAAY,EAEbnS,KAAKoS,eACPpS,KAAKoS,aAAaC,cAClBrS,KAAKoS,kBAAevG,GAKtB,MAAMyG,GAAWtS,KAAKuK,YAAY3C,GAAS8C,IACrC6H,GAAavS,KAAKnC,KACrBiD,OAAQyH,MAEHvI,KAAK+L,kBACHnE,GAAQ4K,cAAchK,SAASD,GAAEL,IAAIsK,iBAIpCjK,GAAEL,IAAIsK,cAAchK,SAAS8J,GAASE,gBAE9CtD,IAAKM,IAAMA,GAAEtH,KACbuK,MAAM,EAAG,IAEZzS,KAAKsK,UAAYtK,KAAKkM,cAEtB,MAAMpE,GAAMN,EAAqBC,UAEjC,KAAQM,GAASD,GAAIsB,KAAKxB,KAAW,CACnC,MAAMyB,GAAYtB,GACZ2K,GAAkB9K,GAAQ+K,YAAYtJ,GAAU,IAEtD,GAAIqJ,GAAkBhI,IAASA,IAASgI,GAAkBrJ,GAAU,GAAG/I,OAAQ,CAC7E,MAAMsS,GAAW5S,KAAKnC,KAAKgV,KAAMjB,KAE/B,MAAMkB,GADS,IAAIpL,OAAOkK,GAAE1J,IAAI6E,QAAQ,KAAM,KAAM,KAC7B3D,KAAKC,GAAU,IACtC,OAAOyJ,IAAWzJ,GAAU,GAAGI,QAAQqJ,GAAQ,IAAMpI,KAkBvD,YAfIkI,IAAYF,GAAkBrJ,GAAU,GAAG/I,OAASoK,IACtD1K,KAAKsK,UAAYsI,GAASG,cAC1B/S,KAAK0L,UAAUiG,KAAKW,IACpBtS,KAAK4L,OAAO+F,KAAK,IAEjB3R,KAAKoS,aAAeQ,GAAStG,MAAMtM,KAAK0L,WAAW/G,UAAW2H,KAC5DtM,KAAK4L,OAAO+F,KAAKrF,IACjBtM,KAAKmS,WAAY,IAEnBnS,KAAKgT,QAAUJ,KAEf5S,KAAKsK,UAAYtK,KAAKkM,cACtBlM,KAAK4L,OAAO+F,KAAKY,IACjBvS,KAAKgT,aAAUnH,KAOrB7L,KAAK4L,OAAO+F,KAAKY,IACjBvS,KAAKgT,aAAUnH,EACf7L,KAAKmS,WAAY,CACnB,CAQA5H,YAAY3C,GAAiB8C,IAE3B,MAAMuI,GAAgBrL,GAAQa,UAAU,EAAGiC,IAAOrC,MAAM,wBACxD,IAAIiK,GAAYW,KAAkBA,GAAc,IAAMA,GAAc,KAAQ,GAE5E,MAAMC,GAAaZ,GAASjK,MAAM,WAClCiK,UAAWY,GAAaA,GAAW,IAAM,GAAKZ,GAEvCA,EACT,CAOAzB,WAAWhI,IACT7I,KAAK2M,eAAeC,cAAcwD,QAClC,IAAI+C,GAAc,EACdnT,KAAK2M,eAAeC,cAAc8E,aACpCyB,GAAcnT,KAAKoT,sBAAsBpT,KAAK0M,cAAe1M,KAAK0K,QAEpE,MAAM2I,GAAYxK,GAAQ,IAEpByK,GAAiBtT,KAAK0K,MAAQyI,GACpCnT,KAAK0K,OAAS2I,GAAU/S,OAAS6S,GAGjC,MAAMjK,GAAclJ,KAAK0M,cACnB6G,GAAWrK,GAAYT,UAAU,EAAG6K,IACpCE,GAAYtK,GAAYT,UAAUzI,KAAK0K,OAC7C1K,KAAK0M,cAAgB6G,GAAWF,GAAYG,GAG5CxT,KAAKyT,YAAYzT,KAAK0K,MACxB,CAQA0I,sBAAsBxL,GAAiB8C,IAErC,GADA9C,GAAUA,GAAQa,UAAU,EAAGzI,KAAK0K,OACjB,IAAf1K,KAAK0K,MACP,OAAO,EAET,MAAMtC,GAAWpI,KAAKuK,YAAY3C,GAAS8C,IACrCgJ,GAAS9L,GAAQtH,OAAS8H,GAAS9H,OAMzCwR,OAFYR,OAAOC,eACDQ,WAAW,GACvBC,SAAShS,KAAK2M,eAAeC,cAAc8E,WAAYgC,IAEtDtL,GAAS9H,MAClB,CAMAmT,YAAY/I,IACV,IAAK1K,KAAK2M,eAAeC,cAAc8E,WACrC,OAEF,MAAMI,GAAQ9R,KAAKoL,IAAIuI,cACvB7B,GAAME,SAAShS,KAAK2M,eAAeC,cAAc8E,WAAYhH,IAC7DoH,GAAM8B,OAAO5T,KAAK2M,eAAeC,cAAc8E,WAAYhH,IAC3D4G,OAAOC,eAAesC,kBACtBvC,OAAOC,eAAeuC,SAAShC,GACjC,CAMA7H,yBAAyB8J,IACvB/T,KAAKoK,mBAAoB,EACzBpK,KAAK6Q,WAAW7Q,KAAKsK,UAAUyJ,IACjC,mDA9eW/I,IAAuBrU,MAAAqd,MAAArd,MAAAqd,MAAArd,MAMxBsd,MAAQtd,aAAA,oCANPqU,GAAuB/K,UAAA,0BAAAiU,UAAA,SAAA1S,GAAAC,OAAA,EAAAD,wBA6DsB2S,4LA7D7C1S,GAAA0L,cAAArW,GAAqB,KAAAH,OAAA,qBAAAG,IAAA,OAArB2K,GAAA6L,kBAAAxW,GAAAwP,OAAgC,KAAA3P,yUAFhC,CAACgU,MAA+ByJ,MAAA,GAAAC,KAAA,GAAAC,OAAA,w0CAAArc,SAAA,SAAAuJ,GAAAC,OAAA,EAAAD,KDtC7C7K,MAAA,UAAAA,CAA6C,UAA7CA,CAA6C,UAA7CA,CAA6C,aAalCA,MAAA,iBAAAG,IAAA,OAAS2K,GAAA4O,sBAAAvZ,GAA6B,EAAtCH,CAAuC,mBAAAG,IAAA,OAC5B2K,GAAAgP,wBAAA3Z,GAA+B,EAD1CH,CAAuC,iBAAAG,IAAA,OAE9B2K,GAAAiO,iBAAA5Y,GAAwB,EAFjCH,CAAuC,gBAAAG,IAAA,OAG/B2K,GAAAyO,gBAAApZ,GAAuB,EAH/BH,CAAuC,iBAAAG,IAAA,OAI9B2K,GAAA+O,iBAAA1Z,GAAwB,EAJjCH,CAAuC,yBAK/B8K,GAAAiN,kBAAkB,GACV/X,QACrBA,MAAA,WAEEA,MAAA,GACFA,UAEFA,MAAA,WACEA,MAAA,EAAA4d,EAAA,aAKA5d,MAAA,EAAA6d,GAAA,oBAOF7d,QAEAA,MAAA,GAAA8d,GAAA,aAOA9d,MAAA,gBAGEA,MAAA,GAAA+d,GAAA,uBAEF/d,UAGFA,MAAA,aAGKA,MAAA,+BAAA8K,GAAA2I,mBAAA,CAAoC,GAEvCzT,MAAA,GAAAge,EAAA,uBAUFhe,QAEAA,MAAA,YAAAA,CAAgC,gBAEtBA,MAAA,iBAAAG,IAAA,OAAS2K,GAAAkP,YAAA7Z,GAAmB,GAClCH,MAAA,cACFA,qCAvEGA,MAAA,GAAAA,MAAA,UAAAA,MAAA,GAAAie,EAAAnT,GAAAwL,iBAgBItW,MAAA,GAAAA,MAAA,UAAAA,MAAA,GAAAke,IAAArK,GAAAkH,aACH/a,MAAA,GAAAA,MAAA,IAAA8K,GAAA8J,YAAA,KAKI5U,MAAA,GAAAA,MAAA,OAAA8K,GAAA0Q,WAMOxb,MAAA,GAAAA,MAAA,QAAA8K,GAAA0Q,WAAA1Q,GAAAiL,cAAApM,OAAA,GAQT3J,MAAA,GAAAA,MAAA,OAAA8K,GAAAqT,oBASWne,MAAA,GAAAA,MAAA,mBAAA8K,GAAAqT,oBAOdne,MAAA,GAAAA,MAAA,UAAAA,MAAA,GAAAoe,EAAAtT,GAAAgK,cAAA9U,CAAkC,UAAA8K,GAAAuT,eAAAre,MAAA,GAAAse,GAAAxT,GAAAuT,eAAA,YAGNre,MAAA,GAAAA,MAAA,UAAA8K,GAAAqK,aAevBnV,MAAA,GAAAA,MAAA,UAAA8K,GAAA+J,uGCnCCR,MAAuBjJ,MAAA,IANnCC,QAAY,EAAEkT,EAAAhT,IAAA,qBAUIiT,KACCC,KACeC,SACnBtO,SAPHiE,0HC1BN,IAAMsK,EAAoB,MAA3B,MAAOA,oDAAoB,oCAApBA,GAAoB,uCAJrBnO,KAAcoO,KAAmBC,KAAoBC,KAAaC,IAAcC,OAAa,SAI5FL,CAAoB,sJCEpBM,EAAkD,CAC7DhL,QAASC,KAETC,eAAaC,OAAW,IAAM8K,GAC9B5K,OAAO,GAYF,IAAM4K,EAAuB,MAA9B,MAAOA,EANb9V,cAkBkBC,KAAA8V,SAAU,EACV9V,KAAAxH,UAAW,EAIXwH,KAAA+V,SAAW,OACX/V,KAAAgW,SAAU,EAQlBhW,KAAAiW,QAAe,GA0BbjW,KAAAU,OAAS,IAAID,MAjDvB,SAAoB6L,CAAMzD,GACxB7I,KAAKiW,QAAUpN,EACf7I,KAAKkW,aAAelW,KAAKmW,iBAC3B,CACA,SAAI7J,GACF,OAAOtM,KAAKiW,OACd,CAKA,cAAoBG,CAAWvN,GAC7B7I,KAAKqW,gBAAkBxN,EAAQ,OAASA,EAAQ,EAClD,CAeA,SAAWA,CAAMA,GAGb7I,KAAKmM,IAFHnM,KAAKsW,WAAazN,EAETA,EAAM7I,KAAKsW,WAEXzN,CAEf,CAEA,SAAWA,GACT,OAAO7I,KAAKmM,GACd,CAEA,wBAAWoK,GACT,OAAOvW,KAAK8V,QAAU9V,KAAKkW,eAAiBlW,KAAKsM,MAAMhM,OAAS,EAA0B,IAAtBN,KAAKkW,YAC3E,CAEA,yBAAWM,GACT,OAAOxW,KAAK8V,QAAgC,IAAtB9V,KAAKkW,aAAqBlW,KAAKkW,eAAiBlW,KAAKsM,MAAMhM,OAAS,CAC5F,CAIAK,kBACEX,KAAKyW,SAASC,eAAiB1W,KAAK0W,eACpC1W,KAAKyW,SAAS9V,iBAChB,CAEAgO,SAAS3N,GACPhB,KAAK6I,MAAQ7H,EACbhB,KAAKkW,aAAelW,KAAKmW,kBACzBnW,KAAKU,OAAOO,KAAKjB,KAAK6I,OAElB7I,KAAK2W,kBACP3W,KAAK2W,iBAAiB3W,KAAK6I,MAE/B,CAEQ+N,SACF5W,KAAKkW,aAAelW,KAAKsM,MAAMhM,OAAS,GAC1CN,KAAK2O,SAAS3O,KAAKsM,MAAMtM,KAAKkW,aAAe,GAEjD,CAEQW,SACF7W,KAAKkW,aAAe,GACtBlW,KAAK2O,SAAS3O,KAAKsM,MAAMtM,KAAKkW,aAAe,GAEjD,CAEAY,qBACE9W,KAAK8V,QAAU9V,KAAK4W,SAAW5W,KAAK6W,QACtC,CAEAE,sBACE/W,KAAK8V,QAAU9V,KAAK6W,SAAW7W,KAAK4W,QACtC,CAEQT,kBACN,OAAOnW,KAAKsM,MAAM0K,UAAWnO,IAAW7I,KAAKsW,UAAYzN,EAAM7I,KAAKsW,WAAazN,KAAW7I,KAAK6I,MACnG,CAEA+F,WAAW/F,GACT7I,KAAKmM,IAAMtD,EACX7I,KAAKkW,aAAelW,KAAKmW,iBAC3B,CAEA/G,iBAAiBC,GACfrP,KAAK2W,iBAAmBtH,CAC1B,CAEAC,kBAAkBD,GAChBrP,KAAKiX,kBAAoB5H,CAC3B,iDAxGWwG,EAAuB,oCAAvBA,EAAuB5V,UAAA,kDAAAsB,eAAA,SAAAC,EAAAC,EAAAC,MAAA,EAAAF,WAoBpB0V,KAAyB,EAAUC,sGAnBtCC,KAAiB,wQAHjB,CAACxB,KAAgDxB,MAAA,EAAAC,KAAA,GAAAC,OAAA,kYAAArc,SAAA,SAAAuJ,EAAAC,GAAA,EAAAD,IC9B9D7K,MAAA,UAAAA,CAA6C,cAInCA,MAAA,0BAAS8K,EAAAqV,oBAAoB,GAEnCngB,MAAA,YACFA,QAEAA,MAAA,UAAAA,CAC0D,iBAK7CA,MAAA,kBAAAG,GAAA,OAAU2K,EAAAkN,SAAA7X,EAAgB,EAA1BH,CAA2B,yBAAAG,GAAA,OAAA2K,EAAAoH,MAAA/R,CAAA,GAK6BH,UAGrEA,MAAA,cAEQA,MAAA,0BAAS8K,EAAAsV,qBAAqB,GAEpCpgB,MAAA,YACFA,iBAzBQA,MAAA,GAAAA,MAAA,UAAA8K,EAAA4U,gBAAA1f,CAA2B,WAAA8K,EAAA8U,sBAAA9U,EAAAjJ,UAO9B7B,MAAA,GAAAA,MAAA,UAAAA,MAAA,GAAA0gB,EAAA,SAAA5V,EAAAsU,WACQpf,MAAA,GAAAA,MAAA,QAAA8K,EAAA6K,MAAA3V,CAAe,WAAA8K,EAAAsU,SAAfpf,CAAe,UAAA8K,EAAAuU,QAAfrf,CAAe,WAAA8K,EAAAjJ,SAAf7B,CAAe,eAAfA,CAAe,YAAA8K,EAAA6U,UAAf3f,CAAe,YAAA8K,EAAA6V,UAAf3gB,CAAe,UAAA8K,EAAAoH,OAapBlS,MAAA,GAAAA,MAAA,UAAA8K,EAAA4U,gBAAA1f,CAA2B,WAAA8K,EAAA+U,uBAAA/U,EAAAjJ,2FDQxBqd,CAAuB,6KE/BlClf,MAAA,iBACWA,MAAA,iBAAAG,GAAAH,MAAA4gB,GAAA,MAAA3gB,EAAAD,QAAA,OAASA,MAAAC,EAAA4gB,YAAA1gB,GAAmB,GAYvCH,oCAXWA,MAAA,gBAEAA,MAAA,YAAA8gB,EAAAC,UAAA/gB,CAA6B,cAA7BA,CAA6B,UAAA8gB,EAAA7P,QAA7BjR,CAA6B,UAAA8gB,EAA7B9gB,CAA6B,UAA7BA,CAA6B,qBAAA8gB,EAAAE,mBAA7BhhB,CAA6B,OAAA8gB,EAAA/X,KAA7B/I,CAA6B,KAAA8gB,EAAA7e,6CAYxCjC,MAAA,iBAAWA,MAAA,iBAAAG,GAAAH,MAAAihB,GAAA,MAAAlgB,EAAAf,QAAA,OAASA,MAAAe,EAAA8f,YAAA1gB,GAAmB,GAWvCH,oCARWA,MAAA,eADAA,MAAA,YAAAkhB,EAAAH,UAAA/gB,CAA6B,cAA7BA,CAA6B,UAAAkhB,EAAAjQ,QAA7BjR,CAA6B,UAAAkhB,EAA7BlhB,CAA6B,UAA7BA,CAA6B,qBAAAkhB,EAAAF,mBAA7BhhB,CAA6B,OAAAkhB,EAAAnY,KAA7B/I,CAA6B,KAAAkhB,EAAAjf,KCFnC,IAAMkf,EAAN,MAAMA,GAQX,gBAAWC,GACT,OAAO/X,KAAKgY,aAAaC,QAAQxT,QAAKyK,KAAKgJ,GAAWA,EAAOpX,OAAQqX,IAAWA,EAAMC,SAAS3F,MAAM,EAAGzS,KAAKqY,kBAC/G,CAEA,iBAAWC,GACT,OAAOtY,KAAKgY,aAAaC,QAAQxT,QAAKyK,KAAKgJ,GAAWA,EAAOpX,OAAQqX,GAAUA,EAAMC,SAAS3F,MAAM,EAAGzS,KAAKuY,mBAC9G,CAEAxY,YAAoBiY,GAAAhY,KAAAgY,eAXZhY,KAAAuY,iBAAmB,EACnBvY,KAAAqY,gBAAkB,CAUuB,CAEjDb,YAAYW,GACVnY,KAAKgY,aAAatK,MAAMyK,EAC1B,iDApBWL,IAAuBnhB,MAAAqd,KAAA,oCAAvB8D,GAAuB7X,UAAA,0BAAAuY,UAAA,0BAAAC,SAAA,EAAAC,aAAA,SAAAlX,EAAAC,GAAA,EAAAD,iwBDjBpC7K,MAAA,WACEA,MAAA,EAAAgiB,EAAA,qCAcFhiB,QACAA,MAAA,WACEA,MAAA,EAAAiiB,EAAA,qCAaFjiB,eA7B+BA,MAAA,GAAAA,MAAA,UAAAA,MAAA,IAAA8K,EAAAsW,eAiBAphB,MAAA,GAAAA,MAAA,UAAAA,MAAA,IAAA8K,EAAA6W,mECDlBR,KAAuB/V,MAAA,IAXnCC,QAAY,EAAE6W,EAAA3W,IAAA,qBA2BqB4W,OAhBvBhB,mDCHC,MAAOiB,EAoDnBhZ,YAAYiZ,GA3BLhZ,KAAAiZ,sBAAuB,EAKvBjZ,KAAA2X,oBAAqB,EAoBrB3X,KAAAoY,SAAU,EAGfpJ,OAAOkK,OAAOlZ,KAAMgZ,EACtB,4IC9DK,MAAMG,EAAiB,gBAGvB,IAAML,EAAY,MAAnB,MAAOA,EADb/Y,cAEEC,MAAAoZ,EAA0B,IAAIC,IAC9BrZ,MAAAsZ,EAA0B,IAAID,IAC9BrZ,KAAAiY,QAAU,IAAItM,IAA8B,IAF5CyN,GACAE,GAQA5L,MAAMyK,GACJnY,KAAKiY,QAAQtG,KAAK3R,KAAKiY,QAAQpP,MAAM/H,OAAQyY,GAAMA,IAAMpB,IACzDnY,MAAKoZ,EAAQzH,KAAKwG,EACpB,CAOAqB,QAAQ5gB,EAAaugB,GACnB,OAAOnZ,MAAKsZ,EAAQ7U,QAAK3D,KAAQyY,GAAMA,GAAG3gB,KAAOA,GACnD,CAQA6gB,QAAQC,EAAcC,GAGpB,OAAO3Z,KAAKmY,MAAM,IAAIY,IAAM,IAAKY,EAASja,KAAMka,KAAaH,QAAS7R,QAF9C8R,GAAY,YAGtC,CAQA3T,MAAM2T,EAAcC,GAGlB,OAAO3Z,KAAKmY,MAAM,IAAIY,IAAM,IAAKY,EAASja,KAAMka,KAAaC,OAAQjS,QAF7C8R,GAAY,gCAGtC,CAQAI,KAAKlS,EAAiB+R,GACpB,OAAO3Z,KAAKmY,MAAM,IAAIY,IAAM,IAAKY,EAASja,KAAMka,KAAaE,KAAMlS,YACrE,CAQAmS,KAAKnS,EAAiB+R,GACpB,OAAO3Z,KAAKmY,MAAM,IAAIY,IAAM,IAAKY,EAASja,KAAMka,KAAaI,QAASpS,YACxE,CAOAuQ,MAAMA,GACJA,SAAMvf,GAAKuf,EAAMvf,IAAMugB,EACvBnZ,MAAKsZ,EAAQ3H,KAAKwG,GAClBnY,KAAKiY,QAAQtG,KAAK,IAAI3R,KAAKiY,QAAQpP,MAAOsP,IACnCnY,MAAKoZ,EAAQ3U,QAAKtD,KAAO8Y,GAAMA,IAAM9B,GAC9C,CAOA+B,UAAUthB,EAAaugB,GACrBnZ,MAAKsZ,EAAQ3H,KAAK,IAAIoH,IAAM,CAAEngB,QAC9BoH,KAAKiY,QAAQtG,KAAK3R,KAAKiY,QAAQpP,MAAM/H,OAAOqX,GAAOA,EAAMvf,KAAOA,GAClE,iDAxFWkgB,EAAY,sCAAZA,EAAYqB,QAAZrB,EAAYsB,UAAAC,WADC,QAAM,SACnBvB,CAAY,6OCRzBniB,MAAA,WAEEA,MAAA,YACFA,gCADQA,MAAA,GAAAA,MAAA,UAAAU,GAAAijB,uCAKN3jB,MAAA,mDAEEA,MAAA,4EADFA,MAAA,GACEA,MAAA,EAAA4jB,GAAA,sBAGF5jB,wDAHiBA,MAAA,GAAAA,MAAA,mBAAAoB,GAAAyiB,WAAAziB,GAAA6P,SAAA2P,GAAAkD,GAAA9jB,CACT,0BAAAA,MAAA,EAAA0gB,GAAAtf,GAAA6P,wDAMVjR,MAAA,UAAAA,CACsB,mBAKRA,MAAA,mBAAAA,MAAAihB,IAAA,MAAAlgB,GAAAf,QAAA,OAASA,MAAAe,GAAAgjB,WAAAhjB,GAAAijB,SAAmB,GAExChkB,oCANYA,MAAA,GAAAA,MAAA,YAAAA,CAAe,OAAAikB,GAAAtjB,OAAAsjB,GAAAC,QAAAC,GAAAF,GAAAC,QAAAE,GAAAH,GAAAC,QAAAG,+BAY3BrkB,MAAA,mCAAKA,MAAA,YAAAA,MAAA,yBAAAA,+BAKLA,MAAA,8BAAAA,MAAA,EAAAskB,EAAA,6DAAetkB,MAAA,mBAAAukB,GAAAvkB,CAA2B,0BAAAA,MAAA,EAAA0gB,GAAA1N,GAAAgR,yBCjBrC,IAAMQ,GAAN,MAAMA,GAWX,gBAAWb,GACT,MAAO,mBAAmBta,KAAKN,QAAUyJ,QAAqB,IAAdnJ,KAAKob,KAAgBC,KAAarb,KAAKN,MAAQM,KAAKob,KACtG,CAMA,cAAWE,GACT,MAAMC,GAAU,CAAC,QAAS,SAAS3B,KAAa5Z,KAAKN,SAC/C2E,GAAYrE,KAAKqE,WAAarE,KAAKqE,UAAU/D,OAAS,EAAIN,KAAKqE,UAAUmX,OAAS,GASxF,OAPInX,IAAWkX,GAAQtS,KAAK5E,IAExBrE,KAAK1I,MAEPikB,GAAQtS,KADe,SAAS4R,KAAQ7a,KAAK1I,SAIxCikB,GAAQvV,KAAK,IACtB,CA6DAjG,YAAoBoL,GAAwB6M,IAAxBhY,KAAAmL,UAAwBnL,KAAAgY,gBAxF5BhY,KAAAwa,WAAaA,KAEbxa,KAAA6a,QAAUA,KA8BjB7a,KAAApH,GAAaugB,IAKbnZ,KAAA0X,UAAoB,KAmBpB1X,KAAAN,KAAqBka,KAAaE,KAelC9Z,KAAAob,MAAyB,EAQzBpb,KAAAyb,UAAW,EAEXzb,KAAA2X,oBAAqB,EAKpB3X,KAAA0N,MAAQ,IAAIjN,KAEmD,CAEzEib,WACE1b,KAAK2b,oBACP,CAEQA,qBACH3b,KAAK2X,oBAGR3X,KAAKmL,OAAOyQ,OAAOnX,QACjB3D,KAAOE,IAAQA,cAAiB6a,OAAe,EAC/C3M,KAAKlO,IAA0BA,GAAM8a,MAAG,EACxCC,KAAU/b,KAAKmL,OAAO2Q,MAAG,EACzB5M,KAAK4M,IAAcA,GAAI/S,MAAM,KAAK,GAAGA,MAAM,KAAK,KAAE,EAClDiT,QAAQ,EACRlb,KAAO,EAAEmb,GAAMC,MAAUD,KAASC,KAAI,EACtCxX,KAAe1E,OAAO2E,UAAU,IAAM3E,KAAKgY,aAAakC,UAAUla,KAAKpH,IAC3E,CAMA8hB,WAAWvC,IACTnY,KAAK0N,MAAMzM,KAAKkX,GAClB,mDAtHWgD,IAAcxkB,MAAAqd,MAAArd,MAAAwlB,KAAA,oCAAdhB,GAAclb,UAAA,gBAAAuY,UAAA,iBAAAC,SAAA,EAAAC,aAAA,SAAAlX,GAAAC,IAAA,EAAAD,isBDlB3B7K,MAAA,EAAAylB,EAAA,aAMAzlB,MAAA,WACEA,MAAA,EAAA0lB,EAAA,oBACA1lB,MAAA,EAAA2lB,GAAA,sBAKF3lB,QAGAA,MAAA,EAAA4lB,GAAA,aAYA5lB,MAAA,EAAA6lB,EAAA,yBAAA7lB,OAKAA,MAAA,EAAA8lB,EAAA,yBAAA9lB,eAhCMA,MAAA,OAAA8K,GAAA2Z,MAMSzkB,MAAA,GAAAA,MAAA,QAAA8K,GAAAmG,SACEjR,MAAA,GAAAA,MAAA,OAAA8K,GAAAmG,SASXjR,MAAA,GAAAA,MAAA,OAAA8K,GAAAga,wFCCON,MAAcpZ,MAAA,IAV1BC,QAAY,EAAE0a,EAAAxa,IAAA,qBAsGekT,KAA8B0D,OA5F/CqC,4HCdTxkB,MAAA,GACEA,MAAA,YAEEA,MAAA,GACFA,QACFA,kDAFIA,MAAA,GAAAA,MAAA,IAAAgmB,EAAAC,iBAAAC,GAAA,8BAgBAlmB,MAAA,mCACMA,MAAA,UAAAmmB,EAAAC,qCAEuBpmB,MAAA,+CAb/BA,MAAA,WAAAA,CAAmC,kBAIrBA,MAAA,mBAAAA,MAAAqmB,GAAA,MAAAC,EAAAtmB,QAAAkmB,EAAAI,EAAA/jB,UAAAgkB,GAAAD,EAAAzT,MAAAO,GAAApT,QAAA,OAASA,MAAAoT,GAAAoT,gBAAAN,EAAAK,IAA4B,GAC/CvmB,MAAA,GACFA,UAGFA,MAAA,YACEA,MAAA,EAAAymB,EAAA,cAGAzmB,MAAA,EAAA0mB,EAAA,yBAAA1mB,OACFA,+DAZcA,MAAA,GAAAA,MAAA,YAAAA,CAAe,OAAAK,EAAA6jB,QAAAyC,IAGzB3mB,MAAA,GAAAA,MAAA,IAAAK,EAAA4lB,iBAAAC,GAAA,KAKKlmB,MAAA,GAAAA,MAAA,OAAAK,EAAA+lB,cAAApmB,CAAqB,WAAA4mB,6BArBlC5mB,MAAA,GAEEA,MAAA,EAAA6mB,EAAA,sBAOA7mB,MAAA,EAAA8mB,EAAA,yBAAA9mB,OAoBFA,wCA3BiBA,MAAA,GAAAA,MAAA,OAAA+mB,EAAA/mB,CAAY,WAAAgnB,ICIxB,IAAMC,EAAoB,MAA3B,MAAOA,EALb7d,cAYYC,KAAAkR,SAAW,IAAIzQ,MAETT,KAAA6a,QAAUA,KAE1B+B,iBAAoB7I,GAElB,OAAO/T,KAAKsX,UAAYvD,EAAK/T,KAAKsX,WAAavD,CACjD,CAEAoJ,gBAAmBpJ,EAASvK,GAC1B,MAAMqU,EAAQ7d,KAAK4c,iBAAiB7I,GAEpC/T,KAAKkR,SAASjQ,KAAK,CAAE8S,OAAM8J,QAAOC,MAAOtU,GAC3C,iDApBWoU,EAAoB,oCAApBA,EAAoB3d,UAAA,sBAAA8d,OAAA,CAAAC,KAAA,OAAA1G,UAAA,YAAAyF,cAAA,iBAAAkB,QAAA,CAAA/M,SAAA,YAAAkD,MAAA,EAAAC,KAAA,EAAAC,OAAA,4XAAArc,SAAA,SAAAuJ,EAAAC,GAAA,EAAAD,IDTjC7K,MAAA,WAGEA,MAAA,EAAAunB,EAAA,sBA+BFvnB,eA/BiCA,MAAA,GAAAA,MAAA,UAAA8K,EAAAuc,sFCMpBJ,CAAoB,oECH1B,IAAMO,EAAuB,MAA9B,MAAOA,EAMXpe,YAAmB9H,GAAA+H,KAAA/H,WALV+H,KAAAoe,WAAY,EACZpe,KAAAqe,UAAY,OAEZre,KAAAse,QAAgC,SAEO,CAEhDC,cACE,OAAOve,KAAK/H,QACd,iDAVWkmB,GAAuBxnB,aAAA,oCAAvBwnB,EAAuBle,UAAA,8BAAA8d,OAAA,CAAAK,UAAA,YAAAC,UAAA,YAAA/mB,KAAA,OAAAgnB,QAAA,qBAAvBH,CAAuB,4KCI7B,IAAMK,EAAoB,MAA3B,MAAOA,EAWXze,cAVSC,KAAAye,cAAmC,GACnCze,KAAA0e,UAAW,EACX1e,KAAAqG,QAAS,EAETrG,KAAA2e,UAAW,EAEX3e,KAAAxH,cAAoBqT,CAId,CAEfyC,qBACEtO,KAAK4e,0BACD,EAAChe,SAAMZ,KAAKxH,WAAawH,KAAK6e,SAChC7e,KAAK6e,QAAQvd,QAASwd,GAAOA,EAAEtmB,SAAWwH,KAAKxH,UAGjDwH,KAAKN,MAAQM,KAAK+e,WAAW/e,KAAKN,KACpC,CAEA2O,cACMrO,KAAKgf,uBACPhf,KAAKgf,sBAAsB3M,aAE/B,CAEA4M,YAAYC,GACNlf,KAAK6e,UACPK,EAAQ1mB,UAAYwH,KAAKmf,eAAeD,EAAQ1mB,SAAS4mB,cACzDF,EAAQxf,MAAQM,KAAK+e,WAAWG,EAAQxf,KAAK0f,cAEjD,CAEAR,wBACM5e,KAAKqG,SACHrG,KAAKgf,uBACPhf,KAAKgf,sBAAsB3M,cAE7BrS,KAAKgf,yBAAwBK,QAASrf,KAAK6e,QAAQ3P,IAAK3J,GAAQA,EAAI+Z,MAAM7a,QAAK8a,KAAMha,MAAQZ,UAAWY,IACjGvF,KAAK0e,UACR1e,KAAK6e,QAAQ/d,OAAQge,GAAMA,GAAKvZ,GAAKjE,QAASwd,GAAOA,EAAEU,QAAS,GAElEja,EAAIia,QAAUja,EAAIia,SAGxB,CAEAT,WAAWrf,GACTM,KAAK6e,QAAQvd,QAASwd,GAAOA,EAAEpf,KAAOof,EAAEpf,KAAOof,EAAEpf,KAAOA,EAC1D,CAEAyf,eAAe3mB,GACbwH,KAAK6e,QAAQvd,QAASwd,GAAOA,EAAEtmB,SAAWA,EAC5C,iDAvDWgmB,EAAoB,oCAApBA,EAAoBve,UAAA,uBAAAsB,eAAA,SAAAC,EAAAC,EAAAC,MAAA,EAAAF,WASdie,IAAe,EAAUA,8VCnB5C9oB,MAAA,WAQEA,MAAA,GACFA,cAPKA,MAAA,UAAAA,MAAA,EAAA0gB,EAAA5V,EAAAnK,KAAA,iBAAAmK,EAAAnK,KAAA,GAAAmK,EAAAkd,SAAA,+CAAAld,EAAA/B,KAAA,iBAAA+B,EAAA/B,KAAA,GAAA+B,EAAAgd,+DDQQD,CAAoB,uLER/B7nB,MAAA,mCACMA,MAAA,OAAAK,EAAA0oB,QACA/oB,MAAA,UAAAA,MAAA,EAAA0gB,EAAArgB,EAAA2oB,2CAFNhpB,MAAA,EAAAipB,EAAA,cAGAjpB,MAAA,0BAHOA,MAAA,OAAAkpB,EAAAzE,qHAMTzkB,MAAA,GACEA,MAAA,UAAAA,CAKuD,cAG7CA,MAAA,iBAAAG,GAAAH,MAAA+S,GAAA,MAAAC,EAAAhT,QAAA,OAASA,MAAAgT,EAAAmW,YAAAhpB,GAAmB,GAclCH,MAAA,KACFA,QACAA,MAAA,WAKEA,MAAA,KACFA,UAEJA,uDA9BOA,MAAA,GAAAA,MAAA,UAAAoB,EAAAgoB,oBAAAppB,CAA+B,UAAAoB,EAAAioB,0BAAA1B,QAA/B3nB,CAA+B,YAAAoB,EAAAkoB,kBAA/BtpB,CAA+B,YAAAoB,EAAAioB,0BAAA3B,WAW1B1nB,MAAA,GAAAA,MAAA,YAAAoB,EAAAmoB,iBAAAvpB,CAAoC,cAAAoB,EAAAooB,QAApCxpB,CAAoC,aAAAoB,EAAA2nB,OAApC/oB,CAAoC,iBAAAoB,EAAAqoB,eAJpCzpB,MAAA,YAAAoB,EAAAsoB,YAAAtoB,EAAAuoB,iBAAA,KAAA3pB,CAAmD,YAAAoB,EAAAsoB,YAAAtoB,EAAAwoB,iBAAA,KAAnD5pB,CAAmD,WAAAoB,EAAAsoB,YAAAtoB,EAAAyoB,gBAAA,KAAnD7pB,CAAmD,UAAAA,MAAA,GAAA8pB,EAAA1oB,EAAA2oB,OAAA3oB,EAAA4oB,aAAA5oB,EAAA6oB,aAAA7oB,EAAA8oB,cAAA9oB,EAAA+oB,gBAAA/oB,EAAAgpB,eAAAhpB,EAAAipB,iBAAAjpB,EAAA0mB,eAAnD9nB,CAAmD,mBAAAoB,EAAAsoB,aAAAtoB,EAAAsoB,YAAA/f,OAAAma,EAAA,KAAnD9jB,CAAmD,eAAAoB,EAAAkpB,aAAnDtqB,CAAmD,WAAAoB,EAAAS,UAAAT,EAAAie,SAHnDrf,MAAA,KAAAoB,EAAAa,GAAAjC,CAAc,gBAAAoB,EAAAS,UAAAT,EAAAie,SAgBNrf,MAAA,GAAAA,MAAA,mBAAA6T,GAGX7T,MAAA,GAAAA,MAAA,MAAAoB,EAAAioB,0BAAA1oB,OAAAS,EAAA8iB,QAAAyC,GAAA3mB,CAA2D,MAAAoB,EAAAioB,0BAAA1oB,OAAAS,EAAA8iB,QAAAC,GAA3DnkB,CAA2D,SAAAoB,EAAAioB,0BAAA5B,WAG3DznB,MAAA,kBAAAoB,EAAAa,IACWjC,MAAA,GAAAA,MAAA,mBAAAoB,EAAAioB,0BAAA/nB,sDAKpBtB,MAAA,GACEA,MAAA,cACQA,MAAA,iBAAAG,GAAAH,MAAAihB,GAAA,MAAAlgB,EAAAf,QAAA,OAASA,MAAAe,EAAAooB,YAAAhpB,GAAmB,GAclCH,MAAA,KACFA,QACFA,uDAVUA,MAAA,GAAAA,MAAA,cAAAikB,EAAAuF,QAAAxpB,CAA6B,aAAAikB,EAAA8E,OAA7B/oB,CAA6B,iBAAAikB,EAAAwF,cAA7BzpB,CAA6B,sBAAAikB,EAAA7hB,OAL7BpC,MAAA,OAAAikB,EAAAsG,WAAAvqB,CAAmB,YAAAikB,EAAAyF,YAAAzF,EAAA0F,iBAAA,KAAnB3pB,CAAmB,YAAAikB,EAAAyF,YAAAzF,EAAA2F,iBAAA,KAAnB5pB,CAAmB,WAAAikB,EAAAyF,YAAAzF,EAAA4F,gBAAA,KAAnB7pB,CAAmB,UAAAA,MAAA,GAAA8pB,EAAA7F,EAAA8F,OAAA9F,EAAA+F,aAAA/F,EAAAgG,aAAAhG,EAAAiG,cAAAjG,EAAAkG,gBAAAlG,EAAAmG,eAAAnG,EAAA6D,cAAA7D,EAAAoG,kBAAnBrqB,CAAmB,WAAAikB,EAAApiB,UAAAoiB,EAAA5E,QAAnBrf,CAAmB,mBAAAikB,EAAAyF,aAAAzF,EAAAyF,YAAA/f,OAAAma,EAAA,KAAnB9jB,CAAmB,eAAAikB,EAAAqG,cAFnBtqB,MAAA,KAAAikB,EAAAhiB,GAAAjC,CAAc,gBAAAikB,EAAApiB,UAAAoiB,EAAA5E,SAeNrf,MAAA,GAAAA,MAAA,mBAAA6T,gCAMd7T,MAAA,YACkBA,MAAA,GAAOA,oCAAPA,MAAA,GAAAA,MAAAwqB,gCAFpBxqB,MAAA,YACEA,MAAA,EAAAyqB,EAAA,cAEFzqB,gCAFuBA,MAAA,GAAAA,MAAA,UAAAoT,EAAAsW,yCADvB1pB,MAAA,EAAA0qB,EAAA,oCAAM1qB,MAAA,aAAAC,EAAAypB,YAAA,KAAAzpB,EAAAypB,YAAA/f,wBC1BD,IAAMmf,GAAe,MAAtB,MAAOA,GAkFX,YAAY6B,GACV,OAAIthB,KAAKN,KACAM,KAAKN,KAGPM,KAAKuhB,OAAS,UAAY,WACnC,CAEA,UAAWb,GACT,OAAI1gB,KAAKuhB,OAAe,OACpBvhB,KAAKwhB,SAAiB,SAEnB,KACT,CAEA,oBAAWR,GACT,SAAOpgB,SAAMZ,KAAKyhB,cAAgB,GAAKzhB,KAAKyhB,aAAe,gBAAkB,kBAC/E,CAEA,gBAAWd,GACT,MAAO,GAAG3gB,KAAK0gB,UAAU1gB,KAAKshB,UAChC,CAEA,gBAAWV,GACT,OAAO5gB,KAAK1I,KAAO,GAAG0I,KAAK0gB,UAAU1gB,KAAK1I,OAAS,EACrD,CAEA,iBAAWupB,GACT,OAAO7gB,KAAK0hB,MAAQ,YAAc,EACpC,CAEA,mBAAWZ,GACT,OAAO9gB,KAAKgW,QAAU,WAAa,EACrC,CAEA,kBAAW+K,GACT,OAAO/gB,KAAKwf,OAAS,SAAW,EAClC,CAEA,qBAAImC,GACF,OAAO3hB,KAAKxH,UAAYwH,KAAKgW,OAC/B,CAEAjW,YAAmCvH,GA3HnBwH,KAAA6a,QAAUA,KAKjB7a,KAAAkhB,WAA4C,SAI5ClhB,KAAAuhB,QAAS,EAKTvhB,KAAAwhB,UAAW,EAoBXxhB,KAAA0hB,OAAQ,EAKR1hB,KAAAgW,SAAU,EACVhW,KAAAxH,UAAW,EAYXwH,KAAA+f,oBAAsB,GACtB/f,KAAAye,cAAgB,GAKhBze,KAAAigB,kBAAoC,8CAEpCjgB,KAAAsgB,iBAAmB,OACnBtgB,KAAAugB,iBAAmC,CAAC,OAAQ,QAC5CvgB,KAAAwgB,gBAAkB,aAClBxgB,KAAAogB,eAAgB,EAEhBpgB,KAAAkgB,kBAAmB,EAGnBlgB,KAAA0f,QAAS,EAGT1f,KAAAmgB,SAAU,EAITngB,KAAAsf,MAAQ,IAAI7e,MAiDpBT,KAAKxH,WAAW,EAACoI,SAAMpI,KAA0B,IAAbA,CACtC,CAEAkjB,WACE1b,KAAK2f,YAAc,GAAG3f,KAAKuhB,OAAS,WAAa,aAAavhB,KAAKob,MACrE,CAEA6D,YAAYC,GACV,GAAIA,EAAQ1mB,SAAU,CACpB,MAAMA,EAAW0mB,EAAQ1mB,SAAS4mB,aAElCpf,KAAKxH,WAAW,EAACoI,SAAMpI,KAA0B,IAAbA,EAGlC0mB,EAAQ9D,OACVpb,KAAK2f,YAAc,GAAG3f,KAAKuhB,OAAS,WAAa,aAAavhB,KAAKob,OAEvE,CAEA0E,YAAY9e,GACVA,EAAMgJ,kBAEoB,UAAtBhJ,EAAM4gB,aACR5gB,GAAOsF,QAAQoK,OAGO,WAApB1Q,KAAKkhB,YACPlgB,EAAM2O,iBAGR3P,KAAKsf,MAAMre,KAAKD,EAClB,iDA7JWye,IAAe9oB,MA6HH,YAAU,oCA7HtB8oB,GAAexf,UAAA,sCAAAsB,eAAA,SAAAC,EAAAC,EAAAC,MAAA,EAAAF,WA+EZ2c,IAAuB,EAAwBA,q8CDpH/DxnB,MAAA,EAAAkrB,EAAA,yBAAAlrB,OAOAA,MAAA,EAAAmrB,EAAA,uBAmCAnrB,MAAA,EAAAorB,EAAA,uBAoBAprB,MAAA,EAAAqrB,EAAA,yBAAArrB,cAvDeA,MAAA,GAAAA,MAAA,OAAA8K,EAAAue,2BAmCArpB,MAAA,GAAAA,MAAA,QAAA8K,EAAAue,8GCLFP,EAAe,0FC1BrB,IAAM/J,EAAY,MAAnB,MAAOA,oDAAY,oCAAZA,GAAY,uCAFbvO,KAAcoO,KAAmB0M,OAAgB,SAEhDvM,CAAY,iOCAlB,IAAMwM,EAAkB,MAAzB,MAAOA,oDAAkB,oCAAlBA,EAAkBjiB,UAAA,qBAAAuY,UAAA,qBAAA2J,mBAAA1B,EAAArM,MAAA,EAAAC,KAAA,EAAApc,SAAA,SAAAuJ,EAAAC,GAAA,EAAAD,aAP3B7K,MAAA,GACAA,MAAA,iCAMSurB,CAAkB,uICLvBvrB,MAAA,WACEA,MAAA,YACFA,+BADQA,MAAA,GAAAA,MAAA,UAAAA,MAAA,EAAA0gB,EAAAwI,EAAAuC,sCAFVzrB,MAAA,GACEA,MAAA,EAAA0rB,EAAA,aAGA1rB,MAAA,WACEA,MAAA,GACFA,QACFA,8BAN6BA,MAAA,GAAAA,MAAA,OAAAU,EAAA+qB,WAIzBzrB,MAAA,GAAAA,MAAA,IAAAU,EAAAirB,YAAA,MAMH,IAAMC,EAAmB,MAA1B,MAAOA,oDAAmB,oCAAnBA,EAAmBtiB,UAAA,sBAAAsB,eAAA,SAAAC,EAAAC,EAAAC,MAAA,EAAAF,WAGhB2V,MAAW,EAAUA,qUAfjCxgB,MAAA,cACEA,MAAA,EAAA6rB,EAAA,sBAQF7rB,eARiBA,MAAA,GAAAA,MAAA,QAAA8K,EAAAghB,eAAA9rB,CAAuB,WAAA8K,EAAAghB,qEAW/BF,CAAmB,+GCL1B5rB,MAAA,WAEEA,MAAA,KACFA,qJCRC,IAAM+rB,EAAa,MAApB,MAAOA,EAJb3iB,cAKWC,KAAA2iB,SAAU,EACV3iB,KAAA4iB,eAAgB,EAChB5iB,KAAA6iB,QAAS,EACT7iB,KAAA8iB,YAAa,EACb9iB,KAAA1I,KAAgC,GAChC0I,KAAAye,cAAgB,GAIzB,YAAIsE,GACF,OAAO/iB,KAAK1I,KAAO,IAAI0I,KAAK1I,OAAS,EACvC,CAEA,mBAAI0rB,GACF,OAAOhjB,KAAK+iB,SAAW,IAAM/iB,KAAKye,aACpC,CAEA,aAAiCwE,GAC/B,OAAIjjB,KAAKkjB,aAC0B,iBAAtBljB,KAAKkjB,aACP/Z,OAAOnJ,KAAKkjB,cAAgB,KAE5BljB,KAAKkjB,aAGT,EACT,iDA3BWR,EAAa,oCAAbA,EAAaziB,UAAA,eAAAsB,eAAA,SAAAC,EAAAC,EAAAC,MAAA,EAAAF,WAQV0gB,IAAkB,6fDflCvrB,MAAA,UAAAA,CAM8C,WAG1CA,MAAA,GACAA,MAAA,WAEEA,MAAA,EAAAwsB,EAAA,aAIAxsB,MAAA,KACFA,UAGFA,MAAA,KACFA,eAnBKA,MAAA,cAAA8K,EAAAohB,OAAAlsB,CAA4B,eAAA8K,EAAAqhB,WAA5BnsB,CAA4B,gBAAA8K,EAAAohB,QAAAphB,EAAAkhB,QAA5BhsB,CAA4B,iBAAA8K,EAAAmhB,cAA5BjsB,CAA4B,oBAAA8K,EAAAyhB,cAD5BvsB,MAAA,UAAA8K,EAAAuhB,iBAYOrsB,MAAA,GAAAA,MAAA,OAAA8K,EAAA2hB,iECNCV,CAAa,2ICkBnB,IAAMW,EAAsB,MAA7B,MAAOA,oDAAsB,oCAAtBA,GAAsB,uCAJvBlc,KAAcmc,KAAWrB,KAAkBvM,OAAY,SAItD2N,CAAsB,+ECnB5B,IAAME,EAAuB,MAA9B,MAAOA,EAKXxjB,YAAoByjB,GAAAxjB,KAAAwjB,WAAuB,CAE3CvE,YAAYC,GACNA,EAAQuE,gBAAgBzjB,KAAK0jB,oBAAoBxE,EAAQuE,eAAerE,aAC9E,CAEAsE,oBAAoB1f,GAElBhE,KAAKwjB,WAAaxjB,KAAKwjB,UAAUG,QADlB3f,EAAY,UAAY,UACUhE,KAAK4jB,sBACxD,iDAdWL,GAAuB5sB,MAAAqd,MAAA,oCAAvBuP,EAAuBtjB,UAAA,2BAAA8d,OAAA,CAAA0F,eAAA,iBAAAG,sBAAA,yBAAAC,SAAA,CAAAltB,QAAA,SAAvB4sB,CAAuB,0OCuB5B5sB,MAAA,YAA0DA,MAAA,GAAWA,gCAAXA,MAAA,GAAAA,MAAAikB,EAAAjhB,kDAIxDhD,MAAA,mBAAyFA,MAAA,mBAAAA,MAAA4gB,GAAA,MAAA3gB,EAAAD,MAAA,UAASA,MAAAC,EAAAktB,UAAA7iB,OAAgB,GAAEtK,MAAA,GAElHA,kCAFuEA,MAAA,aAA2CA,MAAA,GAAAA,MAAAgmB,EAAAoH,qDALxHptB,MAAA,WACEA,MAAA,EAAAqtB,EAAA,cACArtB,MAAA,SAAgBA,MAAA,GAAUA,QAC1BA,MAAA,UAAAA,CAA6D,kBACrCA,MAAA,mBAAAA,MAAA+S,GAAA,MAAAC,EAAAhT,QAAA,OAASA,MAAAgT,EAAAsa,QAAAhjB,OAAc,GAAEtK,MAAA,GAAYA,QAC3DA,MAAA,EAAAutB,EAAA,oBAGFvtB,mCAPOA,MAAA,GAAAA,MAAA,OAAAkpB,EAAAlmB,OACShD,MAAA,GAAAA,MAAAkpB,EAAAjQ,MAEiCjZ,MAAA,GAAAA,MAAAkpB,EAAAsE,QAClCxtB,MAAA,GAAAA,MAAA,OAAAkpB,EAAAkE,WAXvB,IAAIK,GAAI,EAgCKC,GAAiC,MAAxC,MAAOA,GA9BbtkB,cA6CYC,KAAAikB,QAA8B,IAAIxjB,MAClCT,KAAA8jB,UAAgC,IAAIrjB,MAM9CE,kBACMX,KAAKskB,eACPtkB,KAAKA,KAAKskB,gBAEd,CAEAC,KAAK5J,GACH3a,KAAKskB,cAAgB,OAErBtkB,KAAKwkB,SAASD,KAAK5J,EACrB,CAEAjN,QACE1N,KAAKskB,cAAgB,QAErBtkB,KAAKwkB,SAAS9W,OAChB,iDAtCW2W,GAAiC,oCAAjCA,GAAiCpkB,UAAA,qCAAAiU,UAAA,SAAA1S,EAAAC,MAAA,EAAAD,i/BA3B1C7K,MAAA,EAAA8tB,EAAA,yBAAA9tB,OAaAA,MAAA,qCAEEA,MAAA,GAAAA,MAAA,aAAA6T,GAAA7T,CAA8B,YAAA8K,EAAAijB,UAA9B/tB,CAA8B,YAAA8K,EAAAiW,UAA9B/gB,CAA8B,YAAA8K,EAAAkjB,UAA9BhuB,CAA8B,WAAA8K,EAAAmjB,SAA9BjuB,CAA8B,YAAA8K,EAAA4c,UAA9B1nB,CAA8B,iBAAA8K,EAAAojB,eAA9BluB,CAA8B,eAAA8K,EAAAwf,aAA9BtqB,CAA8B,YAAA8K,EAAAqjB,UAA9BnuB,CAA8B,aAAA8K,EAAAsjB,qEAYvBV,EAAiC,KA8CjCW,GAAN,MAAMA,GA8BXjlB,YACU6D,EACAqhB,EACAC,EACAC,EACAC,IAJAplB,KAAA4D,KACA5D,KAAAilB,WACAjlB,KAAAklB,WACAllB,KAAAmlB,2BACAnlB,KAAAolB,UAhCDplB,KAAA4P,KAAsC,KAYtC5P,KAAAqlB,iBAAmB,IACnBrlB,KAAAslB,SAAW,EACXtlB,KAAAulB,UAAY,EACZvlB,KAAAwlB,WAAa,EAEZxlB,KAAAikB,QAA8B,IAAIxjB,MAClCT,KAAA8jB,UAAgC,IAAIrjB,MAItCT,KAAApH,GAAK,uBAAuBwrB,KAE5BpkB,KAAAylB,WAAY,EACZzlB,KAAA0lB,OAAS,IAAIrM,GAQlB,CAEHqC,WAAY,CAEZ/a,kBACEX,KAAK2lB,aACP,CAEApB,KAAK5J,GACH3a,KAAK4lB,cAAcC,UAAUtB,KAAK5J,GAElC3a,KAAK8lB,uBACP,CAEApY,QACE1N,KAAK0lB,OAAO/T,KAAK,MACjB3R,KAAK+lB,kBAAkBC,eAEvBhmB,KAAK4lB,cAAcC,UAAUnY,OAC/B,CAEQiY,cACN,MAAMM,EAAmBjmB,KAAKqe,UAAYrO,SAAS3M,cAAcrD,KAAKqe,WAAare,KAAK4D,GAAGgJ,cAAcsZ,WAEzGlmB,KAAKmmB,QAAUnmB,KAAKilB,SAASmB,cAAc,OAE3CpmB,KAAKqmB,wBACLrmB,KAAKilB,SAASqB,aAAatmB,KAAKmmB,QAAS,KAAMnmB,KAAKpH,IACpDoH,KAAKilB,SAASsB,SAASvmB,KAAKmmB,QAAS,WAAY,YACjDnmB,KAAKilB,SAASsB,SAASvmB,KAAKmmB,QAAS,iBAAkB,QACvDnmB,KAAKilB,SAASuB,YAAYP,EAAkBjmB,KAAKmmB,SAEjD,MAAMM,EAAmBzmB,KAAKmlB,yBAAyBuB,wBAAwBrC,IAC/ErkB,KAAK4lB,aAAea,EAAiBE,OAAO3mB,KAAKklB,UAEjDllB,KAAK4lB,aAAaC,SAAS5B,QAAQxf,QAAKC,KAAe1E,OAAO2E,UAAU,IAAM3E,KAAKikB,QAAQhjB,QAC3FjB,KAAK4lB,aAAaC,SAAS/B,UAAUrf,QAAKC,KAAe1E,OAAO2E,UAAU,IAAM3E,KAAK8jB,UAAU7iB,QAE/F,CACE,QACA,OACA,SACA,WACA,YACA,YACA,WACA,YACA,iBACA,eACA,YACA,cACAK,QAASiP,IACTvQ,KAAK4lB,aAAaC,SAAStV,GAAOvQ,KAAKuQ,EAAG,GAG5CvQ,KAAKilB,SAASuB,YAAYxmB,KAAKmmB,QAASnmB,KAAK4lB,aAAagB,SAASha,eAEnE5M,KAAKolB,OAAOyB,WAAW7mB,KAAK4lB,aAAakB,SAC3C,CAEQT,wBACN,GAAIrmB,KAAKylB,UACP,OAGF,IAAIsB,EAAYzV,OAAO0V,aAAehX,SAASiX,gBAAgBF,UAC/D,MAAMd,EAAmBjmB,KAAKqe,UAAYrO,SAAS3M,cAAcrD,KAAKqe,WAAare,KAAK4D,GAAGgJ,cAAcsZ,WACnGgB,EAAOlnB,KAAK4D,GAAGgJ,cAAcua,yBAE2B,UAA5D7V,OAAO8V,iBAAiBpnB,KAAK4D,GAAGgJ,eAAeya,UAA+E,UAAvD/V,OAAO8V,iBAAiBnB,GAAkBoB,YAGjHN,EAAY,GAGd/mB,KAAKilB,SAASsB,SAASvmB,KAAKmmB,QAAS,MAAO,GAAGe,EAAKI,IAAMtnB,KAAKulB,UAAYwB,OAC3E/mB,KAAKilB,SAASsB,SAASvmB,KAAKmmB,QAAS,OAAQ,GAAGe,EAAKK,KAAOvnB,KAAKwlB,gBACjExlB,KAAKilB,SAASsB,SAASvmB,KAAKmmB,QAAS,QAASnmB,KAAKslB,SAAW,GAAGtlB,KAAKslB,aAAe,KACrFtlB,KAAKilB,SAASsB,SAASvmB,KAAKmmB,QAAS,SAAU,IACjD,CAEQL,wBACN,IAAI1B,EAAI,EAER,MAIMoD,KAAUC,KAAUnW,OAAQ,UAC5BoW,KAAUD,KAAUnW,OAAQ,UAC5BqW,GAAa,IAAIhc,IAAwB,MAE/C3L,KAAK+lB,iBAAmB,IAAI6B,iBAAiB,IAAMD,GAAWhW,KAAKyS,MACnEpkB,KAAK+lB,iBAAiB8B,QAAQ7nB,KAAK4D,GAAGgJ,cAAe,CAAEkb,YAAY,EAAMC,WAAW,EAAMC,SAAS,KAAM,EAEzG3I,KAAMmI,EAASE,EAASC,IACrBljB,QAAKwjB,KAAUjoB,KAAK0lB,SAAM,EAAGwC,KAAaloB,KAAKqlB,mBAAgB,EAAG3gB,KAAe1E,OACjF2E,UAboBwjB,KACrBnoB,KAAKqmB,uBAAqB,GAc5BsB,GAAWhW,KAAK,EAClB,CAEAtD,cACErO,KAAKylB,WAAY,EAEbzlB,KAAKmmB,SAASD,YAAYkC,aAC5BpoB,KAAKmmB,QAAQD,WAAWkC,YAAYpoB,KAAKmmB,SAG3CnmB,KAAK+lB,kBAAkBC,eACvBhmB,KAAK4lB,cAAcyC,WACrB,iDAnJWrD,IAAyBruB,iEAAA,oCAAzBquB,GAAyB/kB,UAAA,gCAAA8d,OAAA,CAAAuK,oBAAA,sBAAA3uB,MAAA,QAAAiW,KAAA,OAAAuU,OAAA,SAAAJ,SAAA,WAAAW,UAAA,YAAAhN,UAAA,YAAAiN,UAAA,YAAAC,SAAA,WAAAvG,UAAA,YAAAwG,eAAA,iBAAA5D,aAAA,eAAA6D,UAAA,YAAAC,WAAA,aAAAM,iBAAA,mBAAAC,SAAA,WAAAC,UAAA,YAAAC,WAAA,cAAAvH,QAAA,CAAAgG,QAAA,UAAAH,UAAA,aAAAyE,SAAA,mBAAzBvD,MAAyBjjB,MAAA,IALrCC,QAAY,EAAEwmB,EAAAtmB,IAAA,qBAoCC8E,MACMC,MACAwhB,MACgBC,MAClBC,SAnCP3D,mEC9FN,IAAM4D,EAAqB,MAA5B,MAAOA,EAIX7oB,YAAoBqD,EAA0BylB,GAA1B7oB,KAAAoD,OAA0BpD,KAAA6oB,OAHpC7oB,KAAA8oB,YAAc,IAAIroB,KAGiC,CAE7Dib,WACE1b,KAAK+oB,SAAW,IAAIC,eAAgBC,IAClCjpB,KAAK6oB,KAAKK,IAAI,KACZlpB,KAAK8oB,YAAY7nB,KAAK,CACpBkoB,OAAQF,EAAQ,IAAIG,aAAaD,QAAU,EAC3CE,MAAOJ,EAAQ,IAAIG,aAAaC,OAAS,EACzCC,kBAAmBL,EAAQ,IAAI3iB,QAAQijB,aAAeN,EAAQ,IAAI3iB,QAAQkjB,aAC1EC,oBAAqBR,EAAQ,IAAI3iB,QAAQojB,YAAcT,EAAQ,IAAI3iB,QAAQqjB,aAC5E,EACF,GAGH3pB,KAAK+oB,SAASlB,QAAQ7nB,KAAKoD,KAAKwJ,cAClC,CAEAyB,cACErO,KAAK+oB,UAAUa,UAAU5pB,KAAKoD,KAAKwJ,cACrC,iDAvBWgc,GAAqBjyB,0BAAA,oCAArBiyB,EAAqB3oB,UAAA,4BAAAge,QAAA,CAAA6K,YAAA,yBAArBF,CAAqB,0FCM3B,IAAMiB,EAAkB,MAAzB,MAAOA,EACX9pB,YAAgCyjB,GAAAxjB,KAAAwjB,WAAuB,CAGvDhI,KAAKxa,GACH,MAAM8oB,EAAQ9oB,EAAMsF,QACpB,EAAI1F,SAAMkpB,EAAMjhB,SAGhBihB,EAAMjhB,MAAQihB,EAAMjhB,MAAM2S,OACtBxb,KAAKwjB,WACPxjB,KAAKwjB,UAAUG,QAAQoG,WAAWD,EAAMjhB,OAE5C,iDAbWghB,GAAkBlzB,MAAAqd,KAAA,uCAAlB6V,EAAkB5pB,UAAA,8BAAAyY,aAAA,SAAAlX,EAAAC,GAAA,EAAAD,mCAAlBC,EAAA+Z,KAAA1kB,EAAY,cAAZ+yB,CAAkB,wGCT7BlzB,MAAA,UAGEA,MAAA,GACFA,gCAFIA,MAAA,UAAAgmB,GAAAqN,cACFrzB,MAAA,GAAAA,MAAA,IAAAgmB,GAAAhjB,MAAA,+BAEFhD,MAAA,UAGEA,MAAA,GACFA,gCAFIA,MAAA,UAAAC,GAAAozB,cACFrzB,MAAA,GAAAA,MAAA,IAAAC,GAAA+C,MAAA,+BAEFhD,MAAA,UAGEA,MAAA,GACFA,gCAFIA,MAAA,UAAAK,GAAAgzB,cACFrzB,MAAA,GAAAA,MAAA,IAAAK,GAAA2C,MAAA,+BAEFhD,MAAA,UAGEA,MAAA,GACFA,gCAFIA,MAAA,UAAAgT,GAAAqgB,cACFrzB,MAAA,GAAAA,MAAA,IAAAgT,GAAAhQ,MAAA,+BAEFhD,MAAA,UAGEA,MAAA,GACFA,gCAFIA,MAAA,UAAAmmB,GAAAkN,cACFrzB,MAAA,GAAAA,MAAA,IAAAmmB,GAAAnjB,MAAA,+BAEFhD,MAAA,UAGEA,MAAA,GACFA,gCAFIA,MAAA,UAAAe,GAAAsyB,cACFrzB,MAAA,GAAAA,MAAA,IAAAe,GAAAiC,MAAA,+BAEFhD,MAAA,UAGEA,MAAA,GACFA,gCAFIA,MAAA,UAAAszB,GAAAD,cACFrzB,MAAA,GAAAA,MAAA,IAAAszB,GAAAtwB,MAAA,+BApCJhD,MAAA,cAGEA,MAAA,EAAAuzB,EAAA,YAKAvzB,MAAA,EAAAwzB,EAAA,YAKAxzB,MAAA,EAAAyzB,EAAA,YAKAzzB,MAAA,EAAA0zB,EAAA,YAKA1zB,MAAA,EAAA2zB,EAAA,YAKA3zB,MAAA,EAAA4zB,EAAA,YAKA5zB,MAAA,EAAA6zB,EAAA,YAKF7zB,+BArCQA,MAAA,WAAAU,GAAAozB,WAED9zB,MAAA,GAAAA,MAAA,qBAKAA,MAAA,GAAAA,MAAA,qBAKAA,MAAA,GAAAA,MAAA,qBAKAA,MAAA,GAAAA,MAAA,qBAKAA,MAAA,GAAAA,MAAA,qBAKAA,MAAA,GAAAA,MAAA,2CAcLA,MAAA,wBAIAA,MAAA,iBClCK,IAAM+zB,EAAkB,MAAzB,MAAOA,EARb3qB,cA0BWC,KAAAyqB,UAAgC,KAEhCzqB,KAAA2qB,cAAwC,MAExC3qB,KAAA4qB,mBAAqB,KArB9B,YAA0BC,GACxB,MAA8B,SAAvB7qB,KAAK2qB,cAA2B,iCAAmC,EAC5E,mDAHWD,EAAkB,oCAAlBA,EAAkBzqB,UAAA,qBAAAuY,UAAA,qBAAAC,SAAA,EAAAC,aAAA,SAAAlX,GAAAC,IAAA,EAAAD,8lBDZ/B7K,MAAA,EAAAm0B,EAAA,gBAwCAn0B,MAAA,WAEEA,MAAA,EAAAo0B,EAAA,sBACFp0B,QAEAA,MAAA,EAAAq0B,EAAA,yBAAAr0B,gCA3CSA,MAAA,OAAA8K,GAAA9H,OAuCJhD,MAAA,GAAAA,MAAA,UAAA8K,GAAAmpB,oBACYj0B,MAAA,GAAAA,MAAA,mBAAAs0B,+FC9BJP,CAAkB,uGCN3B/zB,MAAA,+BAHFA,MAAA,UAGEA,MAAA,EAAAu0B,EAAA,sBACFv0B,6CAHIA,MAAA,UAAAK,GAAAgzB,cAEarzB,MAAA,GAAAA,MAAA,mBAAA8jB,6BAKf9jB,MAAA,+BAHFA,MAAA,UAGEA,MAAA,EAAAw0B,EAAA,sBACFx0B,6CAHIA,MAAA,UAAAgT,GAAAqgB,cAEarzB,MAAA,GAAAA,MAAA,mBAAA8jB,6BAKf9jB,MAAA,+BAHFA,MAAA,UAGEA,MAAA,EAAAy0B,EAAA,sBACFz0B,6CAHIA,MAAA,UAAAmmB,GAAAkN,cAEarzB,MAAA,GAAAA,MAAA,mBAAA8jB,6BAKf9jB,MAAA,+BAHFA,MAAA,UAGEA,MAAA,EAAA00B,EAAA,sBACF10B,6CAHIA,MAAA,UAAAe,GAAAsyB,cAEarzB,MAAA,GAAAA,MAAA,mBAAA8jB,6BAKf9jB,MAAA,+BAHFA,MAAA,UAGEA,MAAA,EAAA20B,EAAA,sBACF30B,6CAHIA,MAAA,UAAAszB,GAAAD,cAEarzB,MAAA,GAAAA,MAAA,mBAAA8jB,6BAKf9jB,MAAA,+BAHFA,MAAA,UAGEA,MAAA,EAAA40B,EAAA,sBACF50B,6CAHIA,MAAA,UAAAoT,GAAAigB,cAEarzB,MAAA,GAAAA,MAAA,mBAAA8jB,6BAKf9jB,MAAA,+BAHFA,MAAA,UAGEA,MAAA,EAAA60B,EAAA,sBACF70B,6CAHIA,MAAA,UAAAsmB,GAAA+M,cAEarzB,MAAA,GAAAA,MAAA,mBAAA8jB,kCApCnB9jB,MAAA,cAGEA,MAAA,EAAA80B,EAAA,YAKA90B,MAAA,EAAA+0B,EAAA,YAKA/0B,MAAA,EAAAg1B,EAAA,YAKAh1B,MAAA,EAAAi1B,EAAA,YAKAj1B,MAAA,EAAAk1B,EAAA,YAKAl1B,MAAA,EAAAm1B,EAAA,YAKAn1B,MAAA,EAAAo1B,EAAA,YAKFp1B,gCArCQA,MAAA,WAAAU,GAAAozB,WAED9zB,MAAA,GAAAA,MAAA,qBAKAA,MAAA,GAAAA,MAAA,qBAKAA,MAAA,GAAAA,MAAA,qBAKAA,MAAA,GAAAA,MAAA,qBAKAA,MAAA,GAAAA,MAAA,qBAKAA,MAAA,GAAAA,MAAA,+CAaLA,MAAA,4BAIAA,MAAA,gEAIAA,MAAA,qCAEMA,MAAA,UAAAA,MAAA,EAAA0gB,GAAAve,GAAAsiB,oCAFNzkB,MAAA,EAAAq1B,EAAA,cAGAr1B,MAAA,2BAFOA,MAAA,OAAAC,GAAAwkB,MAEPzkB,MAAA,GAAAA,MAAA,IAAAC,GAAA+C,MAAA,qBCtCK,IAAMsyB,EAAoB,MAA3B,MAAOA,GARblsB,cAsCWC,KAAAyqB,UAAkC,KAR3C,0BAAIyB,GACF,OAAOlsB,KAAK1I,KAAO,KAAK0I,KAAK1I,OAAS,EACxC,mDAxBW20B,GAAoB,oCAApBA,GAAoBhsB,UAAA,uBAAAwY,SAAA,EAAAC,aAAA,SAAAlX,GAAAC,IAAA,EAAAD,itBDdjC7K,MAAA,EAAAw1B,GAAA,gBAwCAx1B,MAAA,WACEA,MAAA,EAAAy1B,GAAA,sBACFz1B,QAEAA,MAAA,EAAA01B,GAAA,yBAAA11B,OAIAA,MAAA,EAAA21B,EAAA,yBAAA31B,gCA9CSA,MAAA,OAAA8K,GAAA9H,OAuCQhD,MAAA,GAAAA,MAAA,mBAAAs0B,+FC3BJgB,EAAoB,4JC6BjCt1B,MAAA,WAOEA,MAAA,GACFA,+BANKA,MAAA,WAAAU,GAAAk1B,gBAAA51B,CAAkC,OAAAU,GAAAk1B,iBAAAl1B,GAAAC,OAAAD,GAAAwjB,QAAAyC,GAAlC3mB,CAAkC,OAAAU,GAAAk1B,iBAAAl1B,GAAAC,OAAAD,GAAAwjB,QAAAC,GAAlCnkB,CAAkC,YAAAU,GAAAm1B,eAIlC71B,MAAA,UAAAU,GAAAo1B,iBACH91B,MAAA,GAAAA,MAAA,IAAAU,GAAAq1B,SAAA,iDAGF/1B,MAAA,WAOEA,MAAA,EAAAg2B,EAAA,qBAEFh2B,+BAPKA,MAAA,WAAAkpB,GAAA+M,mBAAAj2B,CAAqC,OAAAkpB,GAAA+M,oBAAA/M,GAAAvoB,OAAAuoB,GAAAhF,QAAAyC,GAArC3mB,CAAqC,OAAAkpB,GAAA+M,oBAAA/M,GAAAvoB,OAAAuoB,GAAAhF,QAAAC,IAGrCnkB,MAAA,UAAAkpB,GAAAgN,oBAEUl2B,MAAA,GAAAA,MAAA,mBAAAkpB,GAAAiN,oBAAA70B,8KCpDR,IAAM80B,EAAmB,MAA1B,MAAOA,EAEXhtB,YAAmB9H,IAAA+H,KAAA/H,YADV+H,KAAAgtB,MAAO,CACgC,mDAFrCD,GAAmBp2B,aAAA,oCAAnBo2B,EAAmB9sB,UAAA,gCAAA8d,OAAA,CAAAiP,KAAA,kBAAnBD,CAAmB,KAYnBE,EAAkB,MAAzB,MAAOA,UAA0BC,IAgCrC,iBACW1zB,CAAc2zB,IACvBntB,KAAKotB,gBAAkBD,GAKvBtoB,WAAW,IAAM7E,KAAKqL,GAAGtG,gBAC3B,CAEA,iBAAWvL,GACT,OAAOwG,KAAKotB,eACd,CAIA,SAAoBvkB,CAAMA,IACxB7I,KAAKqtB,QAAUxkB,EACjB,CACA,SAAWA,GACT,OAAOM,OAAOnJ,KAAKqtB,QACrB,CAOA,WAAoB3vB,CAAQyvB,IAC1BntB,KAAKstB,UAAYH,GAKjBntB,KAAKqL,GAAGtG,eACV,CACA,WAAWrH,GACT,OAAOsC,KAAKstB,SACd,CAIAvtB,YAAgCyjB,GAA4CnY,IAC1EkiB,MAAM/J,GAAWnY,IADyDrL,KAAAqL,MAzE5DrL,KAAA6a,QAAUA,KAElB7a,KAAAotB,iBAAkB,EAUjBptB,KAAAwtB,cAAe,EACfxtB,KAAAusB,iBAAkB,EAOlBvsB,KAAA4sB,oBAAqB,EAKd5sB,KAAAytB,WAAY,EAoBnBztB,KAAA0tB,gBAAiB,EAShB1tB,KAAAstB,WAAY,CAqBtB,CAEA5R,WACM1b,KAAK6d,QAAU7d,KAAKpH,IACtBkN,QAAQC,MAAM,gDAElB,CAMA4nB,aAAa3sB,IACXA,GAAMgJ,kBAENhK,KAAKtC,QAAWsD,GAAMsF,OAA4B5I,QAE9CsC,KAAK2O,UACP3O,KAAK2O,SAAS3O,KAAKtC,SAGrBsC,KAAKU,OAAOO,KAAKjB,KAAKtC,QACxB,CAEAkR,WAAWC,IACT7O,KAAKstB,YAAoBze,GACzB7O,KAAKqL,GAAGkB,cACV,mDAvGW0gB,GAAiBt2B,MAAAqd,KAAA,IAAArd,YAAA,uCAAjBs2B,EAAiBhtB,UAAA,oCAAAsB,eAAA,SAAAC,GAAAC,GAAAC,OAAA,EAAAF,aAwEdurB,EAAmB,EAAwBA,kpCD5F3Dp2B,MAAA,WAwBEA,MAAA,+DAGAA,MAAA,aAKOA,MAAA,kBAAAG,GAAA,OAAU2K,GAAAksB,aAAA72B,EAAoB,GALrCH,QASAA,MAAA,KAEAA,MAAA,6DAGFA,QAEAA,MAAA,EAAAi3B,EAAA,cAUAj3B,MAAA,EAAAk3B,EAAA,qBApDKl3B,MAAA,UAAAA,MAAA,GAAA8pB,EAAAhf,GAAAqsB,QAAArsB,GAAAnK,OAAAmK,GAAAoZ,QAAAyC,GAAA7b,GAAAnK,OAAAmK,GAAAoZ,QAAAC,IAAAnkB,CAIE,YAAA8K,GAAAssB,UAJFp3B,CAIE,YAAA8K,GAAAgsB,UAJF92B,CAIE,QAAA8K,GAAAoc,MAJFlnB,CAIE,gBAAA8K,GAAAusB,cAJFr3B,CAIE,SAAA8K,GAAAisB,eAJF/2B,CAIE,eAAA8K,GAAAwsB,aAJFt3B,CAIE,KAAA8K,GAAA7I,GAJFjC,CAIE,kBAJFA,CAIE,WAAA8K,GAAA+qB,cAJF71B,CAIE,OAAA8K,GAAAqY,KAJFnjB,CAIE,gBAAA8K,GAAAysB,cAJFv3B,CAIE,eAAA8K,GAAA0sB,aAJFx3B,CAIE,gBAAA8K,GAAA2sB,cAJFz3B,CAIE,WAAA8K,GAAA4sB,sBAAA5sB,GAAA6sB,iBAJF33B,CAIE,eAAA8K,GAAA8sB,aAJF53B,CAIE,sBAAA8K,GAAA+sB,qBAsBE73B,MAAA,GAAAA,MAAA,KAAA8K,GAAA7I,GAAAjC,CAAS,WAAA8K,GAAA+qB,cAAT71B,CAAS,UAAA8K,GAAA/D,QAAT/G,CAAS,WAAA8K,GAAAgtB,SAAT93B,CAAS,gBAAA8K,GAAAjI,eAgBZ7C,MAAA,GAAAA,MAAA,OAAA8K,GAAAirB,WAAAjrB,GAAA+rB,cAUA72B,MAAA,GAAAA,MAAA,OAAA8K,GAAAqrB,sBAAArrB,GAAAqrB,oBAAAE,oECjCOC,CAAkB,+GCPxB,IAAM5lB,EAAc,MAArB,MAAOA,EACXtH,cACE,iDAFSsH,EAAc,oCAAdA,GAAc,uCAJfF,KAAcsO,KAAawM,KAAkByM,MAAe,SAI3DrnB,CAAc,gHCbfsnB,EAAZ,SAAYA,GACVA,WAAAC,MAAA,WACAD,IAAAE,IAAA,SACAF,IAAAG,KAAA,UAHUH,CAIZ,CAJA,CAAYA,GAAY,ICAlB,SAAUI,EAAkBC,GAChC,OAAO,IAAIC,UAASA,MAAOC,aAAYD,MAAOE,UAAYH,GAC5D,8IC0EMr4B,MAAA,mBACYA,MAAA,yBAAAy4B,GAAAz4B,MAAA4mB,GAAArkB,UAAA4jB,GAAAnmB,QAAA,OAASA,MAAAmmB,GAAAuS,aAAAD,IAAoB,GAIvCz4B,MAAA,GACFA,+CAHYA,MAAA,YAAAA,CAAe,OAAAgmB,GAAA9B,QAAAyC,IAEzB3mB,MAAA,GAAAA,MAAA,IAAAy4B,EAAAz1B,MAAA,+CASNhD,MAAA,aAKMA,MAAA,8BAAA24B,GAAA34B,MAAAqmB,GAAA9jB,UAAA+jB,GAAAtmB,QAAA,OAAAA,MAAAsmB,GAAAsS,YAAAD,GAAA,EAAA34B,CAAiC,wBAAAA,MAAAqmB,GAAA,MAAA/f,GAAAtG,QAAA,OAAAA,MAAAsG,GAAAsyB,YACL,KAAI,GACpC54B,MAAA,GACFA,4DANMA,MAAA,UAAA64B,GAAA74B,CAAyB,QAAAK,GAAAy4B,QAAAH,GAAzB34B,CAAyB,QAAAK,GAAA04B,SAAAJ,IADzB34B,MAAA,YAAA24B,EAAAK,KAMJh5B,MAAA,GAAAA,MAAA,IAAA24B,EAAAK,IAAA,4ICpFG,IAAMC,EAAwB,MAA/B,MAAOA,EAJb7vB,cAKkBC,KAAA2kB,UAA+B,eAI/B3kB,KAAA1I,KAA0D,KAC1D0I,KAAA6vB,KAAOC,IAAWC,WAClB/vB,KAAAqe,UAAY,OAEZre,KAAAgwB,QAAyB,CACvC,CACEr2B,MAAO,QACPs2B,MAAO,IAAIhB,KACXiB,IAAK,IAAIjB,MAEX,CACEt1B,MAAO,YACPs2B,MAAOlB,GAAkB,GACzBmB,IAAK,IAAIjB,MAEX,CACEt1B,MAAO,aACPs2B,MF9BG,IAAIhB,UAASA,MAAOkB,cAAalB,MAAOmB,WAAa,IE+BxDF,IAAK,IAAIjB,OAIIjvB,KAAAqwB,cAAgB,IAAI5vB,MAI9BT,KAAAuvB,YAA8B,KAE9BvvB,KAAA2uB,aAAeA,EACf3uB,KAAA6a,QAAUA,KACV7a,KAAAswB,aAAe3B,EAAaG,KAI5B9uB,KAAAuwB,4BAA6B,EAW7BvwB,KAAAwwB,iBAAmB,CACxB53B,GAAI,CACF63B,cAAe,iBACfC,aAAc,gBACdC,eAAgB,mBAChBC,aAAc,iBACdC,kBAAmB,sBACnBC,gBAAiB,sBAhBrB,SAAWC,GACT,OAAO,IAAI9B,IACb,CAEA,iBAAW+B,GACT,MAAMC,EAAO,IAAIhC,UAASA,MAAOiC,WACjC,OAAO,IAAIjC,KAAKgC,EAAK/B,QAAQ,GAC/B,CAaAxT,WACE1b,KAAKmxB,UACP,CAEO9B,aAAa+B,GAClBpxB,KAAKiwB,MAAQmB,EAAOnB,OAASjwB,KAAKmvB,QAAQiC,EAAOnB,OACjDjwB,KAAKkwB,IAAMkB,EAAOlB,KAAOlwB,KAAKmvB,QAAQiC,EAAOlB,KAE7ClwB,KAAKqxB,WACP,CAEOC,QAAQtwB,EAAOuwB,IAAkB,GACtC,MAAMjrB,GAAStF,EAAMsF,OAErB,GAAItF,EAAMuP,MAAQihB,IAAaC,MAC/B,IAAIzxB,KAAK0xB,cAAcprB,GAAOuC,OAE5B,YADAvC,GAAOuC,MAAQ,MAIjB7I,KAAK2xB,cAAc3wB,EAAOuwB,IAEtBvxB,KAAKiwB,OAASjwB,KAAKkwB,IACrBlwB,KAAKyN,SAASC,QAEd1N,KAAK4xB,cAGPtrB,GAAOoK,MAAI,CACb,CAEQghB,cAAcT,GACpB,OAAOY,MAAM,IAAI5C,KAAKgC,GACxB,CAEOU,cAAc3wB,EAAO8wB,IAAU,GACpC,MAAMjpB,GAAQ7H,EAAMsF,OAAOuC,OAAS,KAEpC,GAAI7I,KAAK0xB,cAAc7oB,IAErB,YADA7H,EAAMsF,OAAOuC,MAAQ,MAIvB,MAAMkpB,GAAU,IAAI9C,KAAKpmB,KAAQqoB,aAAeY,GAAU9xB,KAAKiwB,MAAQjwB,KAAKkwB,MAAMgB,UAElF,GAAIlxB,KAAKuwB,4BAA8BwB,GACrC,OAGF/xB,KAAKgyB,SAASnpB,GAAOipB,IAErB9xB,KAAKqxB,YAEL,MAAMY,GAAOjyB,KAAKkyB,WAAW,IAAIjD,KAAKpmB,KAElCA,KAAU7I,KAAKmyB,aAAaF,GAAMjyB,KAAKoyB,eACzCpyB,KAAKqyB,gBAAgBJ,IAGvBjyB,KAAKuwB,4BAA6B,CACpC,CAEOd,QAAQwB,GACb,SAAeA,GAAMqB,OAAOtyB,KAAKkyB,WAAWlyB,KAAKiwB,UAAWgB,GAAMqB,OAAOtyB,KAAKkyB,WAAWlyB,KAAKkwB,MAChG,CAEOR,SAASuB,GACd,QAAKjxB,KAAKiwB,OAKRgB,EAAKsB,MAAMvyB,KAAKkyB,WAAWlyB,KAAKiwB,UAAagB,EAAKuB,OAAOxyB,KAAKuvB,eAAiBvvB,KAAKkwB,KAAQe,EAAKuB,OAAOxyB,KAAKkyB,WAAWlyB,KAAKkwB,MAEjI,CAEOuC,SAASxB,GACdjxB,KAAKiwB,MAAQgB,EAAKtrB,MAAQ3F,KAAKmvB,QAAQ8B,EAAKtrB,MAC5C3F,KAAKkwB,IAAMe,EAAKyB,IAAM1yB,KAAKmvB,QAAQ8B,EAAKyB,IAExC1yB,KAAKuwB,4BAA6B,EAClCvwB,KAAKqxB,WACP,CAEOA,YACLrxB,KAAKqwB,cAAcpvB,KAAK,CACtBgvB,MAAOjwB,KAAKiwB,OAAS,KACrBC,IAAKlwB,KAAKkwB,KAAO,MAErB,CAEQiC,aAAaQ,EAAoBC,IACvC,OAAOD,EAAUE,OAASD,GAAWC,MAAQF,EAAUG,QAAUF,GAAWE,KAC9E,CAEQ3B,WACNnxB,KAAKoyB,aAAepyB,KAAKkyB,WAAWlyB,KAAKgxB,cAC3C,CAEQY,cACN5xB,KAAKswB,aAAetwB,KAAKswB,eAAiB3B,EAAaC,MAAQD,EAAaE,IAAMF,EAAaC,KACjG,CAEQsD,WAAWjB,GACjB,MAAM8B,GAAe,IAAI9D,KAAKgC,GAE9B,OAAO,IAAI+B,KAAQD,GAAaE,cAAeF,GAAa3C,WAAa,EAAG2C,GAAa5D,UAC3F,CAEQA,QAAQ8B,GACd,OAAOA,aAAgB+B,KACnB,IAAI/D,KAAKgC,EAAK4B,KAAM5B,EAAK6B,MAAQ,EAAG7B,EAAKtB,KACzC,IAAIV,KAAKgC,EAAKgC,cAAehC,EAAKb,WAAYa,EAAK9B,UACzD,CAEQ6C,SAASnpB,EAAaipB,IAC5B,MAAMb,GAAOpoB,EAAQ,IAAIomB,KAAKpmB,GAAS,KAEvCipB,GAAW9xB,KAAKiwB,MAAQgB,GAASjxB,KAAKkwB,IAAMe,GAExCjxB,KAAKiwB,OAASjwB,KAAKkwB,KAAOlwB,KAAKiwB,MAAMiB,UAAYlxB,KAAKkwB,IAAIgB,YAC5DY,GAAW9xB,KAAKkwB,IAAM,KAASlwB,KAAKiwB,MAAQ,KAEhD,CAEQoC,gBAAgBJ,GACtBjyB,KAAKoyB,aAAeH,CACtB,mDA5LWrC,EAAwB,oCAAxBA,EAAwB3vB,UAAA,2BAAAiU,UAAA,SAAA1S,GAAAC,OAAA,EAAAD,aA6BW0xB,05CD1ChDv8B,MAAA,YAAAA,CAI6B,uBAGVA,MAAA,yBAAAA,MAAAw8B,IAAA,MAAA3oB,GAAA7T,MAAA,UAAeA,MAAA6T,GAAAnE,SAAiB,GAa/C1P,MAAA,mBAaWA,MAAA,2BAAA8K,GAAA8uB,4BAAuC,CAAK,EAA5C55B,CAA6C,gBAAAG,IAAA,OACrC2K,GAAAkwB,cAAA76B,GAAqB,EAD7BH,CAA6C,iBAAAG,IAAA,OAEpC2K,GAAA6vB,QAAAx6B,GAAe,EAFxBH,CAA6C,mBAAAA,aAAAw8B,IAAAx8B,MAAA,GAGpC4tB,OACT5tB,MAAA8K,GAAA6uB,aAAA7uB,GAAAktB,aAAAC,MAAiC,mBAC5Cj4B,QAEAA,MAAA,mBAaWA,MAAA,2BAAA8K,GAAA8uB,4BAAuC,CAAK,EAA5C55B,CAA6C,gBAAAG,IAAA,OACrC2K,GAAAkwB,cAAA76B,IAAsB,EAAM,EADpCH,CAA6C,iBAAAG,IAAA,OAEpC2K,GAAA6vB,QAAAx6B,IAAgB,EAAM,EAF/BH,CAA6C,mBAAAA,aAAAw8B,IAAAx8B,MAAA,GAGpC4tB,OACT5tB,MAAA8K,GAAA6uB,aAAA7uB,GAAAktB,aAAAE,IAA+B,mBAAEl4B,UAG9CA,MAAA,YAAAA,CAE0E,WAF1EA,CAE0E,wBAUtDA,MAAA,uBAAAG,IAAA,OAAe2K,GAAAgxB,SAAA37B,GAAgB,GAAEH,UAGnDA,MAAA,aACEA,MAAA,GAAAy8B,GAAA,qBAOFz8B,YAIJA,MAAA,GAAA08B,GAAA,0BAAA18B,mCArFKA,MAAA,YAAA8K,GAAA4c,UAAA1nB,CAAuB,YAAA8K,GAAAkjB,WAMThuB,MAAA,GAAAA,MAAA,WAAA8K,GAAAjJ,SAAA7B,CAAqB,OAAA8K,GAAAnK,KAArBX,CAAqB,gBAAAA,MAAA,GAAA0T,GAAA1T,MAAA,GAAA8pB,GAAAhf,GAAAjJ,SAAAiJ,GAAAnK,QAkBzBX,MAAA,GAAAA,MAAA,WAAA8K,GAAAjJ,SAAA7B,CAAqB,cAAA8K,GAAAouB,KAArBl5B,CAAqB,KAAA8K,GAAA+uB,iBAAA53B,GAAA+3B,eAArBh6B,CAAqB,YAAA8K,GAAA6uB,eAAA7uB,GAAAktB,aAAAC,MAArBj4B,CAAqB,qBAArBA,CAAqB,UAAAA,MAAA,KAAA8K,GAAAwuB,MAAAxuB,GAAAouB,MAArBl5B,CAAqB,OAAA8K,GAAAnK,MAoBrBX,MAAA,GAAAA,MAAA,WAAA8K,GAAAjJ,SAAA7B,CAAqB,cAAA8K,GAAAouB,KAArBl5B,CAAqB,KAAA8K,GAAA+uB,iBAAA53B,GAAAg4B,aAArBj6B,CAAqB,YAAA8K,GAAA6uB,eAAA7uB,GAAAktB,aAAAE,IAArBl4B,CAAqB,qBAArBA,CAAqB,UAAAA,MAAA,KAAA8K,GAAAyuB,IAAAzuB,GAAAouB,MAArBl5B,CAAqB,OAAA8K,GAAAnK,MAmBdX,MAAA,GAAAA,MAAA,WAAA8K,GAAAjJ,SAAA7B,CAAqB,WAArBA,CAAqB,cAAAgnB,GAArBhnB,CAAqB,gBAArBA,CAAqB,uBAArBA,CAAqB,YAAA8K,GAAA2wB,aAArBz7B,CAAqB,KAAA8K,GAAA+uB,iBAAA53B,GAAAi4B,mBAaNl6B,MAAA,GAAAA,MAAA,UAAA8K,GAAAuuB,gHCjExBJ,CAAwB,4JCa9B,IAAM0D,EAAqB,MAA5B,MAAOA,oDAAqB,oCAArBA,GAAqB,uCAb9BC,KACA9d,KACAtO,KACAunB,IACAhZ,IACA8d,IACAC,IACAC,IACAne,OAAiB,SAKR+d,CAAqB,gPCzBtBK,EAAZ,SAAYA,IACVA,UAAAhE,IAAA,MACAgE,GAAAb,MAAA,QACAa,GAAAd,KAAA,OAHUc,EAIZ,CAJA,CAAYA,GAAkB,mJCC5Bh9B,MAAA,wBAaEA,MAAA,+DAEAA,MAAA,6DAEFA,iCAhBiBA,MAAA,QAAAwT,GAAA0T,MAAAlnB,CAAe,YAAAwT,GAAAsjB,UAAf92B,CAAe,KAAAwT,GAAAvR,GAAfjC,CAAe,WAAAwT,GAAAqiB,cAAf71B,CAAe,OAAAwT,GAAA2P,KAAfnjB,CAAe,YAAAwT,GAAA4jB,UAAfp3B,CAAe,gBAAAwT,GAAA+jB,cAAfv3B,CAAe,eAAAwT,GAAAgkB,aAAfx3B,CAAe,gBAAAwT,GAAAikB,cAAfz3B,CAAe,WAAAwT,GAAAkkB,sBAAAlkB,GAAAmkB,iBAAf33B,CAAe,eAAAwT,GAAAokB,aAAf53B,CAAe,sBAAAwT,GAAAqkB,kEAmB9B73B,MAAA,6BAMsBA,MAAA,wBAAAA,MAAAi9B,IAAA,MAAAv7B,GAAA1B,MAAA,UAAcA,MAAA0B,GAAAw7B,oBAAmB,EAAjCl9B,CAAkC,uBAAAG,IAAAH,MAAAi9B,IAAA,MAAAv5B,GAAA1D,MAAA,UACnBA,MAAA0D,GAAAy5B,mBAAA7yB,KAAAnK,IAA+B,GACpEH,mCANsBA,MAAA,WAAAsG,GAAAuvB,cAAA71B,CAA0B,eAAAsG,GAAA82B,QAA1Bp9B,CAA0B,OAAAsG,GAAA+2B,eAA1Br9B,CAA0B,OAAAsG,GAAA3F,+BA4D5CX,MAAA,+BADFA,MAAA,GACEA,MAAA,EAAAs9B,EAAA,uBACFt9B,2CADiBA,MAAA,GAAAA,MAAA,mBAAAu9B,qHApDnBv9B,MAAA,cAAAA,CAO6B,cAapBA,MAAA,iBAAAG,IAAAH,MAAAw9B,IAAA,MAAAC,GAAAz9B,MAAA,UAASA,MAAAy9B,GAAAtU,YAAAhpB,IAAmB,EAA5BH,CAA6B,gBAAAG,IAAAH,MAAAw9B,IAAA,MAAAE,GAAA19B,MAAA,UACrBA,MAAA09B,GAAAC,WAAAx9B,IAAkB,EAD1BH,CAA6B,iBAAAG,IAAAH,MAAAw9B,IAAA,MAAAI,GAAA59B,MAAA,UAEpBA,MAAA49B,GAAAC,YAAA19B,IAAmB,EAF5BH,CAA6B,kBAAAG,IAAAH,MAAAw9B,IAAA,MAAAv6B,GAAAjD,MAAA,UAGnBA,MAAAiD,GAAA+zB,aAAA72B,IAAoB,EAH9BH,CAA6B,kBAAAG,IAAAH,MAAAw9B,IAAA,MAAAh7B,GAAAxC,MAAA,UAInBA,MAAAwC,GAAAs7B,SAAA39B,IAAgB,EAJ1BH,CAA6B,sBAAAG,IAAAH,MAAAw9B,IAAA,MAAAO,GAAA/9B,MAAA,UAKfA,MAAA+9B,GAAA/G,aAAA72B,IAAoB,GAjBzCH,QAoBAA,MAAA,cAAAA,CAE4C,0BAG1BA,MAAA,yBAAAG,IAAAH,MAAAw9B,IAAA,MAAAQ,GAAAh+B,MAAA,UAAAA,MAAAg+B,GAAA1D,KAAAn6B,GAAA,EAAAH,CAAkB,kBAAAG,IAAAH,MAAAw9B,IAAA,MAAAS,GAAAj+B,MAAA,UACRA,MAAAi+B,GAAAjmB,SAAA7X,IAAgB,EAD1BH,CAAkB,oBAAAG,IAAAH,MAAAw9B,IAAA,MAAAU,GAAAl+B,MAAA,UAMNA,MAAAk+B,GAAAC,WAAAh+B,IAAkB,GAS9CH,UAGFA,MAAA,EAAAo+B,EAAA,sBAGFp+B,2DApDKA,MAAA,UAAAA,MAAA,GAAAie,EAAAtV,GAAAhI,KAAA,uBAAAgI,GAAAhI,KAAA,IAAAX,CAAwD,YAAA2I,GAAAqlB,UAAxDhuB,CAAwD,YAAA2I,GAAAoY,WAOpD/gB,MAAA,GAAAA,MAAA,UAAAA,MAAA,GAAAke,GAAAvV,GAAAhI,KAAA,gBAAAgI,GAAAhI,KAAA,GAAAgI,GAAA01B,YAAA11B,GAAA21B,YAAA,IAAAt+B,CAAkF,OAAA2I,GAAA41B,KAAlFv+B,CAAkF,WAAA2I,GAAAmvB,SAAlF93B,CAAkF,KAAA2I,GAAA1G,GAAlFjC,CAAkF,WAAA2I,GAAAktB,cAAlF71B,CAAkF,QAAA2I,GAAA2xB,KAAlFt6B,CAAkF,qBAAlFA,CAAkF,cAAA2I,GAAAiM,YAAlF5U,CAAkF,WAAA2I,GAAA61B,eAIlFx+B,MAAA,mBAAA2I,GAAA1G,GAAAjC,CAA4B,kBAAA2I,GAAAue,OAoBjBlnB,MAAA,GAAAA,MAAA,UAAA2I,GAAA2xB,KAAAt6B,CAAkB,iBAAA2I,GAAA81B,eAAlBz+B,CAAkB,cAAAgnB,GAAlBhnB,CAAkB,gBAAA2I,GAAA+1B,cAAlB1+B,CAAkB,iBAAAI,GAAlBJ,CAAkB,eAAA2I,GAAAg2B,aAAlB3+B,CAAkB,UAAA2I,GAAAi2B,YAAAC,UAAAl2B,GAAAm2B,SAAlB9+B,CAAkB,UAAA2I,GAAAi2B,YAAAC,UAAAl2B,GAAAo2B,SAAlB/+B,CAAkB,aAAA2I,GAAAq2B,WAAlBh/B,CAAkB,cAAA2I,GAAAs2B,YAAlBj/B,CAAkB,WAAA2I,GAAAu2B,aAAlBl/B,CAAkB,kBAAA2I,GAAAw2B,gBAAlBn/B,CAAkB,YAAA2I,GAAAy2B,WAkBrBp/B,MAAA,GAAAA,MAAA,OAAA2I,GAAA0W,uDA+CPrf,MAAA,GACEA,MAAA,eAKQA,MAAA,yBAAAq/B,GAAAr/B,MAAAs/B,IAAA/8B,UAAAg9B,GAAAv/B,MAAA,UAASA,MAAAu/B,GAAAC,kBAAAH,IAAwB,GACvCr/B,MAAA,GACAA,MAAA,6BAEFA,QACFA,mDARUA,MAAA,GAAAA,MAAA,WAAAy/B,GAAAC,aAAAL,IAAAr/B,CAAsC,YAAAy/B,GAAAE,gBAAAN,IAAtCr/B,CAAsC,YAAAy/B,GAAAG,gBAAAP,KAI5Cr/B,MAAA,GAAAA,MAAA,IAAAy/B,GAAAI,KAAAC,kBAAAT,GAAAlD,OAAA,KACsBn8B,MAAA,GAAAA,MAAA,QAAAq/B,kCAT5Br/B,MAAA,YACEA,MAAA,EAAA+/B,GAAA,wCAYF//B,iCAZkCA,MAAA,GAAAA,MAAA,UAAAA,MAAA,IAAAggC,GAAAC,WAAAC,2CAkBtClgC,MAAA,gCADFA,MAAA,GACEA,MAAA,EAAAmgC,GAAA,uBACFngC,2CADiBA,MAAA,GAAAA,MAAA,mBAAAu9B,kDA5DnBv9B,MAAA,cAAAA,CAO6B,cAcpBA,MAAA,iBAAAG,IAAAH,MAAAogC,IAAA,MAAAC,GAAArgC,MAAA,UAASA,MAAAqgC,GAAAlX,YAAAhpB,IAAmB,EAA5BH,CAA6B,gBAAAG,IAAAH,MAAAogC,IAAA,MAAAE,GAAAtgC,MAAA,UACrBA,MAAAsgC,GAAA3C,WAAAx9B,IAAkB,EAD1BH,CAA6B,iBAAAG,IAAAH,MAAAogC,IAAA,MAAAG,GAAAvgC,MAAA,UAEpBA,MAAAugC,GAAA1C,YAAA19B,IAAmB,EAF5BH,CAA6B,kBAAAG,IAAAH,MAAAogC,IAAA,MAAAh8B,GAAApE,MAAA,UAGnBA,MAAAoE,GAAA4yB,aAAA72B,IAAoB,GAhBrCH,QAkBAA,MAAA,cAAAA,CAE4C,0BAG1BA,MAAA,yBAAAG,IAAAH,MAAAogC,IAAA,MAAAI,GAAAxgC,MAAA,UAAAA,MAAAwgC,GAAAlG,KAAAn6B,GAAA,EAAAH,CAAkB,kBAAAG,IAAAH,MAAAogC,IAAA,MAAAK,GAAAzgC,MAAA,UAORA,MAAAygC,GAAAzoB,SAAA7X,IAAgB,EAP1BH,CAAkB,oBAAAG,IAAAH,MAAAogC,IAAA,MAAAM,GAAA1gC,MAAA,UAQNA,MAAA0gC,GAAAvC,WAAAh+B,IAAkB,GAC5CH,MAAA,EAAA2gC,GAAA,sBAgBF3gC,UAGFA,MAAA,EAAA4gC,GAAA,sBAGF5gC,gDA5DKA,MAAA,UAAAA,MAAA,GAAAie,EAAApZ,GAAAlE,KAAA,uBAAAkE,GAAAlE,KAAA,IAAAX,CAAwD,YAAA6E,GAAAmpB,UAAxDhuB,CAAwD,YAAA6E,GAAAkc,WAOpD/gB,MAAA,GAAAA,MAAA,UAAAA,MAAA,GAAAke,GAAArZ,GAAAlE,KAAA,gBAAAkE,GAAAlE,KAAA,GAAAkE,GAAAw5B,YAAAx5B,GAAAy5B,YAAA,IAAAt+B,CAAmF,OAAA6E,GAAA05B,KAAnFv+B,CAAmF,WAAA6E,GAAAizB,SAAnF93B,CAAmF,KAAA6E,GAAA5C,GAAnFjC,CAAmF,WAAA6E,GAAAgxB,cAAnF71B,CAAmF,QAAA6E,GAAAy1B,KAAnFt6B,CAAmF,WAAA6E,GAAA25B,cAAnFx+B,CAAmF,cAAA6E,GAAA+P,YAAnF5U,CAAmF,sBAInFA,MAAA,mBAAA6E,GAAA5C,GAAAjC,CAA4B,kBAAA6E,GAAAqiB,OAkBjBlnB,MAAA,GAAAA,MAAA,UAAA6E,GAAAy1B,KAAAt6B,CAAkB,mBAAlBA,CAAkB,kBAAlBA,CAAkB,iBAAA4mB,GAAlB5mB,CAAkB,UAAA6E,GAAA+5B,YAAAC,UAAAh6B,GAAAk6B,SAAlB/+B,CAAkB,UAAA6E,GAAA+5B,YAAAC,UAAAh6B,GAAAi6B,SAAlB9+B,CAAkB,YAAA6E,GAAAu6B,WA4BrBp/B,MAAA,GAAAA,MAAA,OAAA6E,GAAAwa,uDAgBjBrf,MAAA,6BAMsBA,MAAA,wBAAAA,MAAA6gC,IAAA,MAAAC,GAAA9gC,MAAA,UAAcA,MAAA8gC,GAAA5D,oBAAmB,EAAjCl9B,CAAkC,uBAAAG,IAAAH,MAAA6gC,IAAA,MAAAE,GAAA/gC,MAAA,UACnBA,MAAA+gC,GAAAC,kBAAA12B,KAAAnK,IAA8B,GACnEH,mCANsBA,MAAA,eAAAihC,GAAAC,OAAAlhC,CAAuB,WAAAihC,GAAApL,cAAvB71B,CAAuB,OAAAihC,GAAAtgC,KAAvBX,CAAuB,OAAAihC,GAAAE,4CAS/CnhC,MAAA,iDAAkBA,MAAA,SAAAkG,GAAAk7B,4HA9KpBphC,MAAA,WAEEA,MAAA,EAAAqhC,GAAA,0BAmBArhC,MAAA,WACEA,MAAA,EAAAshC,EAAA,+BAUAthC,MAAA,EAAAuhC,GAAA,eAwDAvhC,MAAA,EAAAwhC,GAAA,eAgEAxhC,MAAA,6BAQsBA,MAAA,wBAAAA,MAAAyhC,IAAA,MAAAC,GAAA1hC,QAAA,OAAcA,MAAA0hC,GAAAxE,oBAAmB,EAAjCl9B,CAAkC,uBAAAG,IAAAH,MAAAyhC,IAAA,MAAAE,GAAA3hC,QAAA,OACnBA,MAAA2hC,GAAAC,kBAAAzhC,IAAyB,GAC9DH,QACAA,MAAA,EAAA6hC,GAAA,+BASF7hC,QAEAA,MAAA,EAAA8hC,GAAA,2BAEF9hC,kCA9KoBA,MAAA,GAAAA,MAAA,OAAAU,GAAAwmB,OAAAxmB,GAAAuB,IAoBOjC,MAAA,GAAAA,MAAA,OAAAU,GAAA28B,gBAAA38B,GAAA08B,SAUjBp9B,MAAA,GAAAA,MAAA,OAAAU,GAAAqhC,WAAArhC,GAAAs8B,mBAAAb,OAwDAn8B,MAAA,GAAAA,MAAA,OAAAU,GAAAqhC,WAAArhC,GAAAs8B,mBAAAd,MAiEgBl8B,MAAA,GAAAA,MAAA,WAAAU,GAAAm1B,cAAA71B,CAA0B,eAAAU,GAAAwgC,OAA1BlhC,CAA0B,OAAAA,MAAA,GAAAie,EAAAje,MAAA,GAAAoe,KAA1Bpe,CAA0B,OAAAU,GAAAC,MAUzBX,MAAA,GAAAA,MAAA,OAAAU,GAAAygC,eAAAzgC,GAAAwgC,QAYNlhC,MAAA,GAAAA,MAAA,OAAAU,GAAAshC,4DAGrBhiC,MAAA,GACEA,MAAA,0BAKgBA,MAAA,sBAAAG,IAAAH,MAAAiiC,IAAA,MAAAC,GAAAliC,QAAA,OAAcA,MAAAkiC,GAAAlL,aAAA72B,IAAoB,EAAlCH,CAAoC,oBAAAG,IAAAH,MAAAiiC,IAAA,MAAAE,GAAAniC,QAAA,OAIxBA,MAAAmiC,GAAAhE,WAAAh+B,IAAkB,GAS9CH,QACFA,0DAlBkBA,MAAA,GAAAA,MAAA,iBAAAkpB,GAAAuV,eAAAz+B,CAAiC,gBAAAkpB,GAAAwV,cAAjC1+B,CAAiC,KAAAkpB,GAAAjnB,GAAjCjC,CAAiC,cAAAkpB,GAAAkZ,aAAApb,GAAjChnB,CAAiC,UAAAkpB,GAAAoR,KAAjCt6B,CAAiC,iBAAAkpB,GAAAmZ,WAAA,KAAAjiC,GAAjCJ,CAAiC,eAAAkpB,GAAAyV,aAAjC3+B,CAAiC,UAAAkpB,GAAA0V,YAAAC,UAAA3V,GAAA6V,SAAjC/+B,CAAiC,UAAAkpB,GAAA0V,YAAAC,UAAA3V,GAAA4V,SAAjC9+B,CAAiC,aAAAkpB,GAAA8V,WAAjCh/B,CAAiC,cAAAkpB,GAAA+V,YAAjCj/B,CAAiC,kBAAAkpB,GAAAiW,gBAAjCn/B,CAAiC,YAAAkpB,GAAAkW,UAAjCp/B,CAAiC,WAAAkpB,GAAA2M,6DAoBnD71B,MAAA,GACEA,MAAA,0BAKgBA,MAAA,kBAAAG,IAAAH,MAAAsiC,IAAA,MAAAC,GAAAviC,QAAA,OAAUA,MAAAuiC,GAAAvqB,SAAA7X,IAAgB,EAA1BH,CAA2B,sBAAAG,IAAAH,MAAAsiC,IAAA,MAAAE,GAAAxiC,QAAA,OAGbA,MAAAwiC,GAAAC,gBAAAtiC,IAAuB,EAHrCH,CAA2B,oBAAAG,IAAAH,MAAAsiC,IAAA,MAAAj9B,GAAArF,QAAA,OAKfA,MAAAqF,GAAA84B,WAAAh+B,IAAkB,GAU9CH,QACFA,0DApBkBA,MAAA,GAAAA,MAAA,iBAAAoB,GAAAq9B,eAAAz+B,CAAiC,kBAAjCA,CAAiC,KAAAoB,GAAAa,GAAjCjC,CAAiC,cAAAoB,GAAAghC,aAAArgC,GAAjC/B,CAAiC,UAAAoB,GAAAk5B,KAAjCt6B,CAAiC,iBAAAoB,GAAAihC,WAAA,KAAAjiC,GAAjCJ,CAAiC,eAAAoB,GAAAu9B,aAAjC3+B,CAAiC,UAAAoB,GAAAw9B,YAAAC,UAAAz9B,GAAA29B,SAAjC/+B,CAAiC,UAAAoB,GAAAw9B,YAAAC,UAAAz9B,GAAA09B,SAAjC9+B,CAAiC,aAAAoB,GAAA49B,WAAjCh/B,CAAiC,cAAAoB,GAAA69B,YAAjCj/B,CAAiC,eAAAoB,GAAA89B,aAAjCl/B,CAAiC,kBAAAoB,GAAA+9B,gBAAjCn/B,CAAiC,YAAAoB,GAAAg+B,UAAjCp/B,CAAiC,WAAAoB,GAAAy0B,6DAyBjD71B,MAAA,aAIMA,MAAA,8BAAA0iC,GAAA1iC,MAAA0F,IAAAnD,UAAAogC,GAAA3iC,QAAA,OAAAA,MAAA2iC,GAAA/J,YAAA8J,GAAA,EAAA1iC,CAAiC,wBAAAA,MAAA0F,IAAA,MAAAk9B,GAAA5iC,QAAA,OAAAA,MAAA4iC,GAAAhK,YACL,KAAI,GACpC54B,MAAA,GACFA,gEANMA,MAAA,UAAA6iC,GAAA7iC,CAAyB,QAAAgmB,GAAA8S,QAAA4J,IAAzB1iC,CAAyB,QAAAgmB,GAAA8c,UAAAJ,KAAA1c,GAAA+S,SAAA2J,KAK7B1iC,MAAA,GAAAA,MAAA,IAAA0iC,GAAA1J,IAAA,mCAUFh5B,MAAA,aAOEA,MAAA,GACFA,4GAPMA,MAAA,SAAA+iC,GAAA/iC,CAAsB,WAAAgjC,GAAtBhjC,CAAsB,YAAAK,GAAA4iC,WAAAC,IAAtBljC,CAAsB,WAAAkjC,GAAA/G,QAAAgH,GAAtBnjC,CAAsB,YAAAojC,GAAtBpjC,CAAsB,WAAAK,GAAAgjC,UAAAH,KAM1BljC,MAAA,GAAAA,MAAA,IAAAkjC,GAAAlK,IAAA,mDAKFh5B,MAAA,cAAAA,CAAiD,mBAInCA,MAAA,mBAAAA,MAAAsjC,IAAA,MAAAn7B,GAAAnI,QAAA,OAASA,MAAAmI,GAAAo7B,iBAAgB,GACnCvjC,MAAA,mBACFA,oCALYA,MAAA,GAAAA,MAAA,YAAAA,CAAe,iBAAfA,CAAe,OAAAmmB,GAAAjC,QAAAE,IAIzBpkB,MAAA,GAAAA,MAAA,eAAAA,MAAA,IAAAmmB,GAAAqd,YAAA,iEAMJxjC,MAAA,cAAAA,CAAiD,mBAInCA,MAAA,mBAAAA,MAAAyjC,IAAA,MAAAC,GAAA1jC,QAAA,OAASA,MAAA0jC,GAAAC,mBAAkB,GACrC3jC,MAAA,mBACFA,oCALYA,MAAA,GAAAA,MAAA,YAAAA,CAAe,iBAAfA,CAAe,OAAAszB,GAAApP,QAAAE,IAIzBpkB,MAAA,GAAAA,MAAA,eAAAA,MAAA,IAAAszB,GAAAkQ,YAAA,8CAMJxjC,MAAA,YACEA,MAAA,aACFA,2GCpOK,IAAM4jC,EAAN,MAAMA,WAA4BrN,IAcvC,QAAoB+D,CAAKpoB,IACvB7I,KAAKw6B,UAAU7oB,KAAK9I,GACtB,CAKA,QAAWooB,GACT,OAAOjxB,KAAKqtB,OACd,CAEA,eAAW4H,GACT,MAAMwF,GAA8BzrB,OAAOkK,OAA8C,GAAIlZ,KAAK06B,cAClG,OAAO1rB,OAAOia,QAAQwR,IACnB35B,OAAO,EAAEqO,GAAGnG,QAASA,IACrBkG,IAAI,EAAEC,MAAOA,IACbwrB,OAAO,CAAC36B,KAAK46B,YACbD,OAAO,CAAC36B,KAAKye,gBACbzY,KAAK,IACV,CA+JQ60B,8BAA8B5J,GAAe6J,IACnD,OAAO,IAAI7L,KAAKjvB,KAAKu1B,YAAYwF,QAAQ9J,IAAM+J,SAASF,GAAKG,MAAOH,GAAKI,IAAKJ,GAAKK,IAAKL,GAAKM,IAC/F,CAmEA,oBAAIC,GACF,OAAOr7B,KAAKs7B,cAAc7tB,QAC5B,CAEA1N,YACUpK,GACY6tB,GACVnY,GACHmrB,IAEPjJ,MAAM/J,GAAWnY,IALTrL,KAAArK,YAEEqK,KAAAqL,MACHrL,KAAAw2B,QA5QOx2B,KAAA2zB,mBAAqBA,EACrB3zB,KAAA6a,QAAUA,KACV7a,KAAAu1B,YAAc,IAAIgG,KAClBv7B,KAAAw6B,UAAY,IAAIgB,IAChBx7B,KAAAm6B,YAAc,IAAIlL,KAC3BjvB,KAAA42B,WAAyC,IAAIjrB,IAA2B,IAGxE3L,KAAAuvB,YAA8B,KASrBvvB,KAAAye,cAAgB,GAiBhBze,KAAAg1B,aAAc,EAMbh1B,KAAAy7B,WAAa3L,KAAWC,WAgBzB/vB,KAAAq1B,cAAgB,EAMhBr1B,KAAA+4B,YAAc,GAMd/4B,KAAAo1B,eAAiB,EAOjBp1B,KAAAg5B,YAAa,EAqBbh5B,KAAA21B,WAA2C,SAS3C31B,KAAA41B,YAAkD,UAKlD51B,KAAA61B,cAAe,EAKf71B,KAAA81B,iBAAkB,EAiBlB91B,KAAA2kB,UAA+B,OAU/B3kB,KAAA0X,UAA4C,UAY5C1X,KAAA24B,cAAe,EAKf34B,KAAAgW,SAAU,EAUVhW,KAAAs1B,aAAqF,CAACrE,GAAMyK,KACtGzK,GAAK6B,QAAU4I,GAAQ5I,UAGvB9yB,KAAKy1B,SAAWz1B,KAAK66B,8BAA8B5J,GAAM,CAAEgK,MAAO,GAAIC,IAAK,GAAIC,IAAK,GAAIC,GAAI,MAASp7B,KAAKy1B,SAG1Gz1B,KAAK01B,SAAW11B,KAAK66B,8BAA8B5J,GAAM,CAAEgK,MAAO,EAAGC,IAAK,EAAGC,IAAK,EAAGC,GAAI,IAAOp7B,KAAK01B,SA2BlG11B,KAAA04B,SAA+B/E,EAAmBb,MAElD9yB,KAAA27B,gBAAiB,EAKV37B,KAAAytB,WAAY,EAMlBztB,KAAAU,OAAS,IAAID,MAMbT,KAAA47B,YAAc,IAAIn7B,MAOlBT,KAAAkR,SAAW,IAAIzQ,MAKfT,KAAA67B,OAAS,IAAIp7B,MAKbT,KAAA8zB,mBAAqB,IAAIrzB,MAKzBT,KAAA23B,kBAAoB,IAAIl3B,MASxBT,KAAA87B,YAAc,IAAIr7B,KAkB5B,CAEAib,WACM1b,KAAK6d,QAAU7d,KAAKpH,IACtBkN,QAAQC,MAAM,0CAEZ/F,KAAK04B,WAAa/E,EAAmBd,OACvC7yB,KAAKy7B,WAAa3L,KAAWiM,cACzBn7B,SAAMZ,KAAK+1B,aACb/1B,KAAK+1B,UAAY,CAAElD,UAAU5D,MAAOgE,cAAeH,MAAO,IAGhE,CAEAnyB,kBACEX,KAAK42B,WAAWjlB,KAAK3R,KAAKg8B,WAAW7O,MAAM8O,QAE3Cj8B,KAAKw6B,UAAU/1B,QAAKC,KAAe1E,OAAO2E,UAAWkE,KACnDqzB,eAAe,IAAMl8B,KAAKm8B,cAActzB,IAAM,GAGhD7I,KAAK4O,WAAW5O,KAAKixB,MACrBjxB,KAAKqL,GAAGtG,eACV,CAEAm1B,iBACEl6B,KAAKixB,KAAOjxB,KAAKm6B,YACjBn6B,KAAKo8B,WAAWp8B,KAAKm6B,YACvB,CAEAG,mBACEt6B,KAAKixB,KAAOjxB,KAAKm6B,YACjBn6B,KAAKg8B,WAAWI,WAAW,CAAEvJ,KAAM7yB,KAAKm6B,YAAYlH,cAAeH,MAAO9yB,KAAKm6B,YAAY/J,WAAa,GAC1G,CAEA+L,cAActzB,IACZ7I,KAAKqtB,QAAUrtB,KAAKq8B,YAAYxzB,IAChC7I,KAAKs8B,cAAc1vB,cAAc/D,MAAQ7I,KAAKqtB,QAC9CrtB,KAAKu8B,aAAev8B,KAAKu1B,YAAYC,UAAU,IAAIvG,KAAKpmB,KACpD7I,KAAK2O,UACP3O,KAAK2O,SAAS9F,IAEhB7I,KAAKqL,GAAGkB,eACRvM,KAAKU,OAAOO,KAAK4H,GACnB,CAEAyrB,WAAWtzB,IACTusB,MAAM+G,WAAWtzB,IACjBhB,KAAKixB,KAAO,IAAIhC,KAAKjuB,GAAMsF,OAAOuC,MACpC,CAEAiX,YAAY9e,KACNhB,KAAK04B,WAAa/E,EAAmBb,OAAS9yB,KAAK04B,WAAa/E,EAAmBd,SACpF7yB,KAAKq7B,iBAAiBmB,UAAYx8B,KAAKq7B,iBAAiB9W,OACzDvkB,KAAKixB,MAAQjxB,KAAKo8B,WAAWp8B,KAAKixB,MAClCiL,eAAe,MACb94B,QAAKpD,KAAKs8B,eAAelsB,OAAK,GAGpC,CAEAmoB,kBAAkBv3B,IACZhB,KAAK04B,WAAa/E,EAAmBd,KACvC7yB,KAAKy8B,WAAWp2B,UAEhBrG,KAAKq7B,iBAAiBh1B,SAClBrG,KAAKq7B,iBAAiBmB,UAAYx8B,KAAKixB,MACzCjxB,KAAKo8B,WAAWp8B,KAAKixB,MAG3B,CAEAkF,kBAAkBlF,IAChB,MAAMyL,GAAgB,IAAIzN,KAAKjvB,KAAK28B,cAAe1L,GAAK6B,MAAQ,GAC1D8J,GAAU,IAAI5J,KAAQ0J,GAAczJ,cAAeyJ,GAActM,WAAY,GACnFpwB,KAAKixB,KAAOyL,GACZ18B,KAAKg8B,WAAWI,WAAWQ,GAC7B,CAEA/I,oBACM7zB,KAAK04B,WAAa/E,EAAmBd,KACvC7yB,KAAKq7B,iBAAiB3tB,QAEtB1N,KAAKy8B,WAAW/uB,OAEpB,CAEAW,cACErO,KAAKg8B,YAAY3tB,aACnB,CAEAO,WAAWqiB,IACJA,KACLjxB,KAAKu8B,aAAev8B,KAAKu1B,YAAYC,UAAU,IAAIvG,KAAKgC,KACxD1D,MAAM3e,WAAW5O,KAAKq8B,YAAYpL,KACpC,CAQQoL,YAAYpL,IAClB,OAAKA,IAAgB,gBAARA,IAEC,EAEP4L,MAAW,IAAI5N,KAAKgC,IAAOjxB,KAAKy7B,WAAY,SAH7Cz7B,KAAK27B,kBAAuBkB,MAAW78B,KAAKm6B,YAAan6B,KAAKy7B,WAAY,SAClE,IAGhB,CASAW,WAAWnL,IACTjxB,KAAKg8B,WAAWI,WAAWp8B,KAAKu1B,YAAYC,UAAU,IAAIvG,KAAKgC,KACjE,CAOA+I,UAAU/I,IACR,OAAOjxB,KAAKrK,SAASmnC,WAAW7L,KAAS,CAC3C,CAQA2I,WAAW3I,IACT,OACEjxB,KAAKu8B,cACLtL,GAAKtB,MAAQ3vB,KAAKu8B,aAAa5M,KAC/BsB,GAAK6B,QAAU9yB,KAAKu8B,aAAazJ,OACjC7B,GAAK4B,OAAS7yB,KAAKu8B,aAAa1J,IAEpC,CAEAwD,aAAapF,IACX,OAAOA,GAAK6B,MAAQ,IAAM9yB,KAAKm6B,aAAa/J,YAAcpwB,KAAK28B,gBAAkB38B,KAAKm6B,aAAalH,aACrG,CAEAqD,gBAAgBrF,IACd,OAAOA,GAAK6B,QAAU9yB,KAAKu8B,cAAczJ,OAAS9yB,KAAK28B,gBAAkB38B,KAAKu8B,cAAc1J,IAC9F,CAEA0D,gBAAgBtF,IACd,OAAQjxB,KAAKs2B,gBAAgBrF,KAASjxB,KAAK+8B,mBAAqB/8B,KAAK+8B,kBAAkB,CAAElK,KAAM7yB,KAAK28B,cAAe7J,MAAO7B,GAAK6B,OACjI,CAMAnF,aAAa3sB,IAEThB,KAAKixB,KADHjwB,cAAiBg8B,MACP,IAAI/N,KAAKjuB,GAAMsF,OAAOuC,OAEtB,IAAIomB,KAAKjuB,GAAM6xB,KAAM7xB,GAAM8xB,MAAQ,EAAG9xB,GAAM2uB,IAE5D,CAMAmF,WAAW9zB,IACThB,KAAK28B,cAAgB37B,GAAM2Q,KAAKkhB,KAChC7yB,KAAKkR,SAASjQ,KAAKD,GACrB,CAMAyzB,SAASzzB,IACPhB,KAAK67B,OAAO56B,KAAKD,GACnB,CAEAo4B,gBAAgBnI,IACd,MAAMgM,GAAahM,GACdjxB,KAAKqtB,SAAYrtB,KAAKk9B,OAGzBl9B,KAAKqtB,UACJrtB,KAAKk9B,SACLjM,GAAKqB,OAAOtyB,KAAKqtB,UAAkC4D,GAAKsB,MAAMvyB,KAAKqtB,UAEpErtB,KAAKk9B,OAASD,IAEdj9B,KAAKk9B,OAAS,KACdl9B,KAAKqtB,QAAU4P,IATfj9B,KAAKqtB,QAAU4P,GAYjBj9B,KAAK47B,YAAY36B,KAAK,CAAE0E,KAAM3F,KAAKqtB,QAASqF,GAAI1yB,KAAKk9B,QACvD,CAEAzD,UAAUxI,IACR,OACEjxB,KAAKqtB,UAAYrtB,KAAKk9B,QAAUl9B,KAAKuvB,aAAe0B,GAAKsB,MAAMvyB,KAAKqtB,UAAkC4D,GAAKuB,OAAOxyB,KAAKuvB,YAE3H,CAEAG,SAASuB,IACP,OAAOjxB,KAAKk9B,QAAUjM,GAAKsB,MAAMvyB,KAAKqtB,UAAkC4D,GAAKuB,OAAOxyB,KAAKk9B,OAC3F,CAEAzN,QAAQwB,IACN,OACEA,GAAKqB,OAAOtyB,KAAKqtB,UAChBrtB,KAAKk9B,QAAUjM,GAAKqB,OAAOtyB,KAAKk9B,SACjCl9B,KAAK0vB,SAASuB,KACdjxB,KAAKy5B,UAAUxI,GAEnB,mDA9eWsJ,IAAmB5jC,MAAAqd,MAAArd,MAAAwlB,KAAA,IAAAxlB,mBAAAqd,MAAA,oCAAnBumB,GAAmBt6B,UAAA,wCAAAiU,UAAA,SAAA1S,GAAAC,OAAA,EAAAD,eAgQgB0xB,gBACI/e,gBACFgpB,gBACAn2B,42IDtTlDrQ,MAAA,EAAAymC,GAAA,cAkLAzmC,MAAA,EAAA0mC,GAAA,uBAsBA1mC,MAAA,EAAA2mC,GAAA,uBAwBA3mC,MAAA,EAAA4mC,GAAA,yBAAA5mC,OAaAA,MAAA,EAAA6mC,GAAA,0BAAA7mC,OAiBAA,MAAA,EAAA8mC,GAAA,yBAAA9mC,OAWAA,MAAA,EAAA+mC,GAAA,yBAAA/mC,OAWAA,MAAA,GAAAgnC,GAAA,yBAAAhnC,eAnRMA,MAAA,QAAA8K,GAAAm8B,QAAAn8B,GAAAqQ,OAiLSnb,MAAA,GAAAA,MAAA,OAAA8K,GAAAm8B,OAsBAjnC,MAAA,GAAAA,MAAA,OAAA8K,GAAAqQ,yJCrJFyoB,KAAmBx4B,MAAA,IAb/BC,QAAY,EACbkT,EAAAhT,IAAA,qBAsRsB27B,KACaC,KACjB/2B,MACDg3B,QA7QJxD,oICpCN,IAAM7G,EAAgB,MAAvB,MAAOA,EACX3zB,cACE,iDAFS2zB,EAAgB,oCAAhBA,GAAgB,wCAFhB,CAAC,CAAE9oB,QAASozB,KAAgBC,SAAU1C,OAAuB2C,QAAA,CAH9D/2B,KAAcsO,KAAa0oB,IAAqBzP,IAAiB0P,KAAa7oB,KAAmBG,MAAY,SAK5Gge,CAAgB,gHCDtB,IAAM2K,EAAc,MAArB,MAAOA,oDAAc,oCAAdA,GAAc,uCAJf9K,KAAqB9d,KAAatO,KAAc8a,KAAkByM,MAAe,SAIhF2P,CAAc,2TCNpB,IAAMC,EAAyB,MAAhC,MAAOA,WAAiCC,KAD9Cx+B,kCAEWC,KAAAw+B,UAAY,IAErBC,MAAM51B,IACJ,GAAIA,GAAO,CACT,MAAOiqB,GAAOnD,GAAKkD,IAAQ,IAAI5D,KAAKpmB,IAAO61B,mBAAmB,SAAS31B,MAAM/I,KAAKw+B,WAClF,MAAO,CACL1L,MAAO6L,SAAS7L,GAAO,IACvBnD,IAAKgP,SAAShP,GAAK,IACnBkD,KAAM8L,SAAS9L,GAAM,KAGzB,OAAO,IACT,CAEA+L,OAAO3N,IACL,OAAOA,GAAO,MAAG4N,MAAI5N,GAAK6B,UAAU9yB,KAAKw+B,cAAS,EAAIK,MAAI5N,GAAKtB,QAAQ3vB,KAAKw+B,aAAavN,GAAK4B,OAAS,EACzG,kFAjBWyL,MAAwB/1B,IAAxB+1B,GAAwB,yCAAxBA,GAAwBnkB,QAAxBmkB,GAAwBlkB,WAAA,SAAxBkkB,EAAyB,2NCA/B,IAAMQ,GAAqB,MAA5B,MAAOA,WAA6BC,KACxCvJ,UAAU3sB,IACR,IAAKA,GACH,OAAO,KAGT,GAAoB,iBAATA,GAAmB,CAC5B,MAAME,GAAQF,GAAME,MAAM,KAC1B,MAAO,CACLi2B,KAAML,SAAS51B,GAAM,GAAI,IACzBk2B,OAAQN,SAAS51B,GAAM,GAAI,IAC3Bm2B,OAAQn2B,GAAM,GAAK41B,SAAS51B,GAAM,GAAI,IAAM,MAG9C,OAAOF,EAEX,CAEAkyB,QAAQD,IACN,OAAe,MAARA,GAAe,MAAG+D,MAAI/D,GAAKkE,UAAK,EAAIH,MAAI/D,GAAKmE,YAAO,EAAIJ,MAAI/D,GAAKoE,UAAY,IACtF,kFApBWJ,MAAoBv2B,IAApBu2B,GAAoB,yCAApBA,GAAoB3kB,QAApB2kB,GAAoB1kB,WAAA,SAApB0kB,EAAqB,8FCO3B,IAAMK,GAAe,MAAtB,MAAOA,wDAAe,oCAAfA,IAAe,uCAJhBh4B,KAAcunB,KAAiB6E,MAAqB6L,KAAW1pB,MAAcnO,MAAmBgO,OAAiB,SAIhH4pB,EAAe,8BCXrB,SAASE,GAAcC,IAC1B,OAAOA,GAAEvyB,QAAQ,QAAS,+BAC9B,CAIO,SAASwyB,GAAQD,GAAG5rB,GAAS,GAEhC,OADgB4rB,GAAEv2B,MAAM,IAEnBmG,IAAI,CAACswB,GAAGpb,QAAMqb,YAAQ,qDAAsDD,GAAGpb,GAAI1Q,GAAQ2rB,GAAcG,MAEzGx5B,KAAK,GACd,CACA,SAAS05B,GAAwBC,IAC7B,OAAOA,GAAM5yB,QAAQ,QAAS,+BAClC,CAIO,SAAS6yB,GAAkBC,IAE9B,OADeA,GAAQ92B,MAAM,KACfmG,IAAK4wB,IAAMJ,GAAwBI,KAAI95B,KAAK,IAC9D,CAKO,SAAS+5B,GAAYC,GAAetsB,GAAS,GAEhD,OADessB,GAAcj3B,MAAM,KACrBmG,IAAI,CAAC4wB,GAAG1b,KACd,WAAW6b,KAAKH,IACTA,MAEJL,YAAQ,+CAAgDrb,GAAI1Q,GAAQgsB,GAAwBI,KAE3G,yEClCO,IAAMI,EAAkB,MAAzB,MAAOA,EACXngC,YAAoBogC,GAAAngC,KAAAmgC,OAAiC,CAErDx/B,kBACE,MAAMmpB,EAAQ9pB,KAAKmgC,MAAMvzB,cAAcvJ,cAAc,SAEjDymB,GAEFjlB,WAAW,IAAMilB,EAAM1Z,QAE3B,iDAVW8vB,GAAkBvpC,aAAA,oCAAlBupC,EAAkBjgC,UAAA,mCAAlBigC,CAAkB,oECAxB,IAAME,EAAc,MAArB,MAAOA,EAGXrgC,YAAoB6D,GAAA5D,KAAA4D,IAAiB,CAErCqb,cACMjf,KAAKqgC,WACPnE,eAAe,IAAMl8B,KAAK4D,GAAGgJ,cAActH,iBAAiB,cAAc,GAAG8K,QAEjF,iDATWgwB,GAAczpC,aAAA,oCAAdypC,EAAcngC,UAAA,qBAAA8d,OAAA,CAAAsiB,UAAA,aAAAxc,SAAA,CAAAltB,QAAA,SAAdypC,CAAc,oECApB,IAAME,EAAyB,MAAhC,MAAOA,EAIX,UAAYviB,GACV,OAAO/d,KAAKmgC,MAAMvzB,cAActH,iBAAiB,aACnD,CAEAvF,YAAoBogC,GAAAngC,KAAAmgC,QAPHngC,KAAAugC,QAAU,IAAI9/B,MACdT,KAAAwgC,OAAS,IAAI//B,KAMuB,CAErDE,kBACEu7B,eAAe,KACbl8B,KAAKygC,cAAY,EAErB,CAEQjM,cACNx0B,KAAKugC,QAAQt/B,MACf,CAEQy/B,aACN1gC,KAAKwgC,OAAOv/B,MACd,CAEQw/B,eACNzgC,KAAK+d,OAAOzc,QAAQwoB,IAClBA,EAAM6W,iBAAiB,QAAS,IAAM3gC,KAAKw0B,eAC3C1K,EAAM6W,iBAAiB,OAAQ,IAAM3gC,KAAK0gC,aAAY,EAE1D,CAEQE,kBACN5gC,KAAK+d,OAAOzc,QAAQwoB,IAClBA,EAAM+W,oBAAoB,QAAS,IAAM7gC,KAAKw0B,eAC9C1K,EAAM+W,oBAAoB,OAAQ,IAAM7gC,KAAK0gC,aAAY,EAE7D,CAEAryB,cACErO,KAAK4gC,iBACP,iDAxCWN,GAAyB3pC,aAAA,oCAAzB2pC,EAAyBrgC,UAAA,gCAAAge,QAAA,CAAAsiB,QAAA,UAAAC,OAAA,oBAAzBF,CAAyB,oECA/B,IAAMQ,EAAoB,MAA3B,MAAOA,EACX/gC,cAAe,iDADJ+gC,EAAoB,oCAApBA,EAAoB7gC,UAAA,qCAApB6gC,CAAoB,sLC2B1B,IAAMpS,EAAe,MAAtB,MAAOA,sDAAe,oCAAfA,GAAe,uCAJhBvnB,KAAc8a,OAAgB,SAI7ByM,CAAe,iJClBrB,IAAexB,EAAS,MAAzB,MAAgBA,EAGpB,SAAoBrkB,CAAMA,GACxB7I,KAAKqtB,QAAUxkB,EAEX7I,KAAK2O,UACP3O,KAAK2O,SAAS3O,KAAK6I,OAErB7I,KAAKqL,GAAGkB,eACRvM,KAAKU,OAAOO,KAAK4H,EACnB,CACA,SAAWA,GACT,OAAO7I,KAAKqtB,OACd,CA6CA,iBAAIb,GACF,QAAQ,EAAC5rB,SAAMZ,KAAKxH,YAA+B,IAAlBwH,KAAKxH,YAAwB,EAACoI,SAAMZ,KAAK+gC,gBAAuC,IAAtB/gC,KAAK+gC,YAClG,CAMA,iBAAW5L,GACT,QAAO,EAACv0B,SAAMZ,KAAKghC,YAA+B,IAAlBhhC,KAAKghC,QACvC,CAUA,UAAWjJ,GACT,OAAK/3B,KAAKwjB,UAAUuU,QAAU/3B,KAAKwjB,UAAUyd,UAAajhC,KAAKwjB,UAAUG,SAAW3jB,KAAKwjB,UAAUG,QAAQud,MAClG,GAGFlhC,KAAKmhC,UAAUnhC,KAAKwjB,UAAUuU,OACvC,CAsCA,aAAW6C,GACT,OAAO56B,KAAK1I,KAAO,gBAAkB0I,KAAK1I,KAAO,EACnD,CAaA,gBAAWojC,GACT,MAAO,CACL,iBAAgB16B,KAAKwjB,UAAUG,SAAU3jB,KAAKwjB,UAAU4d,UACxD,eAAcphC,KAAKwjB,UAAUG,SAAU3jB,KAAKwjB,UAAU6d,QACtD,gBAAerhC,KAAKwjB,UAAUG,SAAU3jB,KAAKwjB,UAAUG,QAAQsd,SAC/D,aAAYjhC,KAAKwjB,UAAUG,SAAU3jB,KAAKwjB,UAAUG,QAAQ2d,MAC5D,aAAYthC,KAAKwjB,UAAUG,SAAU3jB,KAAKwjB,UAAUG,QAAQud,MAC5D,gBACElhC,KAAKwjB,UAAUG,UAAW,EAAC/iB,SAAMZ,KAAKwjB,UAAUG,QAAQ4d,WAAavhC,KAAKwjB,UAAUG,QAAQ6d,kBACxFxhC,KAAKwjB,UAAUG,QAAQhB,QAE7B,eAAc3iB,KAAKwjB,UAAUG,SAAU3jB,KAAKwjB,UAAUG,QAAQ8d,QAElE,CAiBA,wBAAWpT,GACT,GAAIruB,KAAKwjB,UAAUG,SAAW3jB,KAAKwjB,UAAUG,QAAQ4d,UAAW,CAC9D,MAAMG,EAAa1hC,KAAKwjB,UAAUG,QAAQ4d,UAAU,IAAII,MACxD,SAAeD,IAAcA,EAAWE,UAG1C,OAAO,CACT,CAMA7hC,YAAgCyjB,EAAgCnY,GAAArL,KAAAqL,KAnLtDrL,KAAAqtB,QAAa,GAiBPrtB,KAAApH,GAAa,SAAW8P,KAAKm5B,SAASrwB,SAAS,IAAI/I,UAAU,GAI7DzI,KAAAuL,YAAc,GAIdvL,KAAA8hC,WAAY,EAsBZ9hC,KAAAyuB,SAAW,EAKXzuB,KAAA+gC,cAAe,EAyCf/gC,KAAAkuB,cAAgB,OAKhBluB,KAAAmuB,aAAe,cAOfnuB,KAAA+hC,aAA8C,KAI9C/hC,KAAAyhB,cAAe,EAKfzhB,KAAA1I,KAAwE,KAYxE0I,KAAAsuB,kBAAmB,EAK1BtuB,KAAAgiC,cAAe,EA4CdhiC,KAAAU,OAAS,IAAID,MACbT,KAAA0Q,KAAO,IAAIjQ,MACXT,KAAAoQ,MAAQ,IAAI3P,MAIpBT,KAAKwjB,UAAYA,GAAc,GAC3BA,IACFxjB,KAAKwjB,UAAUye,cAAgBjiC,KAEnC,CAKA4O,WAAWC,GACT7O,KAAKqtB,QAAUxe,EACf7O,KAAKqL,GAAGkB,cACV,CACA6C,iBAAiBC,GACfrP,KAAK2O,SAAWU,CAClB,CACAC,kBAAkBD,GAChBrP,KAAKuP,UAAYF,CACnB,CACA6yB,iBAAkBC,GAChBniC,KAAKxH,SAAW2pC,EAChBniC,KAAKqL,GAAGkB,cACV,CAEA+nB,WAAWtzB,GACLhB,KAAKwb,MAAWxb,KAAK6I,OAAS7I,KAAK6I,MAAM2S,OAE3Cxb,KAAKqtB,QAAWrtB,KAAK6I,MAAc2S,OAC/Bxb,KAAKwjB,WAAaxjB,KAAKwjB,UAAUG,SACnC3jB,KAAKwjB,UAAUG,QAAQqO,SAAShyB,KAAKqtB,UAKrCrtB,KAAKuP,WACPvP,KAAKuP,YAGPvP,KAAK0Q,KAAKzP,KAAKD,EACjB,CAEAwzB,YAAYxzB,GACNhB,KAAKuP,WACPvP,KAAKuP,YAEPvP,KAAKoQ,MAAMnP,KAAKD,EAClB,CAEOmgC,UAAUpJ,GACf,OAAKA,EAEE/oB,OAAOia,QAAQ8O,GACnB7oB,IAAI,EAAEqB,EAAK1H,KAAWmG,OAAOkK,OAAO,GAAI,CAAE3I,OAAO1H,IACjDqG,IAAKkzB,IACJ,IAAKA,EAAGC,QAAS,CACf,MAAMC,EAAeC,KAAcC,kBAAkBJ,EAAG7xB,KACxD6xB,EAAGC,QAAUC,EAAeA,EAAaF,QAAMv2B,EAEjD,OAAOu2B,IAERthC,OAAQshC,GAAOA,EAAGC,SAXD,EAYtB,iDApPoBnV,GAASv2B,MAAAqd,KAAA,IAAArd,aAAA,oCAATu2B,EAAS3rB,eAAA,SAAAC,EAAAC,EAAAC,MAAA,EAAAF,YA4JfihC,IAAqB,EAAUtrB,eAC/B2pB,IAAoB,EAAU3pB,eAE9BurB,IAAmB,WACnBC,IAAoB,61BAhKdzV,CAAS,oECTxB,IAAMyV,EAAoB,MAA3B,MAAOA,EACX5iC,YAAmB6iC,GAAA5iC,KAAA4iC,aAAgC,iDADxCD,GAAoBhsC,aAAA,oCAApBgsC,EAAoB1iC,UAAA,qCAApB0iC,CAAoB,yHCG7BhsC,MAAA,WAEEA,MAAA,GACFA,kCADEA,MAAA,GAAAA,MAAA,IAAAksC,EAAAR,QAAA,+BAJJ1rC,MAAA,GAEEA,MAAA,EAAAmsC,EAAA,aAKFnsC,kDAJyBA,MAAA,GAAAA,MAAA,UAAAosC,EAAApsC,CAAW,eAAAgmB,EAAAqmB,sCAHpCrsC,MAAA,EAAAssC,EAAA,2BAAetsC,MAAA,mBAAA2J,OAAA,4CCIV,IAAM4iC,EAAoB,MAA3B,MAAOA,EAPbnjC,cAQWC,KAAA+3B,OAAyC,GAClD,oBAA6BoL,CAAiBlrC,GAC5C+H,KAAKojC,eAAiBnrC,CACxB,CAGAgnB,YAAYC,GACLA,EAAQ6Y,OAAO3Y,eAClBpf,KAAK+3B,OAAS,GAElB,CAEAiL,eAAex5B,EAAOuK,GACpB,OAAOA,EAAKsuB,OACd,iDAfWa,EAAoB,oCAApBA,EAAoBjjC,UAAA,uBAAAsB,eAAA,SAAAC,EAAAC,EAAAC,MAAA,EAAAF,WAKjB2V,MAAW,EAAUA,oaDfrCxgB,MAAA,EAAA0sC,EAAA,qBAGA1sC,MAAA,EAAA2sC,EAAA,yBAAA3sC,8BAHaA,MAAA,mBAAA8K,EAAA2hC,eAAA3hC,EAAA2hC,eAAA3rC,EAAAd,CAAoE,0BAAAA,MAAA,EAAA0gB,EAAA5V,EAAAs2B,mECUpEmL,CAAoB,oECL1B,IAAMR,EAAmB,MAA1B,MAAOA,EACX3iC,YAAmB6iC,GAAA5iC,KAAA4iC,aAAgC,iDADxCF,GAAmB/rC,aAAA,oCAAnB+rC,EAAmBziC,UAAA,oCAAnByiC,CAAmB,yJCG5B/rC,MAAA,EAAA4sC,EAAA,0FAFF5sC,MAAA,YAEEA,MAAA,EAAA6sC,EAAA,YACF7sC,4CAFMA,MAAA,UAAAU,GAAAosC,0BACU9sC,MAAA,GAAAA,MAAA,mBAAAU,GAAAqsC,SAAArsC,GAAAwmB,OAAAnlB,GAAArB,GAAAwmB,MAAAlnB,CAA0D,0BAAAA,MAAA,EAAA0gB,EAAAhgB,GAAAsjB,oCAG1EhkB,MAAA,YACuBA,MAAA,OAACA,oCACxBA,MAAA,mCAEMA,MAAA,YAAAoB,GAAAm2B,cAAAv3B,CAA2B,WAAAoB,GAAAo2B,aAA3Bx3B,CAA2B,YAAAoB,GAAAq2B,cAA3Bz3B,CAA2B,aAAAoB,GAAA+hB,kCAQjCnjB,MAAA,0BAAAA,MAAA,IAAAgmB,GAAAkB,OAAA,8HCbK,IAAM8lB,EAAmB,MAA1B,MAAOA,GAJb5jC,cA4CkBC,KAAAkuB,cAAgB,OAehBluB,KAAAmuB,aAAe,cAWfnuB,KAAA4hC,UAAW,EAsBnB5hC,KAAA4jC,WAAY,EAKJ5jC,KAAAN,KAAsC,OAG9CM,KAAA6jC,oBAAsB,GAMtB7jC,KAAA8jC,2BAA6B,GAC9B9jC,KAAAyjC,yBAA2B,GA/FlC,WAAW9oB,GACT,OACE3a,KAAKiuB,cAAgB,CACnBr1B,GAAIoH,KAAKpH,GACTilB,MAAO7d,KAAK6d,MACZ/D,KAAM9Z,KAAK8Z,KACXoU,cAAeluB,KAAKkuB,cACpBC,aAAcnuB,KAAKmuB,aACnBC,cAAepuB,KAAKouB,cACpBwT,SAAU5hC,KAAK4hC,SACfppC,SAAUwH,KAAKxH,SACfkH,KAAMM,KAAKN,KACX6uB,aAAcvuB,KAAKuuB,aACnBmV,SAAU1jC,KAAK0jC,SAASK,KAAK/jC,MAGnC,CAyDA,YACWxH,CAASqQ,IAClB7I,KAAK4jC,UAAY/6B,EACnB,CACA,YAAWrQ,GACT,OAAOwH,KAAK4jC,SACd,CAEA,iBAAIpX,GACF,QAAO,EAAC5rB,SAAMZ,KAAK4jC,aAAiC,IAAnB5jC,KAAK4jC,SACxC,CAcAloB,WACO1b,KAAKguB,gBACRhuB,KAAKguB,cAA8B,SAAdhuB,KAAKN,KAAkB,MAAQ,SAEtDM,KAAK6jC,oBAAsB,OAAO7jC,KAAKN,aACvCM,KAAK8jC,2BAA6B,OAAO9jC,KAAKN,qBAC9CM,KAAKgkC,kBAAoBhkC,KAAKikC,kBAAkBjkC,KAAKuuB,aAAcvuB,KAAK6jC,qBACpE7jC,KAAKwsB,gBACPxsB,KAAKgkC,mBAAqB,cAExBhkC,KAAKkkC,QAAwB,SAAdlkC,KAAKN,OAA2C,QAAvBM,KAAKguB,eAAkD,WAAvBhuB,KAAKguB,iBAC/EhuB,KAAKgkC,mBAAqB,YAEV,SAAdhkC,KAAKN,OAAoBM,KAAK6d,QAChC7d,KAAKgkC,mBAAqB,aAExBhkC,KAAK+tB,YACP/tB,KAAKgkC,mBAAqB,KAAKhkC,KAAK+tB,aAEtC/tB,KAAKgkC,mBAAqB,KAAOhkC,KAAKguB,cACtChuB,KAAKyjC,yBACHzjC,KAAKikC,kBAAkBjkC,KAAKwuB,oBAAqBxuB,KAAK8jC,4BAA8B,IAAM9jC,KAAKmkC,cACnG,CAEAllB,YAAYC,KACNA,GAAQsP,qBAAuBtP,GAAQ6O,aACzC/tB,KAAKyjC,yBACHzjC,KAAKikC,kBAAkBjkC,KAAKwuB,oBAAqBxuB,KAAK8jC,4BAA8B,IAAM9jC,KAAKmkC,iBAE/FjlB,GAAQqP,cAAgBrP,GAAQ1mB,UAAY0mB,GAAQrB,OAASqB,GAAQ6O,aACvE/tB,KAAKgkC,kBAAoBhkC,KAAKikC,kBAAkBjkC,KAAKuuB,aAAcvuB,KAAK6jC,qBACpE7jC,KAAKwsB,gBACPxsB,KAAKgkC,mBAAqB,cAEV,SAAdhkC,KAAKN,MAAmBwf,GAAQrB,QAAUqB,GAAQrB,MAAMuB,eAC1Dpf,KAAKgkC,mBAAqB,aAExBhkC,KAAK+tB,YACP/tB,KAAKgkC,mBAAqB,KAAKhkC,KAAK+tB,aAG1C,CAEO2V,SAASU,IACd,SAAOxjC,SAAMwjC,KAA6B,iBAAXA,EACjC,CAEAH,kBAAkB1oB,GAAqB8oB,GAAe,IACpD,OCzJE,SAAUC,EAA0B/oB,GAAqB8oB,GAAe,GAAIE,IAAW,GAC3F,MAAI3jC,SAAM2a,MAAagpB,GACrB,OAAOF,GAET,QAAQ,GACN,IAAwB,iBAAZ9oB,GAEV,OAAO8oB,GAAa7yB,WAAa,IAAM+J,GAAQ/J,WAEjD,KAAK9L,MAAM8+B,QAAQjpB,IAEjB,MAAO,CAAC8oB,IAAc1J,OAAOpf,IAA0BvV,KAAK,KAE9D,IAAwB,iBAAZuV,GAEV,GAAIvM,OAAOy1B,UAAUC,eAAeC,KAAKppB,GAAS,OAEhD,MAAO,CAAC8oB,IAAc1J,OAAOj1B,MAAMC,KAAK4V,KAAyBvV,KAAK,KACjE,CAEL,MAAM4+B,GAAgB51B,OAAOia,QAAQ1N,IAClCza,OAAO,EAAEyP,EAAKpE,OAAiBA,GAC/B+C,IAAI,EAAEqB,EAAKpE,KAASoE,GACvB,MAAO,CAAC8zB,IAAc1J,OAAOiK,IAAe5+B,KAAK,MAIvD,MAAO,EACT,CD6HWs+B,CAA0B/oB,GAAS8oB,KAAc,EAACzjC,SAAMZ,KAAK6d,OACtE,CAEAsmB,eACE,OAAOnkC,KAAK+tB,UAAY,QAAU/tB,KAAK+tB,UAAUvc,WAAa,EAChE,mDA9JWmyB,GAAmB,oCAAnBA,GAAmB1jC,UAAA,gDAAA8d,OAAA,CAAAnlB,GAAA,KAAAq1B,aAAA,eAAApQ,MAAA,QAAA/D,KAAA,OAAAoU,cAAA,gBAAAF,cAAA,gBAAAkW,OAAA,SAAA/V,aAAA,eAAAC,cAAA,gBAAAwT,SAAA,WAAA7T,UAAA,YAAAN,UAAA,YAAAj1B,SAAA,WAAAkH,KAAA,OAAA6uB,aAAA,eAAAC,oBAAA,uBAAA3K,SAAA,CAAAltB,OAAAwrB,mBAAA9X,EAAA+J,MAAA,EAAAC,KAAA,EAAAC,OAAA,0cAAArc,SAAA,SAAAuJ,GAAAC,GAAA,EAAAD,cDVhC7K,MAAA,GACAA,MAAA,KACAA,MAAA,aAIEA,MAAA,EAAAkuC,EAAA,cAKAluC,MAAA,EAAAmuC,EAAA,cAEAnuC,MAAA,EAAAouC,EAAA,cAMFpuC,QACAA,MAAA,KAEAA,MAAA,EAAAquC,EAAA,yBAAAruC,eAnBOA,MAAA,GAAAA,MAAA,mBAAA8K,EAAAgsB,WADA92B,MAAA,MAAA8K,EAAA7I,GAAAjC,CAAU,UAAA8K,EAAAuiC,mBAIRrtC,MAAA,GAAAA,MAAA,OAAA8K,EAAAoc,OAMAlnB,MAAA,GAAAA,MAAA,OAAA8K,EAAAmgC,UACAjrC,MAAA,GAAAA,MAAA,OAAA8K,EAAAqY,qECHI6pB,EAAmB,sIEH1BhtC,MAAA,4CACMA,MAAA,UAAAA,MAAA,EAAA0gB,EAAA4tB,EAAA7pB,gDANRzkB,MAAA,cAIQA,MAAA,mBAAAA,MAAAu9B,GAAA,MAAA+Q,GAAAtuC,QAAAuC,UAAAxB,GAAAf,MAAA,UAASA,MAAAe,GAAAokC,YAAA76B,KAAAgkC,IAA4B,GAC3CtuC,MAAA,EAAAuuC,EAAA,cAEAvuC,MAAA,GACFA,qDAPQA,MAAA,OAAAsuC,EAAAE,QAAAF,EAAAE,QAAA,SAAAxuC,CAA2D,UAAAK,EAAAouC,sBAAAH,GAA3DtuC,CAA2D,aAAAsuC,EAAAjvB,eAAAnK,IAAAo5B,EAAAzsC,SAAAysC,EAAAzsC,SAAAxB,EAAAwB,WAI1D7B,MAAA,GAAAA,MAAA,OAAAsuC,EAAA7pB,MAEPzkB,MAAA,GAAAA,MAAA,IAAAsuC,EAAAr1B,KAAA,2BAPFjZ,MAAA,EAAA0uC,EAAA,qBAAS1uC,MAAA,oBAAAq2B,8BADXr2B,MAAA,EAAA2uC,EAAA,0CAAkC3uC,MAAA,UAAAkpB,EAAAhiB,kEAapClH,MAAA,GACEA,MAAA,EAAA4uC,EAAA,qBACA5uC,MAAA,EAAA6uC,EAAA,qBACF7uC,yCAFeA,MAAA,GAAAA,MAAA,mBAAAoB,EAAA0tC,cACA9uC,MAAA,GAAAA,MAAA,mBAAA6T,4BAEf7T,MAAA,qCACcA,MAAA,mBAAAikB,EAAA6qB,aAAA7qB,EAAA6qB,aAAAj7B,ICCP,IAAMk7B,EAAuB,MAA9B,MAAOA,EAIX,kBAA2BC,CAAe1tC,GACxC+H,KAAKylC,aAAextC,CACtB,CAWA8H,YAAmCsnB,EAA4BzjB,EAAqBtB,IAArBtC,KAAA4D,KAN/C5D,KAAA1I,KAAoB,KAE1B0I,KAAA87B,YAAc,IAAIr7B,MAClBT,KAAA4lC,WAAa,IAAInlC,MAIzB6B,GAAU6B,SAASP,EAAGgJ,cAAe,eAAiBya,EACxD,CAEA+d,sBAAsB1vC,GACpB,MAAM4B,EAAO5B,EAAO4B,MAAQ0I,KAAK1I,KACjC,MAAO,CAAC,MAAO,OAAS5B,EAAOgK,MAAQ,EAAIpI,EAAO,OAASA,EAAO,GAAI5B,EAAOsgB,QAAU,WAAa,GAAIhW,KAAKye,eAAiB,GAChI,CAGAonB,iBAAiB7kC,GACVA,GACLhB,KAAK4lC,WAAW3kC,KAAKD,EACvB,iDA9BW0kC,GAAuB/uC,MAiBX,YAAUA,0BAAA,oCAjBtB+uC,EAAuBzlC,UAAA,2BAAAsB,eAAA,SAAAC,EAAAC,GAAAC,OAAA,EAAAF,YAepB2V,MAAW,EAAUA,4IAfxB1V,GAAAokC,iBAAA/uC,GAAwB,KAAAH,6eDpBrCA,MAAA,EAAAmvC,EAAA,yBAAAnvC,OAcAA,MAAA,EAAAovC,EAAA,sBAIApvC,MAAA,EAAAqvC,EAAA,6BAJervC,MAAA,GAAAA,MAAA,OAAA8K,GAAAgkC,cAAAhkC,GAAA5D,MAIAlH,MAAA,GAAAA,MAAA,OAAA8K,GAAAgkC,eAAAhkC,GAAA5D,OAAA4D,GAAAgkC,cAAAhkC,GAAA5D,qECEF6nC,CAAuB,oECf7B,IAAMjD,EAAqB,MAA5B,MAAOA,EACX1iC,YAAmB6iC,GAAA5iC,KAAA4iC,aAAgC,iDADxCH,GAAqB9rC,aAAA,oCAArB8rC,EAAqBxiC,UAAA,sCAArBwiC,CAAqB,wLCAhC9rC,MAAA,uBAEEA,MAAA,+DAEAA,MAAA,6DAEFA,+BALiBA,MAAA,QAAAU,GAAAwmB,kDAOflnB,MAAA,4BAGsBA,MAAA,uBAAAG,IAAAH,MAAAgnB,IAAA,MAAAhB,EAAAhmB,QAAA,OAAeA,MAAAgmB,EAAAmf,YAAA76B,KAAAnK,IAAwB,GAC7DH,iCAFsBA,MAAA,OAAAkpB,GAAAmU,wCAOpBr9B,MAAA,WAEEA,MAAA,aACFA,mDAEFA,MAAA,6BAIsBA,MAAA,uBAAAG,IAAAH,MAAAI,IAAA,MAAAC,EAAAL,QAAA,OAAeA,MAAAK,EAAA8kC,YAAA76B,KAAAnK,IAAwB,GAC7DH,iCAHsBA,MAAA,OAAAikB,GAAAkd,cAAAnhC,CAAsB,gBAAAikB,GAAAtjB,MAAA,OAAAsjB,GAAAtjB,KAAA,0KCrBzC,IAAM2uC,EAAmB,MAA1B,MAAOA,EAJblmC,cAKWC,KAAAxH,UAAW,EACXwH,KAAAgW,SAAU,EAIVhW,KAAA1I,KAA0D,KAEzD0I,KAAA87B,YAAc,IAAIr7B,MAyBrBT,KAAAkmC,SAAU,EApBjB,aAAItL,GACF,OAAO56B,KAAK1I,KAAO,gBAAkB0I,KAAK1I,KAAO,EACnD,CAEA,kBAAI6uC,GACF,OAAOnmC,KAAK1I,KAAO,uBAAyB0I,KAAK1I,KAAO,EAC1D,CAEA,WAAIikB,GACF,MAAM6qB,GAAuC,CAAEh2B,MAAOpQ,KAAKkmC,QAAS1tC,SAAUwH,KAAKxH,UAEnF,OAAIwH,KAAK1I,OACP8uC,GAAS,gBAAkBpmC,KAAK1I,OAAQ,EACxC8uC,GAAS,WAAY,EACrBA,GAAS,uBAAwB,GAG5BA,EACT,mDA/BWH,EAAmB,oCAAnBA,EAAmBhmC,UAAA,sBAAAsB,eAAA,SAAAC,GAAAC,GAAAC,MAAA,EAAAF,o7BDRhC7K,MAAA,WAEKA,MAAA,2BAAA8K,GAAAykC,SAAoB,CAAK,EAAzBvvC,CAA0B,4BAAA8K,GAAAykC,SACL,CAAI,GAE5BvvC,MAAA,EAAA0vC,EAAA,yBAOA1vC,MAAA,WACEA,MAAA,EAAA2vC,EAAA,8BAKA3vC,MAAA,WACEA,MAAA,GACAA,MAAA,UAAMA,MAAA,OAACA,QACPA,MAAA,KACAA,MAAA,EAAA4vC,EAAA,aAIF5vC,QACAA,MAAA,GAAA6vC,EAAA,8BAMF7vC,kBA7BGA,MAAA,UAAA8K,GAAA8Z,SACe5kB,MAAA,GAAAA,MAAA,OAAA8K,GAAAoc,OAQOlnB,MAAA,GAAAA,MAAA,OAAA8K,GAAAuyB,gBAK4Dr9B,MAAA,GAAAA,MAAA,UAAA8K,GAAA0kC,gBAK3ExvC,MAAA,GAAAA,MAAA,OAAA8K,GAAAuU,SAIerf,MAAA,GAAAA,MAAA,OAAA8K,GAAAq2B,gFCnBdmO,CAAmB,2HCKzB,IAAMxS,EAAgB,MAAvB,MAAOA,oDAAgB,oCAAhBA,GAAgB,uCAJjBF,KAAqB9d,KAAatO,KAAcunB,IAAiBhZ,IAAc8d,MAAW,SAIzFC,CAAgB,qRCX3B98B,MAAA,uBAcEA,MAAA,+DAGAA,MAAA,6DAGFA,gCAnBiBA,MAAA,QAAAU,GAAAwmB,MAAAlnB,CAAe,KAAAU,GAAAuB,GAAfjC,CAAe,WAAAU,GAAAm1B,cAAf71B,CAAe,OAAAU,GAAAyiB,KAAfnjB,CAAe,YAAAU,GAAAo2B,UAAf92B,CAAe,YAAAU,GAAA02B,UAAfp3B,CAAe,gBAAAU,GAAA62B,cAAfv3B,CAAe,eAAAU,GAAA82B,aAAfx3B,CAAe,gBAAAU,GAAA+2B,cAAfz3B,CAAe,WAAAU,GAAAg3B,sBAAAh3B,GAAAi3B,mBAAAj3B,GAAAovC,gBAAf9vC,CAAe,eAAAU,GAAAk3B,aAAf53B,CAAe,sBAAAU,GAAAm3B,mEAuB9B73B,MAAA,6BAMsBA,MAAA,uBAAAG,IAAAH,MAAAihB,IAAA,MAAAlgB,GAAAf,QAAA,OAAeA,MAAAe,GAAAokC,YAAA76B,KAAAnK,IAAwB,GAC7DH,kCALsBA,MAAA,WAAAkpB,GAAA2M,cAAA71B,CAA0B,eAAAkpB,GAAAkU,QAA1Bp9B,CAA0B,OAAAkpB,GAAAmU,eAA1Br9B,CAA0B,OAAAkpB,GAAAvoB,oDAY5CX,MAAA,iBAsBOA,MAAA,gBAAAG,IAAAH,MAAA+vC,IAAA,MAAA9O,GAAAjhC,MAAA,UAAQA,MAAAihC,GAAAtD,WAAAx9B,IAAkB,EAA1BH,CAA2B,iBAAAG,IAAAH,MAAA+vC,IAAA,MAAAruC,GAAA1B,MAAA,UAClBA,MAAA0B,GAAAm8B,YAAA19B,IAAmB,EAD5BH,CAA2B,iBAAAG,IAAAH,MAAA+vC,IAAA,MAAA5tC,GAAAnC,MAAA,UAElBA,MAAAmC,GAAA60B,aAAA72B,GAAAwP,OAAAuC,OAAiC,GAxBjDlS,gDAIOA,MAAA,eAAAoT,GAAAkX,aAAAtqB,CAA6B,YAAAoT,GAAA4a,UAA7BhuB,CAA6B,YAAAoT,GAAAsU,UAA7B1nB,CAA6B,aAAAI,GAA7BJ,CAA6B,YAAAoT,GAAA2N,UAA7B/gB,CAA6B,YAAAoT,GAAA48B,UAA7BhwC,CAA6B,YAAAoT,GAAA68B,UAA7BjwC,CAA6B,OAAAoT,GAAAmrB,KAA7Bv+B,CAA6B,OAAAoT,GAAArK,KAA7B/I,CAA6B,WAAAoT,GAAA0kB,SAA7B93B,CAA6B,cAAAoT,GAAAwB,YAA7B5U,CAA6B,UAAAoT,GAAAkrB,YAA7Bt+B,CAA6B,KAAAoT,GAAAnR,GAA7BjC,CAA6B,WAAAoT,GAAAyiB,cAA7B71B,CAA6B,QAAAoT,GAAAlB,MAA7BlS,CAA6B,eAAAoT,GAAAg4B,aAA7BprC,CAA6B,QAAAoT,GAAA88B,UAA7BlwC,CAA6B,SAAAoT,GAAA+8B,OAA7BnwC,CAA6B,eAAAoT,GAAAg9B,aAA7BpwC,CAA6B,WAAAoT,GAAAorB,eAU7Bx+B,MAAA,mBAAAoT,GAAAnR,GAAAjC,CAA4B,kBAAAoT,GAAA8T,qDAiBjClnB,MAAA,cAgBOA,MAAA,gBAAAG,IAAAH,MAAAqwC,IAAA,MAAA3sC,GAAA1D,MAAA,UAAQA,MAAA0D,GAAAi6B,WAAAx9B,IAAkB,EAA1BH,CAA2B,iBAAAG,IAAAH,MAAAqwC,IAAA,MAAArsC,GAAAhE,MAAA,UAClBA,MAAAgE,GAAA65B,YAAA19B,IAAmB,EAD5BH,CAA2B,iBAAAG,IAAAH,MAAAqwC,IAAA,MAAAC,GAAAtwC,MAAA,UAElBA,MAAAswC,GAAAtZ,aAAA72B,GAAAwP,OAAAuC,OAAiC,EAF1ClS,CAA2B,sBAAAG,IAAAH,MAAAqwC,IAAA,MAAAE,GAAAvwC,MAAA,UAGbA,MAAAuwC,GAAAC,4BAAArwC,IAAmC,GAnBxDH,mCAEOA,MAAA,YAAAwT,GAAAwa,UAAAhuB,CAAuB,YAAAwT,GAAAw8B,UAAvBhwC,CAAuB,YAAAwT,GAAAy8B,UAAvBjwC,CAAuB,OAAAwT,GAAA+qB,KAAvBv+B,CAAuB,OAAAwT,GAAAzK,KAAvB/I,CAAuB,WAAAwT,GAAAskB,SAAvB93B,CAAuB,cAAAwT,GAAAoB,YAAvB5U,CAAuB,UAAAwT,GAAA8qB,YAAvBt+B,CAAuB,KAAAwT,GAAAvR,GAAvBjC,CAAuB,WAAAwT,GAAAqiB,cAAvB71B,CAAuB,QAAAwT,GAAAtB,MAAvBlS,CAAuB,eAAAwT,GAAA43B,aAAvBprC,CAAuB,QAAAwT,GAAA08B,UAAvBlwC,CAAuB,SAAAwT,GAAA28B,OAAvBnwC,CAAuB,eAAAwT,GAAA48B,aAAvBpwC,CAAuB,WAAAwT,GAAAgrB,cAAvBx+B,CAAuB,eAAAwT,GAAAi9B,WAMvBzwC,MAAA,mBAAAwT,GAAAvR,GAAAjC,CAA4B,kBAAAwT,GAAA0T,qCAmBrClnB,MAAA,YAIEA,MAAA,aAGFA,iCALKA,MAAA,UAAAsG,GAAA3F,KAAA,IAAA2F,GAAA3F,KAAA,IAGGX,MAAA,GAAAA,MAAA,kBAAAsG,GAAA3F,KAAA,6DAIRX,MAAA,mBAKYA,MAAA,mBAAAA,MAAA0wC,IAAA,MAAAC,GAAA3wC,MAAA,UAASA,MAAA2wC,GAAA19B,cAAa,GAKRjT,mCATdA,MAAA,YAAAA,CAAe,qBAAfA,CAAe,UAAA2I,GAAAhI,KAAA,IAAAgI,GAAAhI,KAAA,GAAfX,CAAe,0CAAA2I,GAAAhI,KAAA,KAAAgI,GAAAhI,KAAA,IAAfX,CAAe,OAAA2I,GAAAhI,mCAtE7BX,MAAA,GAEEA,MAAA,EAAA4wC,GAAA,iBA8BA5wC,MAAA,EAAA6wC,GAAA,2BAAA7wC,OA4BAA,MAAA,EAAA8wC,GAAA,cASA9wC,MAAA,EAAA+wC,EAAA,qBAWF/wC,4CA9EUA,MAAA,GAAAA,MAAA,OAAAoB,GAAA4vC,oBAAAhxC,CAA2B,WAAAmT,IA0D7BnT,MAAA,GAAAA,MAAA,OAAAoB,GAAAie,SASOrf,MAAA,GAAAA,MAAA,OAAAoB,GAAA6vC,aAAA7vC,GAAA8Q,QAAA9Q,GAAAie,sCAiDPrf,MAAA,aAIEA,MAAA,aAGFA,iCALMA,MAAA,UAAA09B,GAAA/8B,KAAA,IAAA+8B,GAAA/8B,KAAA,IAGEX,MAAA,GAAAA,MAAA,kBAAA09B,GAAA/8B,KAAA,6DAKRX,MAAA,YAAAA,CAEqD,aAI7CA,MAAA,iBAAAG,IAAAH,MAAAkxC,IAAAlxC,QAAA,MAAAw9B,GAAAx9B,MAAA,GAAAiD,GAAAjD,QAAA,OAASA,MAAAiD,GAAAgQ,YAAA9S,GAAAq9B,IAAqC,GAElDx9B,MAAA,aACFA,qCARIA,MAAA,UAAA49B,GAAAj9B,KAAA,IAAAi9B,GAAAj9B,KAAA,IAIEX,MAAA,GAAAA,MAAA,UAAA49B,GAAAj9B,KAAA,QAAAi9B,GAAAj9B,KAAA,kJAnDhBX,MAAA,GAEEA,MAAA,WAAAA,CAAsB,iBAabA,MAAA,gBAAAG,IAAAH,MAAAsC,IAAA,MAAAy7B,GAAA/9B,QAAA,OAAQA,MAAA+9B,GAAAJ,WAAAx9B,IAAkB,EAA1BH,CAA2B,iBAAAG,IAAAH,MAAAsC,IAAA,MAAA27B,GAAAj+B,QAAA,OAClBA,MAAAi+B,GAAAJ,YAAA19B,IAAmB,EAD5BH,CAA2B,iBAAAG,IAAAH,MAAAsC,IAAA,MAAA47B,GAAAl+B,QAAA,OAElBA,MAAAk+B,GAAAlH,aAAA72B,MAAAwP,OAAAuC,OAAyC,GAbzDlS,QAkBAA,MAAA,aAAAA,CAEkB,YAFlBA,CAEkB,aASZA,MAAA,GACFA,QAEAA,MAAA,EAAAmxC,EAAA,eAUAnxC,MAAA,EAAAoxC,EAAA,eAaFpxC,QAEAA,MAAA,8BASsBA,MAAA,uBAAAG,IAAAH,MAAAsC,IAAA,MAAAk7B,GAAAx9B,MAAA,GAAAqxC,GAAArxC,QAAA,OAAeA,MAAAqxC,GAAAC,gBAAAnxC,GAAAq9B,IAAyC,GAC9Ex9B,YAMNA,kCAvEWA,MAAA,GAAAA,MAAA,YAAAikB,GAAAknB,UAAAnrC,CAAuB,WAAAikB,GAAA6T,SAAvB93B,CAAuB,cAAAikB,GAAArP,YAAvB5U,CAAuB,UAAAikB,GAAAqa,YAAvBt+B,CAAuB,KAAAikB,GAAAhiB,GAAvBjC,CAAuB,WAAAikB,GAAA4R,cAAvB71B,CAAuB,eAAAikB,GAAAmnB,aAAvBprC,CAAuB,SAAAikB,GAAAstB,OAAvBvxC,CAAuB,WAAAikB,GAAA8D,UAEvB/nB,MAAA,mBAAAikB,GAAAhiB,GAAAjC,CAA4B,kBAAAikB,GAAAiD,OAe5BlnB,MAAA,GAAAA,MAAA,YAAAikB,GAAA4R,eACA71B,MAAA,MAAAikB,GAAAhiB,IAGCjC,MAAA,GAAAA,MAAA,kBAAAikB,GAAAutB,yBAGExxC,MAAA,GAAAA,MAAA,WAAAikB,GAAA4R,cAAA71B,CAAgC,gBAAAikB,GAAAutB,yBAChCxxC,MAAA,UAAAikB,GAAAqa,aAEJt+B,MAAA,GAAAA,MAAA,IAAAikB,GAAArP,YAAA,KAGK5U,MAAA,GAAAA,MAAA,OAAAikB,GAAA5E,SAYArf,MAAA,GAAAA,MAAA,OAAAikB,GAAAgtB,aAAAhtB,GAAA/R,QAAA+R,GAAAmd,OAAAz3B,QAca3J,MAAA,GAAAA,MAAA,WAAAikB,GAAA4R,cAAA71B,CAA0B,eAAAikB,GAAAid,OAA1BlhC,CAA0B,OAAAA,MAAA,GAAAie,GAAAje,MAAA,GAAA0T,GAAAuQ,GAAAhiB,GAAA,iBAA1BjC,CAA0B,OAAAikB,GAAAtjB,6FAiBtDX,MAAA,GACEA,MAAA,iBAYUA,MAAA,gBAAAG,IAAAH,MAAAyxC,IAAA,MAAAC,GAAA1xC,QAAA,OAAQA,MAAA0xC,GAAA/T,WAAAx9B,IAAkB,EAA1BH,CAA2B,iBAAAG,IAAAH,MAAAyxC,IAAA,MAAAzR,GAAAhgC,QAAA,OAClBA,MAAAggC,GAAAnC,YAAA19B,IAAmB,EAD5BH,CAA2B,iBAAAG,IAAAH,MAAAyxC,IAAA,MAAAE,GAAA3xC,QAAA,OAElBA,MAAA2xC,GAAA3a,aAAA72B,GAAAwP,OAAAuC,OAAiC,GAGpDlS,MAAA,cAAAA,QACFA,kCAjBYA,MAAA,GAAAA,MAAA,aAAAgmB,GAAA9V,WAEAlQ,MAAA,WAAAgmB,GAAA8R,SAAA93B,CAAqB,cAAAgmB,GAAApR,YAArB5U,CAAqB,UAAAgmB,GAAAsY,YAArBt+B,CAAqB,KAAAgmB,GAAA/jB,GAArBjC,CAAqB,WAAAgmB,GAAA6P,cAArB71B,CAAqB,QAAAgmB,GAAA9T,MAArBlS,CAAqB,OAAAgmB,GAAAne,KAArB7H,CAAqB,WAAAgmB,GAAAwY,cAArBx+B,CAAqB,UAAAA,MAAA,GAAAke,GAAA8H,GAAA4rB,SADrB5xC,MAAA,YAAAgmB,GAAAgqB,UAAAhwC,CAA4B,mBAAAgmB,GAAA/jB,GAA5BjC,CAA4B,kBAAAgmB,GAAAkB,qDAoB1ClnB,MAAA,6BAMsBA,MAAA,uBAAAG,IAAAH,MAAA6xC,IAAA,MAAApS,GAAAz/B,QAAA,OAAeA,MAAAy/B,GAAA0F,YAAA76B,KAAAnK,IAAwB,GAC7DH,kCALsBA,MAAA,WAAAC,GAAA41B,cAAA71B,CAA0B,eAAAC,GAAAihC,OAA1BlhC,CAA0B,OAAAC,GAAAkhC,cAA1BnhC,CAA0B,OAAAC,GAAAU,mCASlDX,MAAA,gDAAkBA,MAAA,SAAAK,GAAA+gC,sCAOdphC,MAAA,UAEEA,MAAA,GACFA,iCADEA,MAAA,GAAAA,MAAA,IAAAu/B,GAAAuS,kBAAA,mCAIA9xC,MAAA,WAEEA,MAAA,GACFA,qCADEA,MAAA,GAAAA,MAAA,IAAA+xC,GAAArG,QAAA,mCAVN1rC,MAAA,YAEEA,MAAA,EAAAgyC,GAAA,YAKAhyC,MAAA,WACEA,MAAA,EAAAiyC,GAAA,aAIFjyC,kCAVIA,MAAA,GAAAA,MAAA,OAAAmmB,GAAA2rB,mBAMmB9xC,MAAA,GAAAA,MAAA,UAAAmmB,GAAA+rB,qHChNtB,IAAMC,GAAe,MAAtB,MAAOA,WAAuB5b,IAalC,mBAAWuZ,GACT,SAAOjsB,MAAWxa,KAAK6d,MACzB,CAKA,eAAWoX,GACT,MAAMwF,GAA8BzrB,OAAOkK,OACzC,CAAE,aAAclZ,KAAK4nC,aAAe5nC,KAAKgW,SACzChW,KAAK06B,cAEP,OAAO1rB,OAAOia,QAAQwR,IACnB35B,OAAO,EAAEqO,GAAGnG,QAASA,IACrBkG,IAAI,EAAEC,MAAOA,IACbwrB,OAAO,CAAC36B,KAAK46B,YACbD,OAAO,CAAC36B,KAAKye,eAClB,CAEA1e,YAAgCyjB,GAAgCnY,IAC9DkiB,MAAM/J,GAAWnY,IAD6CrL,KAAAqL,MA5BvDrL,KAAA+mC,aAAyFgC,IAAeA,GAAWn8B,cAEnH5M,KAAAmoC,yBAA0B,EAEnBnoC,KAAAye,cAAgB,GA8BvBze,KAAA2mC,UAAY,IAKZ3mC,KAAA4mC,UAAY,EAKZ5mC,KAAA4nC,aAAc,EAId5nC,KAAAgW,SAAU,EAKVhW,KAAAxB,KAAO,EAMAwB,KAAAwb,MAAO,EAKdxb,KAAA0e,UAAW,EAMJ1e,KAAAN,KAAO,OAEfM,KAAAgpC,wBAAyB,EAUjBhpC,KAAAytB,WAAY,EAWnBztB,KAAAipC,oBAAqB,EACrBjpC,KAAAkpC,wBAA0B,EAE1BlpC,KAAA2nC,qBAAsB,EACtB3nC,KAAAyoC,kBAAoB,GAEpBzoC,KAAAqe,UAAY,OACZre,KAAA2kB,UAAY,8CACZ3kB,KAAAihB,aAAe,aAEfjhB,KAAA0X,WAAY,EAEL1X,KAAAonC,UAAsE,OAAM+B,MAAG,IAMrFnpC,KAAAopC,MAAQ,IAAI3oC,MACZT,KAAA87B,YAAc,IAAIr7B,KAlF5B,CA4CA,wBAAa4oC,CAAqBxgC,IAChC7I,KAAKgpC,uBAA2C,UAAlB7/B,OAAON,IACrC7I,KAAKspC,2BAA2BtpC,KAAKgpC,uBACvC,CA+CAO,kBAAkBvoC,IACZhB,KAAKipC,oBAAsBjoC,GAAMsF,QAAUtF,GAAMsF,OAAOuC,QACtD7I,KAAKwb,MAAWxb,KAAK6I,OAAU7I,KAAK6I,MAAiB2S,OACvDxb,KAAKqtB,QAAWrtB,KAAK6I,MAAiB2S,OAClCxb,KAAK2O,UAAU3O,KAAK2O,SAAS3O,KAAK6I,QAEpC7I,KAAK83B,eAAmB93B,KAAK83B,cAAcx3B,QAC7CN,KAAK87B,YAAY76B,KAAKjB,KAAK83B,cAAc93B,KAAKkpC,0BAGpD,CAEAxtB,WACM1b,KAAKwjB,UAAUgmB,cACjBxpC,KAAKwjB,UAAUgmB,aAAa7kC,UAAU,KAClB,SAAd3E,KAAKN,MACPM,KAAKuP,YAEPvP,KAAKqL,GAAGkB,cAAY,GAGpBvM,KAAKwjB,UAAUimB,eACjBzpC,KAAKwjB,UAAUimB,cAAc9kC,UAAW+kC,KACtC,GAAI1pC,KAAK2nC,qBAAuB3nC,KAAK2pC,cACnC,GAAI3pC,KAAKwjB,UAAUuU,OAAQ,CACzB,MAAM6R,GAAa56B,OAAOC,KAAKjP,KAAKwjB,UAAUuU,QAAQ5pB,KAAMoC,IAAQvQ,KAAKwjB,UAAUuU,OAAOxnB,IAAK8xB,SAChF,YAAXqH,IAAwBE,GAAY5pC,KAAK2pC,cAAcplB,OACtDvkB,KAAK2pC,cAAcj8B,aACnB1N,KAAK2pC,cAAcj8B,QAE5B1N,KAAKqL,GAAGkB,cAAY,EAG1B,CAEAs8B,iBACE,OAAO7oC,KAAKwjB,WAAWuU,OAAS/oB,OAAO66B,OAAO7pC,KAAKwjB,UAAUuU,QAAU,EACzE,CAEAp3B,kBACEX,KAAKspC,2BAA2BtpC,KAAKgpC,uBACvC,CAOAp/B,YAAY5I,GAAoB,KAAMqB,GAAyB,MACzDrB,IAASqB,KACXrB,GAAM2O,iBACNtN,GAAKwG,MAAQ,IAEf7I,KAAK6I,MAAQ,GACb7I,KAAKopC,MAAMnoC,KAAKjB,KAAK6I,OACrB7I,KAAKwjB,UAAUG,QAAQmmB,gBACzB,CAEAnc,aAAa3sB,GAAmC+oC,GAAY,MAC1D/pC,KAAK6I,MAAsB,SAAd7I,KAAKN,KAAkBsB,GAAMsF,OAAO0jC,MAAQhpC,EAC3D,CAEAmmC,4BAA4BnmC,IAE1BhB,KAAK6I,MAAQ7H,GAAM+S,IACrB,CAEAk0B,gBAAgBjnC,GAAoBqB,IAClCA,GAAKid,QACLtf,KAAK87B,YAAY76B,KAAKD,GACxB,CAEAsoC,2BAA2Bnc,IACzB,GAAIntB,KAAKwjB,WAAWG,UAAqB,IAAVwJ,GAAiB,CAC9C,MAAM8c,GAAmBC,KAAWC,QAAQ,CAACnqC,KAAKwjB,UAAUG,QAAQ4d,UAAWgB,IAAc6H,sBAC7FpqC,KAAKwjB,UAAUG,QAAQ0mB,cAAcJ,IAEzC,CAEAr7B,WAAWC,IACT0e,MAAM3e,WAAWC,KACZA,IAAqB,SAAd7O,KAAKN,MAAmBM,KAAKsqC,mBACvCtqC,KAAKsqC,iBAAiBnpC,MAAMyL,cAAc/D,MAAQ,GAEtD,CAEAoW,YAAYC,IACNA,IAASyoB,qBAAuB3nC,KAAK2pC,gBAClCzqB,IAASyoB,qBAAqBvoB,aAC1Bpf,KAAKwjB,UAAUuU,QAAU/oB,OAAOC,KAAKjP,KAAKwjB,UAAUuU,QAAQ5pB,KAAMoC,IAAQvQ,KAAKwjB,UAAUuU,OAAOxnB,IAAK8xB,UAC5GriC,KAAK2pC,cAAcplB,OAF4BvkB,KAAK2pC,cAAcj8B,QAKxE,mDA7NWo7B,IAAcnyC,MAAAqd,KAAA,IAAArd,aAAA,oCAAdmyC,GAAc7oC,UAAA,gBAAAiU,UAAA,SAAA1S,GAAAC,OAAA,EAAAD,oBA6Hd+oC,KAAc,EAAUA,eAHOvjC,4OA1H/BvF,GAAA8nC,kBAAAzyC,GAAyB,KAAAH,gwHDtCtCA,MAAA,WAEEA,MAAA,EAAA6zC,EAAA,0BAsBA7zC,MAAA,WAEEA,MAAA,EAAA8zC,GAAA,8BASA9zC,MAAA,WAGEA,MAAA,EAAA+zC,EAAA,sBAkFA/zC,MAAA,EAAAg0C,GAAA,wBA+EAh0C,MAAA,EAAAi0C,GAAA,uBAqBFj0C,QAEAA,MAAA,EAAAk0C,GAAA,8BASFl0C,QAEAA,MAAA,EAAAm0C,GAAA,0BAGAn0C,MAAA,GAAAo0C,GAAA,yBAAAp0C,OAoBFA,gBA9PoBA,MAAA,GAAAA,MAAA,OAAA8K,GAAAoc,OAAApc,GAAA7I,IAwBOjC,MAAA,GAAAA,MAAA,OAAA8K,GAAAuyB,gBAAAvyB,GAAAsyB,SAUlBp9B,MAAA,GAAAA,MAAA,UAAAA,MAAA,EAAAie,GAAAnT,GAAAnK,KAAA,uBAAAmK,GAAAnK,KAAA,KAEYX,MAAA,GAAAA,MAAA,gBAAA8K,GAAA/B,MAAA,aAAA+B,GAAA/B,MAkFA/I,MAAA,GAAAA,MAAA,gBAAA8K,GAAA/B,MA+EA/I,MAAA,GAAAA,MAAA,oBAAA8K,GAAA/B,MAuBM/I,MAAA,GAAAA,MAAA,OAAA8K,GAAAq2B,eAAAr2B,GAAAo2B,QAYNlhC,MAAA,GAAAA,MAAA,OAAA8K,GAAAugC,eAAAvgC,GAAAkmC,qICpMRmB,EAAe,sICfrB,IAAMtV,EAAW,MAAlB,MAAOA,oDAAW,oCAAXA,GAAW,uCAZpBD,KACA9d,KACAtO,KACA8a,KACAmc,KACA1P,IACAlZ,KACAE,MAAY,SAKH8d,CAAW,2HCTjB,IAAMwX,EAAe,MAAtB,MAAOA,EACXjrC,cACE,iDAFSirC,EAAe,oCAAfA,GAAe,uCAJhB7jC,KAAcsO,KAAawM,KAAkBmc,KAAa1P,MAAe,SAIxEsc,CAAe,6MCX1Br0C,MAAA,6CACiBA,MAAA,QAAAU,EAAAwmB,MAAAlnB,CAAe,KAAAU,EAAAuB,GAAfjC,CAAe,YAAAU,EAAA02B,UAAfp3B,CAAe,WAAAU,EAAAm1B,cAAf71B,CAAe,YAAAU,EAAAo2B,UAAf92B,CAAe,OAAAU,EAAAyiB,KAAfnjB,CAAe,gBAAAU,EAAA62B,cAAfv3B,CAAe,eAAAU,EAAA82B,aAAfx3B,CAAe,gBAAAU,EAAA+2B,cAAfz3B,CAAe,WAAAU,EAAAg3B,sBAAAh3B,EAAAi3B,iBAAf33B,CAAe,eAAAU,EAAAk3B,aAAf53B,CAAe,sBAAAU,EAAAm3B,iEAuC1B73B,MAAA,uBAAAA,CAAoC,kBAOtBA,MAAA,mBAAAA,MAAAgnB,GAAA,MAAAhB,EAAAhmB,MAAA,UAASA,MAAAgmB,EAAAsuB,qBAAoB,GAAEt0C,QAE3CA,MAAA,kBAKYA,MAAA,mBAAAA,MAAAgnB,GAAA,MAAA3mB,EAAAL,MAAA,UAASA,MAAAK,EAAAi0C,oBAAmB,GAAM,GAAEt0C,oCAdhCA,MAAA,eAIJA,MAAA,GAAAA,MAAA,OAAAikB,EAAAtjB,KAAAX,CAAa,WAAAikB,EAAA4R,eAAA5R,EAAA/R,OAAA+R,EAAAjS,KADbhS,MAAA,oBAAAikB,EAAA4V,iBAAA53B,GAAAsyC,OAQAv0C,MAAA,GAAAA,MAAA,OAAAikB,EAAAtjB,KAAAX,CAAa,WAAAikB,EAAA4R,eAAA5R,EAAA/R,OAAA+R,EAAAsgB,KADbvkC,MAAA,oBAAAikB,EAAA4V,iBAAA53B,GAAAuyC,sCAjBlBx0C,MAAA,4BAKEA,MAAA,EAAAy0C,EAAA,mBAsBFz0C,+BAxBsBA,MAAA,WAAAkpB,EAAA2M,2CA4BxB71B,MAAA,+CACkBA,MAAA,SAAAoB,EAAAggC,OAAAphC,CAAiB,uBAAAoB,EAAAqrC,eAAA,KAAArrC,EAAAqrC,eAAAR,gDCrD9B,IAAMyI,GAAgB,MAAvB,MAAOA,WAAwBne,IAuBnC,eAAW+H,GACT,MAAMwF,EAA8BzrB,OAAOkK,OAA8C,GAAIlZ,KAAK06B,cAClG,OAAO1rB,OAAOia,QAAQwR,GACnB35B,OAAO,EAAEqO,EAAGnG,OAASA,GACrBkG,IAAI,EAAEC,KAAOA,GACbwrB,OAAO,CAAC36B,KAAK46B,WAClB,CAWA76B,YAAgCyjB,EAAgCnY,GAC9DkiB,MAAM/J,EAAWnY,GAD6CrL,KAAAqL,KAvChDrL,KAAA2I,IAAc2iC,OAAOC,iBACrBvrC,KAAAk7B,IAAcoQ,OAAOE,iBACrBxrC,KAAAyrC,KAAO,EAKdzrC,KAAAyuB,SAAW,EAIXzuB,KAAA0rC,aAAc,EAIP1rC,KAAAytB,WAAY,EAEZztB,KAAA2rC,iBAAmB,GAY5B3rC,KAAAwwB,iBAAmB,CACxB53B,GAAI,CACFsyC,MAAO,gBACPC,QAAS,oBAIHnrC,KAAA8jC,2BAA6B,0BAKvC,CAEApoB,WACE1b,KAAK4rC,cAAch9B,WAAWzF,OAAOnJ,KAAKqtB,SAC5C,CAEAze,WAAWC,GACT7O,KAAKqtB,WAAWzsB,SAAMiO,GAAc,GAANA,EAC9B7O,KAAK4rC,cAAch9B,WAAWzF,OAAOnJ,KAAKqtB,UAC1CrtB,KAAKqL,GAAGkB,cACV,CAEA0+B,mBAAmBY,GAAc,GAC/B7rC,KAAK8rC,YAAYD,GACjB7rC,KAAKuP,WAAavP,KAAKuP,YACvBvP,KAAK4rC,cAAch9B,WAAWzF,OAAOnJ,KAAK6I,OAC5C,CAEAkjC,oBAAoB/qC,GAClBA,EAAMgJ,iBACR,CAEA8hC,YAAYD,GAER7rC,KAAK6I,MADHgjC,EACW7rC,KAAK2I,MAAQ3I,KAAK6I,QAAS7I,KAAKyrC,KAAOzrC,KAAK2I,KAAO3I,KAAK2I,KAAO3I,KAAK6I,QAAS7I,KAAKyrC,KAElFzrC,KAAKk7B,KAAOl7B,KAAK6I,OAAS7I,KAAKyrC,KAAOzrC,KAAKk7B,KAAOl7B,KAAKk7B,KAAOl7B,KAAK6I,OAAS7I,KAAKyrC,IAElG,CAEA,8BAAIO,GACF,OAAOhsC,KAAK2rC,iBAAmB,GAAG3rC,KAAK2rC,+BAAiC,aAC1E,CAEAM,iBAAiBjrC,GACf,IAAKA,GAAOsF,QAAUtG,KAAK6mC,UACzB,OAAO7mC,KAAKs0B,WAAWtzB,GAGzB,MAAMkrC,EAAMZ,OAAOtqC,EAAMsF,OAAOuC,OAChC,MAAIjI,SAAMZ,KAAK6mC,YAAchV,MAAMqa,GAAM,CACvC,MAAMC,EAAWnsC,KAAKk7B,KAAO,EAC7B,OAAAl7B,KAAK6I,MAAQsjC,EACbnrC,EAAMsF,OAAOuC,MAAQM,OAAOgjC,GAErBnsC,KAAKs0B,WAAWtzB,GAGrBkrC,EAAMlsC,KAAKk7B,KACbl6B,EAAM2O,iBACN3O,EAAMsF,OAAOuC,MAAQM,OAAOnJ,KAAKk7B,KACjCl7B,KAAK6I,MAAQ7I,KAAKk7B,KACTgR,EAAMlsC,KAAK2I,KACpB3H,EAAM2O,iBACN3O,EAAMsF,OAAOuC,MAAQM,OAAOnJ,KAAK2I,KACjC3I,KAAK6I,MAAQ7I,KAAK2I,KAElB3I,KAAK6I,MAAQqjC,EAGflsC,KAAKs0B,WAAWtzB,EAClB,CAEAorC,kBACEvnC,WAAW,KACJgtB,OAAO7xB,KAAK6I,SACX7I,KAAK2I,KAAO3I,KAAK6I,MAAQ7I,KAAK2I,MAAK3I,KAAK6I,OAAS7I,KAAK2I,KACtD3I,KAAKk7B,KAAOl7B,KAAK6I,MAAQ7I,KAAKk7B,MAAKl7B,KAAK6I,OAAS7I,KAAKk7B,KAC1Dl7B,KAAK4rC,cAAch9B,WAAWzF,OAAOnJ,KAAK6I,QAAM,EAGtD,CAEAwjC,YAAYrrC,GACV,GAAIhB,KAAK6mC,UACP7mC,KAAKosC,uBAIP,GAAI,0BAA0BnM,KAAKj/B,EAAMsF,OAAOuC,OAAhD,CACE,MAAMqjC,EAAMZ,OAAOtqC,EAAMsF,OAAOuC,OAChC7I,KAAK6I,MAAQqjC,EAAMlsC,KAAK2I,IAAM3I,KAAK2I,IAAMujC,EAAMlsC,KAAKk7B,IAAMl7B,KAAKk7B,IAAMgR,OAKvElrC,EAAM2O,iBACN3O,EAAMsF,OAAOuC,MAAQM,OAAOnJ,KAAKqtB,QACnC,CAEAif,aAAatrC,GACXhB,KAAK6I,OAAS7H,CAChB,iDAtIWqqC,IAAe10C,MAAAqd,KAAA,IAAArd,aAAA,oCAAf00C,GAAeprC,UAAA,gCAAAiU,UAAA,SAAA1S,EAAAC,MAAA,EAAAD,QAuCf+oC,KAAc,EAAUA,6tCDtDrC5zC,MAAA,WAGEA,MAAA,EAAA41C,EAAA,0BAaA51C,MAAA,QAAAA,CAA0C,aAUjCA,MAAA,gBAAAG,IAAA,OAAQ2K,EAAAwqC,iBAAAn1C,GAAwB,EAAhCH,CAAiC,iBAAAG,IAAA,OACxB2K,EAAA+yB,YAAA19B,GAAmB,EAD5BH,CAAiC,6BAAAG,IAGZA,UAAA6Y,iBAAyBlO,EAAAwpC,oBAAmB,EAAM,EAHvEt0C,CAAiC,2BAAAG,IAIdA,UAAA6Y,iBAAyBlO,EAAAwpC,oBAAoB,EAJhEt0C,CAAiC,kBAAAG,IAAA,OAKvB2K,EAAAsqC,oBAAAj1C,GAA2B,EALrCH,CAAiC,iBAAAG,IAAA,OAMxB2K,EAAA4qC,YAAAv1C,GAAmB,EAN5BH,CAAiC,kBAAAG,IAAA,OAQvB2K,EAAA6qC,aAAAx1C,GAAoB,GAjBrCH,QAmBAA,MAAA,EAAA61C,EAAA,8BA6BF71C,QAEAA,MAAA,EAAA81C,EAAA,0BAGF91C,eArEKA,MAAA,UAAAA,MAAA,GAAA0gB,GAAA5V,EAAAnK,KAAA,IAAAmK,EAAAnK,KAAA,KAEeX,MAAA,GAAAA,MAAA,OAAA8K,EAAAoc,OAAApc,EAAA7I,IAabjC,MAAA,GAAAA,MAAA8K,EAAAuqC,4BACIr1C,MAAA,GAAAA,MAAA,KAAA8K,EAAA7I,GAAAjC,CAAS,cAAA8K,EAAA8J,YAAT5U,CAAS,WAAA8K,EAAA+qB,cAAT71B,CAAS,WAAA8K,EAAAgtB,SAAT93B,CAAS,UAAA8K,EAAAwzB,YAATt+B,CAAS,QAAA8K,EAAAolC,UAATlwC,CAAS,aAKTA,MAAA,mBAAA8K,EAAA7I,GAAAjC,CAA4B,kBAAA8K,EAAAoc,OAcZlnB,MAAA,GAAAA,MAAA,OAAA8K,EAAAiqC,aA+BN/0C,MAAA,GAAAA,MAAA,OAAA8K,EAAAugC,4FCpDRqJ,EAAgB,sICAtB,IAAMqB,EAAY,MAAnB,MAAOA,EACX3sC,cACE,iDAFS2sC,EAAY,oCAAZA,GAAY,uCAJbvlC,KAAcsO,KAAawM,KAAkBmc,KAAa1P,IAAiBhZ,MAAY,SAItFg3B,CAAY,iJCwBzB/1C,MAAA,WAMiCA,MAAA,GAAYA,8BAJxCA,MAAA,WAAAU,EAAAk1B,gBAAA51B,CAAkC,OAAAU,EAAAk1B,iBAAA,OAAAl1B,EAAAC,KAAlCX,CAAkC,OAAAU,EAAAk1B,iBAAA,OAAAl1B,EAAAC,KAAlCX,CAAkC,YAAAU,EAAAm1B,eAIlC71B,MAAA,UAAAU,EAAAo1B,iBAA4B91B,MAAA,GAAAA,MAAAU,EAAAq1B,qDAEjC/1B,MAAA,WAMEA,MAAA,EAAAg2C,EAAA,qBACFh2C,8BALKA,MAAA,WAAAkpB,EAAA+M,mBAAAj2B,CAAqC,OAAAkpB,EAAA+M,oBAAA,OAAA/M,EAAAvoB,KAArCX,CAAqC,OAAAkpB,EAAA+M,oBAAA,OAAA/M,EAAAvoB,MAGrCX,MAAA,UAAAkpB,EAAAgN,oBACUl2B,MAAA,GAAAA,MAAA,mBAAAkpB,EAAA+sB,iBAAA30C,4JClCR,IAAM40C,EAAgB,MAAvB,MAAOA,EAEX9sC,YAAmB9H,GAAA+H,KAAA/H,WADV+H,KAAAgtB,MAAO,CACgC,mDAFrC6f,GAAgBl2C,aAAA,oCAAhBk2C,EAAgB5sC,UAAA,6BAAA8d,OAAA,CAAAiP,KAAA,kBAAhB6f,CAAgB,KAYhBC,EAAkB,MAAzB,MAAOA,UAA0B5f,IAgBrC,SAAoBrkB,CAAMA,GACxB7I,KAAKqtB,QAAUxkB,EACf7I,KAAKstB,UAAYttB,KAAK+sC,aAAe/sC,KAAK6I,KAC5C,CACA,SAAWA,GACT,OAAO7I,KAAKqtB,OACd,CAEA,cAAY0f,GACV,OAAO/sC,KAAKwjB,UAAU3a,KACxB,CAYA,WAAoBnL,CAAQyvB,GAC1BntB,KAAKstB,UAAYH,EACbntB,KAAK2O,UACP3O,KAAK2O,SAAS3O,KAAK6I,OAErB7I,KAAKU,OAAOO,KAAKjB,KAAK6I,MACxB,CACA,WAAWnL,GACT,OAAOsC,KAAKstB,SACd,CAMAvtB,YAAgCyjB,EAAgCnY,IAC9DkiB,MAAM/J,EAAWnY,IAD6CrL,KAAAqL,MAlDvDrL,KAAAwtB,cAAe,EACfxtB,KAAAusB,iBAAkB,EAElBvsB,KAAA4sB,oBAAqB,EAGrB5sB,KAAAgtC,aAAc,EAKPhtC,KAAAytB,WAAY,EASlBztB,KAAA8jC,2BAA6B,0BAK7B9jC,KAAAstB,WAAY,EAqBbttB,KAAAuuB,aAAe,EAMxB,CAEA0e,qBACMjtC,KAAKwjB,WACPxjB,KAAKwjB,UAAUgmB,aAAa7kC,UAAU,CACpCgN,KAAMxF,GAAOnM,KAAK4O,WAAWzC,IAGnC,CAMAwhB,aAAa3sB,GACXA,EAAMgJ,kBACNhK,KAAKtC,QAAUsD,EAAMsF,OAAO5I,QAC5BsC,KAAKuP,WAAavP,KAAKuP,WACzB,CAEAX,WAAWC,GACT7O,KAAKstB,UAAYze,IAAQ7O,KAAK6I,MAC9B7I,KAAKqL,GAAGkB,cACV,CAEAmP,WACM1b,KAAK6d,QAAU7d,KAAKpH,IACtBkN,QAAQC,MAAM,+CAEG,OAAf/F,KAAK6I,YAAwCgD,WAAf7L,KAAK6I,QACrC/C,QAAQC,MAAM,gCAElB,mDAvFW+mC,GAAcn2C,MAAAqd,KAAA,IAAArd,aAAA,oCAAdm2C,EAAc7sC,UAAA,8BAAAsB,eAAA,SAAAC,GAAAC,GAAAC,OAAA,EAAAF,aAmDXqrC,EAAgB,EAAwBA,kmCDlFxDl2C,MAAA,WAsBEA,MAAA,+DAEAA,MAAA,aAOOA,MAAA,kBAAAG,IAAA,OAAU2K,GAAAksB,aAAA72B,GAAoB,GAPrCH,QAUAA,MAAA,KACAA,MAAA,6DAEFA,QAEAA,MAAA,EAAAu2C,EAAA,cAQAv2C,MAAA,EAAAw2C,EAAA,qBA9CKx2C,MAAA,UAAAA,MAAA,GAAA8pB,EAAA,OAAAhf,GAAAnK,KAAA,OAAAmK,GAAAnK,MAAAX,CAGE,YAAA8K,GAAAgsB,UAHF92B,CAGE,gBAAA8K,GAAAusB,cAHFr3B,CAGE,QAAA8K,GAAAoc,MAHFlnB,CAGE,YAAA8K,GAAAssB,UAHFp3B,CAGE,SAAA8K,GAAAurC,YAHFr2C,CAGE,KAAA8K,GAAA7I,GAHFjC,CAGE,eAHFA,CAGE,WAAA8K,GAAA+qB,cAHF71B,CAGE,OAAA8K,GAAAqY,KAHFnjB,CAGE,gBAAA8K,GAAAysB,cAHFv3B,CAGE,eAAA8K,GAAA0sB,aAHFx3B,CAGE,gBAAA8K,GAAA2sB,cAHFz3B,CAGE,WAAA8K,GAAA4sB,sBAAA5sB,GAAA6sB,iBAHF33B,CAGE,eAAA8K,GAAAwsB,aAHFt3B,CAGE,eAAA8K,GAAA8sB,aAHF53B,CAGE,sBAAA8K,GAAA+sB,qBAoBE73B,MAAA,GAAAA,MAAA,KAAA8K,GAAA7I,GAAAjC,CAAS,OAAA8K,GAAAyzB,KAATv+B,CAAS,QAAA8K,GAAAoH,MAATlS,CAAS,WAAA8K,GAAA+qB,cAAT71B,CAAS,UAAA8K,GAAA/D,QAAT/G,CAAS,WAAA8K,GAAAgtB,UAeZ93B,MAAA,GAAAA,MAAA,OAAA8K,GAAAirB,WAAAjrB,GAAA+rB,cAQA72B,MAAA,GAAAA,MAAA,OAAA8K,GAAAmrC,mBAAAnrC,GAAAmrC,iBAAA5f,oEChBO8f,CAAkB,qGCnBxB,IAAMM,EAAW,MAAlB,MAAOA,EACXrtC,cACE,iDAFSqtC,EAAW,oCAAXA,GAAW,uCAJZjmC,KAAcsO,KAAaiZ,MAAe,SAIzC0e,CAAW,yMCXtBz2C,MAAA,6CACiBA,MAAA,YAAAU,GAAAo2B,UAAA92B,CAAuB,WAAAU,GAAAm1B,cAAvB71B,CAAuB,KAAAU,GAAAuB,GAAvBjC,CAAuB,gBAAAU,GAAA+2B,cAAvBz3B,CAAuB,gBAAAU,GAAA62B,cAAvBv3B,CAAuB,eAAAU,GAAA82B,aAAvBx3B,CAAuB,OAAAU,GAAAyiB,KAAvBnjB,CAAuB,eAAAU,GAAAk3B,aAAvB53B,CAAuB,gBAAAU,GAAA22B,cAAvBr3B,CAAuB,YAAAU,GAAA02B,UAAvBp3B,CAAuB,QAAAU,GAAAwmB,MAAvBlnB,CAAuB,WAAAU,GAAAg3B,sBAAAh3B,GAAAi3B,4CAoEpC33B,MAAA,GACEA,MAAA,WACEA,MAAA,GACFA,QACAA,MAAA,YACEA,MAAA,GACFA,QACFA,iDALIA,MAAA,GAAAA,MAAA,UAAA02C,GAAA,KAAAA,GAAA/sC,OAAA,KAGA3J,MAAA,GAAAA,MAAA,IAAAK,GAAAs2C,gBAAA,8BALJ32C,MAAA,EAAA42C,EAAA,6CAAe52C,MAAA,eAAAgmB,GAAA6wB,aAAA,MAAA7wB,GAAA6wB,YAAAC,MAAA9wB,GAAA6wB,YAAAC,KAAAntC,+BAHjB3J,MAAA,EAAA+2C,EAAA,8CAmBI/2C,MAAA,qBAAcA,MAAA,iBAAAG,IAAA,OAASA,GAAA6Y,gBAAuB,GAGNhZ,qDAF1BA,MAAA,UAAAg3C,GAAAC,SAAAj3C,CAA0B,KAAAk3C,GAAA/wB,GAAAxF,WAA1B3gB,CAA0B,QAAAk3C,GAAA/wB,GAAAxF,oCAP5C3gB,MAAA,GACEA,MAAA,EAAAm3C,EAAA,sBAWFn3C,6EAMEA,MAAA,gEAAcA,MAAA,yBACAA,MAAA,QAAAo3C,GAAAC,QAAAr3C,CAAsB,KAAAo3C,GAAAC,QAAtBr3C,CAAsB,gBAAAikB,GAAAqzB,oBAAAC,SAAAN,SAAtBj3C,CAAsB,UAAAu3C,GAAAN,SAAtBj3C,CAAsB,iBAAAA,MAAA,EAAA0gB,0GC1C1C,IAAIze,EAAK,EAQIu1C,EAAN,MAAMA,WAAwBjhB,IAqDnC,eAAakhB,CAAY/+B,GACvBrP,KAAKyW,SAAS23B,YAAc/+B,CAC9B,CA6CA,wBAAag6B,CAAqBxgC,GAChC7I,KAAKgpC,uBAA2C,UAAlB7/B,OAAON,GACrC7I,KAAKspC,2BAA2BtpC,KAAKgpC,uBACvC,CAEA,sBAAWqF,GACT,OAAOruC,KAAKsuC,kBAAkBzlC,OAAS7I,KAAKsuC,kBAAkBzlC,OAAOvI,SAAWN,KAAKsM,MAAMhM,MAC7F,CAEA,qBAAWguC,GACT,OAAOtuC,KAAKwjB,UAAUG,QAAU3jB,KAAKwjB,UAAUG,QAAU,IAAIge,KAAY,GAAI3hC,KAAKwjB,UAAU+d,UAAWvhC,KAAKwjB,UAAUge,eACxH,CAIAzhC,YAAgCyjB,EAAgCnY,IAC9DkiB,MAAM/J,EAAWnY,IAD6CrL,KAAAqL,MAlHvDrL,KAAApH,GAAK,cAAcA,IAGnBoH,KAAAuuC,WAAY,EAEZvuC,KAAAwuC,aAAe,kBAMfxuC,KAAAyuC,iBAAqC,OAErCzuC,KAAAgW,SAAU,EACVhW,KAAA0uC,eAAgB,EAChB1uC,KAAA2uC,cAAe,EACf3uC,KAAA4uC,aAAc,EAId5uC,KAAA6uC,aAAe,EAEf7uC,KAAA8uC,iBAAkB,EAClB9uC,KAAA+uC,wBAAyB,EACzB/uC,KAAAgvC,SAAW,KACXhvC,KAAAivC,UAAY,KACZjvC,KAAAkvC,kBAAmB,EACnBlvC,KAAAmvC,WAAa,KAEbnvC,KAAAovC,kBAAmB,EACnBpvC,KAAAqvC,WAAwC,GAExCrvC,KAAAghC,UAAW,EACXhhC,KAAAsvC,sBAAuB,EACvBtvC,KAAAuvC,cAAgB,EAChBvvC,KAAAwvC,oBAAqB,EACrBxvC,KAAAyvC,UAAaC,KAAuB,EACpC1vC,KAAA2vC,OAA0B,CAAC,UAC3B3vC,KAAA0e,UAAW,EACX1e,KAAA4vC,QAA6B,EAC7B5vC,KAAA6vC,YAAa,EACb7vC,KAAA8vC,WAAY,EACZ9vC,KAAA+vC,kBAAmB,EACnB/vC,KAAAw8B,OAAS,KACTx8B,KAAAgwC,aAAc,EAIPhwC,KAAA4hC,UAAW,EAUlB5hC,KAAAsM,MAAe,GACftM,KAAAiwC,oBAAqB,EAKdjwC,KAAAytB,WAAY,EAEZztB,KAAAkwC,UAAY,IAAIzvC,MACfT,KAAAmwC,WAAa,IAAI1vC,MAChBT,KAAAowC,YAAc,IAAI3vC,MACpBT,KAAAqwC,UAAY,IAAI5vC,MACfT,KAAAswC,WAAa,IAAI7vC,MAChBT,KAAAuwC,YAAc,IAAI9vC,MACnBT,KAAAwwC,WAAa,IAAI/vC,MACnBT,KAAAywC,SAAW,IAAIhwC,MACZT,KAAA0wC,YAAc,IAAIjwC,MAClBT,KAAA2wC,OAAS,IAAIlwC,MACRT,KAAA4wC,YAAc,IAAInwC,MAkB/BT,KAAA8jC,2BAA6B,2BAI/B9jC,KAAAgpC,wBAAyB,CAkBjC,CAEA/pB,YAAYC,GACNA,GAAS5S,OAAO8S,cAAgBpf,KAAKiwC,qBACvCjwC,KAAK6wC,iBACL7wC,KAAK8wC,kBAET,CAEAp1B,WACM1b,KAAKwjB,UAAUgmB,cACjBxpC,KAAKwjB,UAAUgmB,aAAa/kC,QAAKC,KAAe1E,OAAO2E,UAAU,IAAM3E,KAAKqL,GAAGkB,gBAE7EvM,KAAKwjB,UAAUimB,eACjBzpC,KAAKwjB,UAAUimB,cAAchlC,QAAKC,KAAe1E,OAAO2E,UAAU,IAAM3E,KAAKqL,GAAGkB,eAEpF,CAEA5L,kBACEX,KAAKspC,2BAA2BtpC,KAAKgpC,wBAEjChpC,KAAK0W,iBAAgB1W,KAAKyW,SAASC,eAAiB1W,KAAK0W,gBACzD1W,KAAK+wC,mBAAkB/wC,KAAKyW,SAASs6B,iBAAmB/wC,KAAK+wC,kBACjE/wC,KAAKyW,SAASu6B,cAAgBhxC,KAAKixC,oBAC/BjxC,KAAKkxC,qBAAoBlxC,KAAKyW,SAASy6B,mBAAqBlxC,KAAKkxC,oBACjElxC,KAAKyiB,iBAAgBziB,KAAKyW,SAASgM,eAAiBziB,KAAKyiB,gBAC7DziB,KAAKyW,SAAS06B,eAAiBnxC,KAAKmxC,eACpCnxC,KAAKyW,SAAS26B,iBAAmBpxC,KAAKoxC,iBACtCpxC,KAAKyW,SAAS46B,qBAAuBrxC,KAAKqxC,qBAC1CrxC,KAAKyW,SAAS66B,oBAAsBtxC,KAAKsxC,oBACzCtxC,KAAKyW,SAAS86B,YAAcvxC,KAAKuxC,YACjCvxC,KAAKyW,SAAS+6B,uBAAyBxxC,KAAKwxC,uBAC5CxxC,KAAKyW,SAASxI,UAAYjO,KAAKiO,UAE/BjO,KAAKyW,SAAS9V,iBAChB,CAEA0N,cACMrO,KAAKyxC,eACPzxC,KAAK0xC,qBAAqB7Q,oBAAoB,SAAU7gC,KAAKyxC,cAEjE,CAEAE,sBAAyB3wC,GAGrBhB,KAAK6I,MAFH7H,GAAShB,KAAKsW,UAEHtW,KAAK0e,UAAYhZ,MAAM8+B,QAAQxjC,GAASA,EAAMkO,IAAKkV,IAAMA,GAAEpkB,KAAKsW,YAActV,EAAMhB,KAAKsW,WAEzFtV,EAGfhB,KAAKowC,YAAYnvC,KAAKjB,KAAK6I,MAC7B,CAEAygC,2BAA2Bnc,GACzB,GAAIntB,KAAKwjB,WAAWG,UAAqB,IAAVwJ,EAAiB,CAC9C,MAAM8c,GAAmBC,KAAWC,QAAQ,CAACnqC,KAAKwjB,UAAUG,QAAQ4d,UAAWgB,KAAc6H,sBAC7FpqC,KAAKwjB,UAAUG,QAAQ0mB,cAAcJ,IAEzC,CAEA2H,aACE1V,eAAe,KACb,MAAM2V,EAAkB7hC,SAAS3M,cAAc,IAAIrD,KAAKyW,SAASq7B,cAE7DD,GACF7xC,KAAK+xC,sBAAsBF,GAG7B7xC,KAAKgyC,cAAY,GAGnBhyC,KAAKqwC,UAAUpvC,MACjB,CAEAgxC,YAAYjxC,GACNhB,KAAKiwC,qBACPjwC,KAAK6wC,iBACL7wC,KAAK8wC,mBAEH9wC,KAAKovC,kBACPpvC,KAAKkyC,cAEPlyC,KAAKswC,WAAWrvC,KAAKD,GACrBhB,KAAKkyC,aACP,CAEApB,kBACE,MAAM3vC,EAAQ,GACRgxC,GAAO,GAEbnyC,KAAKsM,MAAMhL,QAASyS,KAClB,MAAMlL,GAAQkL,GAAK/T,KAAKsW,WAEpBtW,KAAK6I,OAAOL,SAASK,IACvB1H,EAAM8H,KAAK8K,IAEXo+B,GAAKlpC,KAAK8K,GAAI,GAGlB/T,KAAKsM,MAAQ,IAAInL,KAAUgxC,GAC7B,CAEAtB,iBACE7wC,KAAKsM,MAAQtM,KAAKsM,MAAM8lC,KAAK,CAACn4B,EAAG6E,KAAM7E,EAAEja,KAAKsX,WAAW+6B,cAAcvzB,GAAE9e,KAAKsX,aAClD,iBAAjBtX,KAAKguC,SACdhuC,KAAKsM,MAAM8lC,KAAK,CAACn4B,EAAG6E,KAAM7E,EAAEja,KAAKguC,SAAmBqE,cAAcvzB,GAAE9e,KAAKguC,UAE7E,CAEA+D,sBAAsBF,GACpBA,EAAgBxtC,UAAUG,OAAO,gBACjCqtC,EAAgBxtC,UAAUG,OAAO,gBACjC,MAAMT,GAAW/D,KAAK1I,KAAO,aAAe0I,KAAK1I,KAAO,GACpDyM,IACF8tC,EAAgBxtC,UAAUC,IAAIP,GAElC,CAEOuuC,SAAStxC,GACdhB,KAAKwtC,YAAcxsC,CACrB,CAEOkxC,cACLlyC,KAAKwtC,YAAc,IACrB,CAEOS,oBAAoBtO,GACzB,MAAMkK,GAAS7pC,KAAKsuC,kBAAkBzlC,MAEtC,OAAO82B,EAAQA,EAAMn6B,UAAU2I,KAAMokC,IAAU1I,IAAQrhC,SAAS+pC,GAAM1pC,MAAMA,QAAUghC,IAAQvpC,SAAWN,KAAKquC,kBAChH,CAEQ2D,eACFhyC,KAAKyxC,eACPzxC,KAAK0xC,qBAAqB7Q,oBAAoB,SAAU7gC,KAAKyxC,eAG1DzxC,KAAK2vC,OAAOrvC,SAIjBN,KAAKyxC,cAAgB,KACnBzxC,KAAK2vC,OAAOruC,QAASkxC,IAGZ,WADCA,GAEJxyC,KAAKyyC,sBAMV,EAGHzyC,KAAK0xC,qBAAqB/Q,iBAAiB,SAAU3gC,KAAKyxC,eAC5D,CAEQgB,qBACFzyC,KAAKyW,SAAS+lB,QAChBx8B,KAAKyW,SAAS/I,QAGZ1N,KAAKyxC,eACPzxC,KAAK0xC,qBAAqB7Q,oBAAoB,SAAU7gC,KAAKyxC,cAEjE,CAEQC,qBACN,MAAM37B,EAAW/V,KAAK+V,SAEtB,OAAKA,GAAyB,SAAbA,EAIA,mBAAbA,EACK/F,SAAS3M,cAAc0S,IAAW1S,cAAc,gBAAkB2M,SAAS0iC,KAG5D,iBAAb38B,EACF/F,SAAS3M,cAAc0S,GAGzB,KAXE/F,SAAS0iC,IAYpB,mDA9SWvE,IAAex3C,MAAAqd,KAAA,IAAArd,aAAA,oCAAfw3C,GAAeluC,UAAA,iBAAAsB,eAAA,SAAAC,GAAAC,GAAAC,OAAA,EAAAF,cA+EZ0V,KAAyB,EAAUC,gBACnCw7B,KAA2B,EAAUx7B,gBACrCy7B,KAAwB,EAAUz7B,gBAClC07B,KAA6B,EAAU17B,gBACvC27B,KAAyB,EAAU37B,gBACnC47B,KAAyB,EAAU57B,gBACnC67B,KAA2B,EAAU77B,gBACrC87B,KAA+B,EAAU97B,gBACzC+7B,KAA8B,EAAU/7B,gBACxCg8B,KAAsB,EAAUh8B,gBAChCi8B,KAAiC,EAAUj8B,gBAExCk8B,KAAiB,6oBAEvBj8B,KAAiB,ohGD9J9BzgB,MAAA,WACEA,MAAA,EAAA28C,EAAA,0BAaA38C,MAAA,iBAAWA,MAAA,eAAAG,IAAA,OAAO2K,GAAAgvC,SAAAxvC,KAAAnK,GAAqB,EAA5BH,CAA6B,gBAAAG,IAAA,OACrB2K,GAAAyuC,UAAAjvC,KAAAnK,GAAsB,EAD9BH,CAA6B,kBAAAG,IAAA,OAEnB2K,GAAAkwC,sBAAA76C,GAA6B,EAFvCH,CAA6B,iBAAAG,IAAA,OAGpB2K,GAAA+uC,WAAAvvC,KAAAnK,GAAuB,EAHhCH,CAA6B,iBAAAG,IAAA,OAIpB2K,GAAAwwC,YAAAn7C,GAAmB,EAJ5BH,CAA6B,iBAAAG,IAAA,OAKpB2K,GAAA0uC,WAAAlvC,KAAAnK,GAAuB,EALhCH,CAA6B,yBAMrB8K,GAAAmwC,YAAY,EANpBj7C,CAA6B,kBAAAG,IAAA,OAOnB2K,GAAAivC,YAAAzvC,KAAAnK,GAAwB,EAPlCH,CAA6B,kBAAAG,IAAA,OAQnB2K,GAAA6wC,SAAAx7C,GAAgB,EAR1BH,CAA6B,kBAAAG,IAAA,OASnB2K,GAAAkvC,OAAA1vC,KAAAnK,GAAmB,EAT7BH,CAA6B,gCAUd8K,GAAAmvC,YAAA3vC,MAAkB,GA2C1CtK,MAAA,EAAA48C,EAAA,YAaA58C,MAAA,EAAA68C,GAAA,sBAcA78C,MAAA,EAAA88C,GAAA,qBAaF98C,QAEAA,MAAA,wBAEFA,gBA9GoBA,MAAA,GAAAA,MAAA,OAAA8K,GAAAoc,OAwBPlnB,MAAA,GAAAA,MAAA,KAAA8K,GAAA7I,GAAAjC,CAAS,aAAA8K,GAAAiyC,WAAT/8C,CAAS,SAAA8K,GAAAmuC,OAATj5C,CAAS,aAAA8K,GAAAkyC,WAATh9C,CAAS,WAAA8K,GAAAsU,SAATpf,CAAS,YAAA8K,GAAA6V,UAAT3gB,CAAS,YAAA8K,GAAA6U,UAAT3f,CAAS,eAAA8K,GAAAmyC,aAATj9C,CAAS,mBAAA8K,GAAAytC,mBAAAztC,GAAA2tC,iBAATz4C,CAAS,mBAAA8K,GAAAoyC,iBAATl9C,CAAS,YAAA8K,GAAAquC,UAATn5C,CAAS,iBAAA8K,GAAAsuC,kBAAAtuC,GAAAitC,cAAT/3C,CAAS,mBAAA8K,GAAAgtC,iBAAT93C,CAAS,cAAA8K,GAAA6sC,kBAAT33C,CAAS,UAAA8K,GAAAusC,QAATr3C,CAAS,eAAA8K,GAAAktC,aAATh4C,CAAS,SAAA8K,GAAA+6B,OAAT7lC,CAAS,QAAA8K,GAAA6K,MAAT3V,CAAS,aAAA8K,GAAA7I,GAATjC,CAAS,cAAA8K,GAAAqyC,YAATn9C,CAAS,UAAA8K,GAAAuU,QAATrf,CAAS,YAAA8K,GAAA8sC,UAAT53C,CAAS,mBAAA8K,GAAAsyC,iBAATp9C,CAAS,WAAA8K,GAAAid,SAAT/nB,CAAS,UAAAA,MAAA,GAAA8pB,GAAA,OAAAhf,GAAAnK,KAAA,OAAAmK,GAAAnK,KAAAmK,GAAAsuC,iBAAAtuC,GAAAuuC,aAATr5C,CAAS,eAAA8K,GAAA+sC,aAAT73C,CAAS,cAAA8K,GAAA8J,YAAT5U,CAAS,WAAA8K,GAAA+qB,cAAT71B,CAAS,WAAA8K,GAAAutC,SAATr4C,CAAS,aAAA8K,GAAAouC,WAATl5C,CAAS,yBAAA8K,GAAAstC,uBAATp4C,CAAS,kBAAA8K,GAAAqtC,gBAATn4C,CAAS,mBAAA8K,GAAAuyC,iBAATr9C,CAAS,YAAA8K,GAAA2lC,UAATzwC,CAAS,gBAAA8K,GAAAwyC,eA0CJt9C,MAAA,GAAAA,MAAA,OAAA8K,GAAA2tC,kBAaCz4C,MAAA,GAAAA,MAAA,OAAA8K,GAAAsuC,kBA6BCp5C,MAAA,GAAAA,MAAA,SAAA8K,GAAAs2B,wHC5CPoW,KAAepsC,MAAA,IAN3BC,QAAY,EAAEkyC,EAAAhyC,IAAA,qBAyH8B47B,KAAyB/2B,SAnHzDonC,mIC1Cb,IAAagG,EAAY,MAAnB,MAAOA,EACXp0C,cACE,iDAFSo0C,EAAY,oCAAZA,GAAY,uCAJbhtC,KAAcsO,KAAa2+B,KAAgB1lB,IAAiB6E,KAAqBlsB,IAAgBgtC,IAChFD,OAAc,SAG9BD,CAAY,8JCAvBx9C,MAAA,yCAQEA,MAAA,mBAOEA,MAAA,GACFA,iCAFYA,MAAA,QAAAgT,GAAA2qC,aALA39C,MAAA,oCAAAgT,GAAA4qC,gBACA59C,MAAA,yBAAAgT,GAAA4qC,eAAA,eAAA59C,CAA8D,WAAAgT,GAAA6iB,cAA9D71B,CAA8D,OAAAgT,GAAAikC,SAAA,mBAA9Dj3C,CAA8D,OAAAgT,GAAAkR,QAAA25B,IAKxE79C,MAAA,GAAAA,MAAA,IAAAgT,GAAAikC,SAAAjkC,GAAA8qC,OAAAC,GAAA/qC,GAAA8qC,OAAAE,IAAA,iDASEh+C,MAAA,EAAAi+C,EAAA,0FANJj+C,MAAA,YAAAA,CAG2C,aAGvCA,MAAA,EAAAk+C,EAAA,aACFl+C,gDALIA,MAAA,YAAAmmB,GAAA0P,cAAA71B,CAAiC,gBAAAmmB,GAAA2E,cAG/B9qB,MAAA,GAAAA,MAAA,UAAAmmB,GAAAg4B,gBACUn+C,MAAA,GAAAA,MAAA,mBAAAmmB,GAAAtC,WAAAsC,GAAAe,OAAAf,GAAAe,MAAAF,GAAAhnB,CAA2D,0BAAAA,MAAA,EAAA0gB,EAAAyF,GAAAmR,4CAtB/Et3B,MAAA,aAMEA,MAAA,EAAAo+C,EAAA,qBAUAp+C,MAAA,EAAAq+C,EAAA,eASFr+C,gCAvBMA,MAAA,qBAAAoB,GAAAw8C,eAAA59C,CAA6C,kBAAAoB,GAAA0pB,aAA7C9qB,CAA6C,QAAAoB,GAAAk9C,aAAA,SAAAl9C,GAAAm9C,uBAIpCv+C,MAAA,GAAAA,MAAA,OAAAoB,GAAAo9C,YAUNx+C,MAAA,GAAAA,MAAA,OAAAoB,GAAA8lB,oCAeXlnB,MAAA,YAMEA,MAAA,GACFA,gCALKA,MAAA,WAAAikB,GAAA2R,gBAAA51B,CAAkC,YAAAikB,GAAA4R,cAAlC71B,CAAkC,oBAAAikB,GAAAoT,eAGlCr3B,MAAA,UAAAikB,GAAA6R,iBACH91B,MAAA,GAAAA,MAAA,IAAAikB,GAAA8R,SAAA,wDAGF/1B,MAAA,YAKEA,MAAA,EAAAy+C,GAAA,sBACFz+C,gCAJKA,MAAA,WAAAgmB,GAAAiQ,mBAAAj2B,CAAqC,oBAAAgmB,GAAAqR,eAErCr3B,MAAA,UAAAgmB,GAAAkQ,oBACUl2B,MAAA,GAAAA,MAAA,mBAAAgmB,GAAA04B,oBAAAp9C,uCAIbtB,MAAA,0BAAAA,MAAA,IAAAK,GAAA6mB,MAAA,8DClDK,IAAMy3B,EAAmB,MAA1B,MAAOA,GAEXv1C,YAAmB9H,IAAA+H,KAAA/H,YADV+H,KAAAgtB,MAAO,CACgC,mDAFrCsoB,IAAmB3+C,aAAA,oCAAnB2+C,GAAmBr1C,UAAA,gCAAA8d,OAAA,CAAAiP,KAAA,kBAAnBsoB,EAAmB,KAIhC,IAAKb,EAAL,SAAKA,IACHA,UAAAC,GAAA,KACAD,GAAAE,IAAA,MAFGF,EAGL,CAHA,CAAKA,GAAM,IAWJ,IAAMc,EAAkB,MAAzB,MAAOA,WAA0BroB,IAgBrC,eAAaonB,CAAYzrC,KACvB,EAAKjI,SAAMiI,MACT7I,KAAKw1C,aAAex1C,KAAKy1C,eAAe5sC,IAE5C,CACA,eAAIyrC,GACF,OAAOt0C,KAAKw1C,YACd,CA2EAz1C,YAAgCyjB,GAAgCnY,IAC9DkiB,MAAM/J,GAAWnY,IAD6CrL,KAAAqL,MAjGhDrL,KAAAytB,WAAY,EAEpBztB,KAAAw1C,aAAgC,OAExBx1C,KAAA6a,QAAUA,KACV7a,KAAAy0C,OAASA,EACTz0C,KAAAwa,WAAaA,KAEtBxa,KAAA80C,eAAiB,GAkBf90C,KAAAm1C,YAAa,EAGbn1C,KAAAwtB,cAAe,EACfxtB,KAAAusB,iBAAkB,EAElBvsB,KAAA4sB,oBAAqB,EAGd5sB,KAAA4tC,UAAW,EAQX5tC,KAAAyhB,cAAe,EAiBtBzhB,KAAAuuB,aAAe,GAKdvuB,KAAAU,OAAS,IAAID,MAOPT,KAAAguB,cAAkC,QAIzChuB,KAAAu0C,eAAmC,OAInCv0C,KAAAi1C,aAAc,EAIdj1C,KAAAk1C,sBAA0C,OAEzCl1C,KAAA01C,aAA8F,IAAIj1C,MAKlGT,KAAA21C,YAAqC,IAAIl1C,MAkE3CT,KAAAy1C,eAAkBpsB,IAGH,iBAAVA,IAAwC,iBAAVA,IAAsB,IAAI3hB,OAFzC,UAEmEu4B,KAAK5W,IACzF,GAAGA,OAEE,WAAVA,GACKA,GAEF,EAnET,CAEA3N,WACE1b,KAAK41C,sBACP,CAEAhnC,WAAW/F,IACT7I,KAAK4tC,SAAW/kC,EAClB,CAEAoW,YAAYC,KACNA,GAAQ6O,WAAa/tB,KAAK6d,QAC5B7d,KAAK41C,sBAET,CAOAjoB,aAAa3sB,IAEX,GADAA,GAAMgJ,mBACDhK,KAAKghC,SAAU,CAClB,IAAI6U,IAAgB,EAWpB,GAVA71C,KAAK01C,aAAaz0C,KAAK,CACrBme,aAAcpf,KAAK4tC,SACnBkI,UAAW90C,GAAMsF,OAAO5I,QACxBq4C,KAAMA,KACJF,IAAgB,EAChB70C,GAAM2O,iBACN3O,GAAMg1C,2BACNh1C,GAAMsF,OAAO5I,QAAUsC,KAAK4tC,aAG3BiI,GAAe,OAAO,EAC3B71C,KAAK4tC,UAAY5tC,KAAK4tC,SACtB5tC,KAAKU,OAAOO,KAAKD,IACbhB,KAAK2W,kBACP3W,KAAK2W,iBAAiB3W,KAAK4tC,UAE7B5tC,KAAK21C,YAAY10C,KAAKjB,KAAK4tC,UAE/B,CAEA9tB,YAAY9e,IACVhB,KAAKghC,UAAYhgC,GAAM2O,iBACvB3O,GAAMgJ,iBACR,CAEAoF,iBAAiBC,IACfrP,KAAK2W,iBAAmBtH,EAC1B,CAEAC,kBAAkBD,IAChBrP,KAAKiX,kBAAoB5H,EAC3B,CAcAumC,uBACE51C,KAAK80C,eAAiB90C,KAAK+tB,UAAY,QAAU/tB,KAAK+tB,UAAUvc,WAAa,EAC/E,mDA5KW+jC,IAAiB5+C,MAAAqd,KAAA,IAAArd,aAAA,oCAAjB4+C,GAAiBt1C,UAAA,oCAAAsB,eAAA,SAAAC,GAAAC,GAAAC,OAAA,EAAAF,aAgGd8zC,EAAmB,EAAwBA,+0DDvI3D3+C,MAAA,YAAAA,CAMmC,eAS1BA,MAAA,kBAAAG,IAAA,OAAU2K,GAAAksB,aAAA72B,GAAoB,EAA9BH,CAA+B,iBAAAG,IAAA,OACtB2K,GAAAqe,YAAAhpB,GAAmB,GARnCH,QAWAA,MAAA,YACEA,MAAA,YACFA,QAEAA,MAAA,EAAAs/C,EAAA,+BAEAt/C,MAAA,EAAAu/C,EAAA,cA0BFv/C,QAEAA,MAAA,6DAGAA,MAAA,EAAAw/C,EAAA,aASAx/C,MAAA,GAAAy/C,GAAA,aAQAz/C,MAAA,GAAA0/C,GAAA,yBAAA1/C,eAvEOA,MAAA,mBAAA8K,GAAAgsB,UAAA92B,CAAoC,oBAAA8K,GAAAusB,cAApCr3B,CAAoC,YAAA8K,GAAA+qB,cAApC71B,CAAoC,YAAA8K,GAAA0zB,cAApCx+B,CAAoC,QAAA8K,GAAAwzC,aADpCt+C,MAAA,UAAA8K,GAAA8sB,cASE53B,MAAA,GAAAA,MAAA,KAAA8K,GAAA7I,GAAAjC,CAAS,WAAA8K,GAAA+qB,cAAT71B,CAAS,WAAA8K,GAAA0zB,cAATx+B,CAAS,UAAA8K,GAAAmsC,SAATj3C,CAAS,OAAA8K,GAAAyzB,MAaTv+B,MAAA,GAAAA,MAAA,OAAAA,MAAA,KAAA8K,GAAA60C,WAEA3/C,MAAA,GAAAA,MAAA,OAAA8K,GAAA0zC,YAAA1zC,GAAAoc,OA+BHlnB,MAAA,GAAAA,MAAA,OAAA8K,GAAAirB,WAAAjrB,GAAA+rB,cASA72B,MAAA,GAAAA,MAAA,OAAA8K,GAAA4zC,sBAAA5zC,GAAA4zC,oBAAAroB,yEC1BOuoB,EAAkB,qGC5BxB,IAAMgB,EAAc,MAArB,MAAOA,EACXx2C,cACE,iDAFSw2C,EAAc,oCAAdA,GAAc,uCAJfpvC,KAAcsO,KAAa+gC,MAAY,SAItCD,CAAc,mSCLzB5/C,MAAA,wBAcEA,MAAA,+DAGAA,MAAA,6DAGFA,gCAnBiBA,MAAA,QAAAU,GAAAwmB,MAAAlnB,CAAe,KAAAU,GAAAuB,GAAfjC,CAAe,WAAAU,GAAAm1B,cAAf71B,CAAe,YAAAU,GAAAo2B,UAAf92B,CAAe,OAAAU,GAAAyiB,KAAfnjB,CAAe,YAAAU,GAAA02B,UAAfp3B,CAAe,gBAAAU,GAAA62B,cAAfv3B,CAAe,eAAAU,GAAA82B,aAAfx3B,CAAe,gBAAAU,GAAA+2B,cAAfz3B,CAAe,WAAAU,GAAAg3B,sBAAAh3B,GAAAi3B,iBAAf33B,CAAe,eAAAU,GAAAk3B,aAAf53B,CAAe,sBAAAU,GAAAm3B,mEA8B9B73B,MAAA,GACEA,MAAA,gBAQSA,MAAA,4BAAA8/C,GAAA9/C,MAAAmT,IAAAN,MAAAO,GAAApT,QAAA,OAAYA,MAAAoT,GAAAkoC,YAAAwE,IAAkB,GACrC9/C,MAAA,GACFA,QACFA,kDATWA,MAAA,GAAAA,MAAA,eAAAkT,GAAAkuB,OAAA,KAAAluB,GAAAkuB,OAAAz3B,OAAA3J,CAAoC,kBAAAkT,GAAAkuB,OAAA,KAAAluB,GAAAkuB,OAAAz3B,QAFpC3J,MAAA,cAAAA,CAAiB,cAAjBA,CAAiB,WAAAoB,GAAAie,SAAAnM,GAAArR,UAAAT,GAAAS,SAAjB7B,CAAiB,SAAAkT,GAAA2V,OAAjB7oB,CAAiB,KAAAoB,GAAA2+C,SAAA7sC,GAAAqrB,KAAjBv+B,CAAiB,OAAAoB,GAAAT,MASxBX,MAAA,GAAAA,MAAA,IAAAkT,GAAAqrB,KAAA,kDAIJv+B,MAAA,GACEA,MAAA,WAAAA,CAA0C,mBAG5BA,MAAA,mBAAAA,MAAAggD,IAAA,MAAAxsC,GAAAxT,QAAA,OAAAA,MAAAwT,GAAAysC,KAAAzsC,GAAA0sC,SAAAC,OAAA,GACangD,MAAA,cAAQA,UAErCA,kCALgBA,MAAA,GAAAA,MAAA,cAAAA,CAAiB,WAAAikB,GAAApiB,uDAOjC7B,MAAA,GACEA,MAAA,mBAEYA,MAAA,mBAAAA,MAAAogD,IAAA,MAAAz3C,GAAA3I,QAAA,OAAAA,MAAA2I,GAAAs3C,KAAAt3C,GAAAu3C,SAAAG,UAAA,GAEargD,MAAA,cAAQA,QACnCA,kCALcA,MAAA,GAAAA,MAAA,cAAAA,CAAiB,WAAAgmB,GAAAnkB,uDAO/B7B,MAAA,iBAaOA,MAAA,kBAAAA,MAAAsgD,IAAA,MAAAp6C,GAAAlG,QAAA,OAAQA,MAAAkG,GAAAy3B,aAAY,EAApB39B,CAAqB,mBAAAA,MAAAsgD,IAAA,MAAAn+C,GAAAnC,QAAA,OACZA,MAAAmC,GAAA07B,cAAa,EADtB79B,CAAqB,iBAAAG,IAAAH,MAAAsgD,IAAA,MAAA58C,GAAA1D,QAAA,OAEZA,MAAA0D,GAAAszB,aAAA72B,IAAoB,EAF7BH,CAAqB,mBAAAG,IAAAH,MAAAsgD,IAAA,MAAAC,GAAAvgD,QAAA,OAGVA,MAAAugD,GAAAC,cAAArgD,IAAqB,GAhBvCH,kCAGOA,MAAA,WAAAC,GAAAwgD,aAAAz0B,SAEAhsB,MAAA,cAAAC,GAAAwgD,aAAAzgD,CAA4B,WAAAC,GAAA63B,SAA5B93B,CAA4B,cAAAC,GAAA2U,YAA5B5U,CAA4B,UAAAC,GAAAq+B,YAA5Bt+B,CAA4B,KAAAC,GAAAgC,GAA5BjC,CAA4B,qBAA5BA,CAA4B,WAAAC,GAAAof,SAE5Brf,MAAA,mBAAAC,GAAAgC,GAAAjC,CAA4B,kBAAAC,GAAAinB,gCAYnClnB,MAAA,yCAIFA,MAAA,gDACkBA,MAAA,SAAAgT,GAAAw3B,UAAAx3B,GAAAga,QAAAoU,uDAOhBphC,MAAA,mBAGYA,MAAA,mBAAAA,MAAA0gD,IAAA,MAAAnQ,GAAAvwC,MAAA,UAASA,MAAAuwC,GAAAoQ,wBAAuB,GAG1C3gD,MAAA,aACEA,MAAA,GACFA,qCANUA,MAAA,kCAAAA,CAAmC,aAK3CA,MAAA,GAAAA,MAAA,IAAAgE,GAAA48C,aAAA,IAAA58C,GAAAy8C,aAAAvuC,MAAA,mDAIJlS,MAAA,eAGQA,MAAA,yBAAA6gD,GAAA7gD,MAAA8gD,IAAAv+C,UAAAw+C,GAAA/gD,MAAA,UAASA,MAAA+gD,GAAAC,sBAAAH,IAAiC,GAChD7gD,MAAA,aACEA,MAAA,GACFA,yCADEA,MAAA,GAAAA,MAAA,IAAA6gD,GAAA,mCArBN7gD,MAAA,YAKEA,MAAA,EAAAihD,GAAA,qBAWAjhD,MAAA,EAAAkhD,GAAA,iBASFlhD,4CAxBKA,MAAA,YAAAc,GAAAqgD,YAAA,IAAArgD,GAAAqgD,YAAA,UAIUnhD,MAAA,GAAAA,MAAA,OAAAmmB,GAAAy6B,cAAAz6B,GAAAs6B,aAAAvuC,QAAAiU,GAAAi7B,oBAAAvvC,SAAAsU,GAAAs6B,aAAAvuC,QAWkBlS,MAAA,GAAAA,MAAA,UAAAmmB,GAAAi7B,wHCnFnC,IAAKC,GAAL,SAAKA,IACHA,UAAAhB,UAAA,YACAgB,GAAAlB,OAAA,SAFGkB,EAGL,CAHA,CAAKA,IAAI,IAWF,IAAMC,GAAN,MAAMA,WAA2B/qB,IAgCtC,eAAagrB,CAAYA,IACvBl4C,KAAKm4C,kBAAoBD,GACzBl4C,KAAKo4C,mBAAmBp4C,KAAKo3C,aAAavuC,MAC5C,CA0BA9I,YAC0Cs4C,GACV70B,GACRphB,IAEtBmrB,MAAM/J,GAAWphB,IAJuBpC,KAAAq4C,oBACVr4C,KAAAwjB,aACRxjB,KAAAoC,SA5DRpC,KAAA02C,SAAW,iBACpB12C,KAAAqgC,WAAY,EACZrgC,KAAA+3C,oBAAsB,GACtB/3C,KAAAo3C,aAAe,IAAIzV,KAAY,IAC/B3hC,KAAAs4C,cAAgB,0BAEft4C,KAAAm4C,kBAAoB,GAGrBn4C,KAAA42C,KAAaoB,GAAKhB,UAClBh3C,KAAAu4C,kBAA2C,IAAI5sC,IAAgB,MAC/D3L,KAAAupB,aAAe,KACNvpB,KAAA62C,SAAWmB,GAcXh4C,KAAAytB,WAAY,EAUnBztB,KAAAw4C,UAAW,EAEXx4C,KAAAy4C,gBAAiB,EAUjBz4C,KAAA04C,WAAuB,CAAC,KAEvB14C,KAAA24C,WAAa,IAAIl4C,MAEjBT,KAAA44C,QAAgC,IAAIn4C,KAW9C,CAEAib,WACM1b,KAAKq4C,iBACHr4C,KAAK64C,gBACP74C,KAAK2jB,QAAU3jB,KAAKq4C,iBAAiB10B,QAAQlV,IAAIzO,KAAK64C,iBAEtD/yC,QAAQiU,KAAK,qCAGf/Z,KAAK2jB,QAAU3jB,KAAKwjB,UAAUG,QAGhC3jB,KAAKo4C,mBAAmBp4C,KAAKo3C,aAAavuC,OAE1C7I,KAAKo3C,aAAa5N,aAAa/kC,QAAKC,KAAe1E,OAAO2E,UAAWwH,KACnEnM,KAAKo4C,mBAAmBjsC,IACxBnM,KAAK24C,WAAW13C,KAAKjB,KAAKo3C,aAAalW,MAAQ/0B,GAAM,MACrDnM,KAAKyN,UAAU8W,MAAI,GAGrBvkB,KAAK2jB,QAAQ6lB,aAAa/kC,QACxBq0C,KAAqB,CAAC78B,GAAMyf,QAAY3J,WAAQ9V,GAAMyf,MAAQ,EAC9Dh3B,KAAe1E,OACf2E,UAAWkE,KACPA,GAAMA,GAAMvI,OAAS,IAAI40B,OAASl1B,KAAKo3C,cAAcvuC,OACvD7I,KAAKo3C,aAAartB,WAAW,GAAE,GAInC/pB,KAAK2jB,QAAQ8lB,cAAchlC,QACzBC,KAAe1E,OACf2E,UAAWkE,KACX7I,KAAKoC,MAAM2C,eAAa,GAG1B/E,KAAK+4C,iBAAmB/4C,KAAK+4C,gBAC1Bt0C,QAAKC,KAAe1E,OACpB2E,UAAWq0C,KACVA,IAASh5C,KAAKo3C,aAAartB,WAAW,GAAI,CAAEkvB,WAAW,GAAO,EAEpE,CAEA5qC,cACErO,KAAKy4C,gBAAkBz4C,KAAK+oB,UAAU/C,YACxC,CAEA1X,qBACEtO,KAAKy4C,gBAAkBz4C,KAAKk5C,gBAC9B,CAEAA,iBAUEl5C,KAAK+oB,UAAU/C,aACfhmB,KAAK+oB,SAAW,IAAInB,iBAVHuxB,KACfn5C,KAAKu4C,kBAAkB5mC,KAAK,MAC5B3R,KAAKupB,aAAevpB,KAAKqe,UAAUzR,cAAc2c,aAE7CvpB,KAAKupB,aAAevpB,KAAKo5C,gBAC3Bp5C,KAAKu4C,kBAAkB5mC,KAAK3R,KAAK42C,KAAI,GAMzC52C,KAAK+oB,SAASlB,QAAQ7nB,KAAKqe,UAAUzR,cAAe,CAClDkb,YAAY,EACZC,WAAW,EACXC,SAAS,GAEb,CAEApZ,WAAWzC,IACTohB,MAAM3e,WAAWzC,IACjBnM,KAAK6I,MAAQsD,EACf,CAEA,eAAW8oB,GACT,OAAOjmB,OAAOia,QAAQjpB,KAAK06B,cACxB55B,OAAO,EAAC,CAAGkI,QAASA,IACpBkG,IAAI,EAAEC,MAAOA,IACbwrB,OAAO,CAAC36B,KAAKq5C,gBAAkBr5C,KAAK46B,WACzC,CAEA,kBAAYye,GACV,OAAOr5C,KAAKs5C,UAAY,gBAAkBt5C,KAAKs5C,UAAY,EAC7D,CAEOnC,eAAgB7wC,UAAQizC,aAC7B,GAAIA,KAAYC,KAAQ/nB,QAAUzxB,KAAKy5C,oBAAqB,CAC1D,MAAM5wC,GAAQ7I,KAAK05C,sBAAsBpzC,GAAOuC,OAE5C7I,KAAKo3C,aAAalW,QACpBlhC,KAAK4O,WAAW,IAAI5O,KAAK6I,SAAU7I,KAAK25C,uBAAuB9wC,MAC/D7I,KAAKo3C,aAAartB,WAAW,IAC7B/pB,KAAKo4C,mBAAmBp4C,KAAKo3C,aAAavuC,OAC1C7I,KAAK45C,YAAYhtC,eAAewD,SAIhCmpC,KAAYC,KAAQK,YAAc75C,KAAKo3C,aAAavuC,OAAS7I,KAAK6I,OAAOvI,SAC3EN,KAAK4O,WAAW5O,KAAK6I,MAAM4J,MAAM,EAAGzS,KAAK6I,MAAMvI,OAAS,IACxDN,KAAK45C,YAAYhtC,eAAewD,QAEpC,CAEOud,cAAernB,YACpB,GAAKtG,KAAK04C,WAAWvqC,KAAMmxB,IAAMh5B,GAAOuC,MAAMixC,SAASxa,OAAOt/B,KAAKy5C,oBAEnE,GAAInzC,GAAOuC,MAAMvI,OAAS,EAAG,CAC3B,MAAMuI,GAAQ7I,KAAK05C,sBAAsBpzC,GAAOuC,OAE5C7I,KAAKo3C,aAAalW,OACpBlhC,KAAK4O,WAAW,IAAI5O,KAAK6I,SAAU7I,KAAK25C,uBAAuB9wC,MAC/D7I,KAAK45C,YAAYhtC,eAAewD,QAChCpQ,KAAKo3C,aAAartB,WAAW,KAE7B/pB,KAAKo3C,aAAartB,WAAWzjB,GAAOuC,MAAMJ,UAAU,EAAGnC,GAAOuC,MAAMvI,OAAS,SAG/EN,KAAKo3C,aAAartB,WAAW,GAEjC,CAEQ2vB,sBAAsB7wC,IAC5B,IAAIkxC,GAAmB,CAAClxC,IAExB,OAAA7I,KAAK04C,WAAWp3C,QAAS04C,KACvB,MAAMC,GAAY,GAClBF,GAAOz4C,QAAS44C,IAAQD,GAAUhxC,QAAQixC,GAAInxC,MAAMixC,IAAKl5C,OAAOuL,WAChE0tC,GAASE,KAGJF,GAAO7qC,IAAKtL,MAAUsxB,KAAMtxB,GAAG4X,OAAQuc,OAAQ,KACxD,CAEOka,YAAYkI,IACjB,MAAMtxC,GAAQ,IAAI7I,KAAK6I,MAAM4J,MAAM,EAAG0nC,OAASn6C,KAAK6I,MAAM4J,MAAM0nC,GAAM,EAAGn6C,KAAK6I,MAAMvI,SAEpFN,KAAK4O,WAAW/F,IAChB7I,KAAK45C,YAAYhtC,eAAewD,QAChCpQ,KAAKo4C,mBAAmBp4C,KAAKo3C,aAAavuC,MAC5C,CAEOyrB,aACLt0B,KAAKqgC,WAAY,CACnB,CAEO7L,cACLx0B,KAAKqgC,WAAY,CACnB,CAEOsX,sBAAsByC,IAC3Bp6C,KAAK4O,WAAW,IAAI5O,KAAK6I,MAAW,CAAEqsB,KAAMklB,GAAYriB,OAAQ,MAChE/3B,KAAK45C,YAAYhtC,eAAewD,QAChCpQ,KAAKo3C,aAAartB,WAAW,IAC7B/pB,KAAKo4C,mBAAmBp4C,KAAKo3C,aAAavuC,MAC5C,CAEOyuC,wBACLt3C,KAAK44C,QAAQ33C,KAAKjB,KAAKo3C,aAAavuC,OACpC7I,KAAKo3C,aAAartB,WAAW,GAC/B,CAEQ4vB,uBAAuBU,IAC7B,OAAO30C,MAAMC,KAAK,IAAI5C,IAAIs3C,KAAWnrC,IAAKtL,MAAUsxB,KAAMl1B,KAAKs6C,gBAAgB12C,GAAGsxB,MAAO6C,OAAQn0B,GAAGm0B,SACtG,CAEQuiB,gBAAgB12C,IACtB,OAAOA,GAAGmF,MAAM,KAAKjI,OAAOuL,SAASrG,KAAK,IAC5C,CAEQoyC,mBAAmBjsC,IACzBnM,KAAK+3C,oBAAsB/3C,KAAKm4C,kBAAkBr3C,OAAQw+B,MAC/Ct/B,KAAK6I,OAAS,IAAIsF,KAAMjG,IAAQA,GAAIgtB,OAASoK,KAAMA,GAAE9sB,cAAchK,SAAS2D,GAAIqG,gBAG3F,MAAM+nC,GACJv6C,KAAKu3C,cACLv3C,KAAKo3C,aAAalW,OAClBlhC,KAAKo3C,aAAavuC,QACjB7I,KAAK6I,OAAOsF,KAAM4F,IAASA,GAAKmhB,OAASl1B,KAAKo3C,aAAavuC,SAC3D7I,KAAKm4C,mBAAmB3vC,SAASxI,KAAKo3C,aAAavuC,OAEtD7I,KAAKs4C,cACHt4C,KAAK+3C,oBAAoBz3C,QAAUi6C,GAA4B,0BAA4B,+BAC/F,mDA3PWtC,IAAkBthD,MAAAqd,KAAA,IAAArd,MAAAqd,KAAA,IAAArd,YAAA,uCAAlBshD,GAAkBh4C,UAAA,qBAAAiU,UAAA,SAAA1S,GAAAC,OAAA,EAAAD,qBA0DlB0xB,KAAW,26EDhGxBv8B,MAAA,WAMEA,MAAA,EAAA6jD,GAAA,0BAsBA7jD,MAAA,aASEA,MAAA,EAAA8jD,GAAA,uBAcA9jD,MAAA,EAAA+jD,EAAA,uCASA/jD,MAAA,EAAAgkD,EAAA,uCAQAhkD,MAAA,EAAAikD,EAAA,gBAmBAjkD,MAAA,GAAAkkD,EAAA,cAEFlkD,QAEAA,MAAA,GAAAmkD,GAAA,0BAGAnkD,MAAA,GAAAokD,GAAA,aA2BFpkD,gBAvHKA,MAAA,gBAAA8K,GAAA62C,eAIe3hD,MAAA,GAAAA,MAAA,OAAA8K,GAAAoc,OAAApc,GAAA7I,IA0BbjC,MAAA,GAAAA,MAAA,aAAA8K,GAAAm1C,OAAAn1C,GAAAo1C,SAAAG,UAAAv1C,GAAA23C,eAAA33C,GAAA8nB,aAAA,KAAA5yB,CAAmF,aAAA8K,GAAAu5C,UAAA,MAFnFrkD,MAAA,WAAA8K,GAAA4+B,UAAA1pC,CAA4B,kBAAA8K,GAAAg3C,eAA5B9hD,CAA4B,eAAA8K,GAAAkiB,QAAA,KAAAliB,GAAAkiB,QAAAhB,SAOAhsB,MAAA,GAAAA,MAAA,UAAA8K,GAAAoH,OAchBlS,MAAA,GAAAA,MAAA,OAAAA,MAAA,KAAA8K,GAAA82C,qBAAA92C,GAAAo1C,SAAAG,WASArgD,MAAA,GAAAA,MAAA,OAAAA,MAAA,KAAA8K,GAAA82C,qBAAA92C,GAAAo1C,SAAAC,QAQPngD,MAAA,GAAAA,MAAA,QAAA8K,GAAA+2C,UAmBD7hD,MAAA,GAAAA,MAAA,OAAA8K,GAAAuU,SAIUrf,MAAA,GAAAA,MAAA,OAAA8K,GAAAkiB,QAAAhB,SAGbhsB,MAAA,GAAAA,MAAA,QAAA8K,GAAA+2C,6ICxDKP,MAAkBl2C,MAAA,IAN9BC,QAAY,EAAEi5C,EAAA/4C,IAAA,qBAoE+Cg5C,KACjBpd,KACZ/2B,SAhEpBkxC,mQCrCXthD,MAAA,wBAaEA,MAAA,+DAEAA,MAAA,6DAEFA,gCAhBiBA,MAAA,QAAAU,GAAAwmB,MAAAlnB,CAAe,KAAAU,GAAAuB,GAAfjC,CAAe,WAAAU,GAAAm1B,cAAf71B,CAAe,OAAAU,GAAAyiB,KAAfnjB,CAAe,gBAAAU,GAAA62B,cAAfv3B,CAAe,eAAAU,GAAA82B,aAAfx3B,CAAe,gBAAAU,GAAA+2B,cAAfz3B,CAAe,YAAAU,GAAAo2B,UAAf92B,CAAe,WAAAU,GAAAg3B,sBAAAh3B,GAAAi3B,iBAAf33B,CAAe,eAAAU,GAAAk3B,aAAf53B,CAAe,sBAAAU,GAAAosC,yBAAf9sC,CAAe,YAAAU,GAAA02B,yDAmB9Bp3B,MAAA,6BAMsBA,MAAA,wBAAAA,MAAAI,IAAA,MAAAC,GAAAL,QAAA,OAAcA,MAAAK,GAAAyW,SAAAC,QAAgB,EAA9B/W,CAA+B,uBAAAG,IAAAH,MAAAI,IAAA,MAAA+lB,GAAAnmB,QAAA,OAChBA,MAAAmmB,GAAAgX,mBAAA7yB,KAAAnK,IAA+B,GACpEH,kCANsBA,MAAA,WAAAkpB,GAAA2M,cAAA71B,CAA0B,eAAAkpB,GAAAkU,QAA1Bp9B,CAA0B,OAAAkpB,GAAAmU,eAA1Br9B,CAA0B,OAAAkpB,GAAAvoB,iCAkD9CX,MAAA,YAEEA,MAAA,aACFA,sDAcFA,MAAA,6BAMsBA,MAAA,wBAAAA,MAAAihB,IAAA,MAAAlgB,GAAAf,QAAA,OAAcA,MAAAe,GAAA+V,SAAAC,QAAgB,EAA9B/W,CAA+B,uBAAAG,IAAAH,MAAAihB,IAAA,MAAA7N,GAAApT,QAAA,OAChBA,MAAAoT,GAAA4tB,kBAAA12B,KAAAnK,IAA8B,GACnEH,kCAPsBA,MAAA,eAAAgmB,GAAAkb,OAAAlhC,CAAuB,WAAAgmB,GAAA6P,cAAvB71B,CAAuB,OAAAgmB,GAAArlB,KAAvBX,CAAuB,OAAAgmB,GAAAmb,2CAU/CnhC,MAAA,gDAAkBA,MAAA,SAAAC,GAAAmhC,kMClEb,IAAMojB,GAAoB,MAA3B,MAAOA,WAA4BjuB,IAmFvC,SAAWrkB,CAAMiyB,IACf,IAAIsgB,GAAU,sBACVp7C,KAAKq7C,WAAWpb,KAAKnF,KACvBsgB,GAAUp7C,KAAKs7C,YAAYxgB,GAAM96B,KAAKu7C,eAAgBv7C,KAAKw7C,gBACvDx7C,KAAKy7C,oBAAmBz7C,KAAK07C,eAAiB5gB,IAClD96B,KAAKqtB,QAAUyN,KAEa96B,KAAKqtB,QAA7BrtB,KAAKy7C,kBAAkCz7C,KAAK07C,eAC5B5gB,GACpBsgB,GAAUp7C,KAAKs7C,YAAYt7C,KAAKqtB,QAASrtB,KAAKu7C,eAAgBv7C,KAAKw7C,iBAEjEx7C,KAAK2O,UACP3O,KAAK2O,SAASysC,IAEhBp7C,KAAKqL,GAAGkB,eACRvM,KAAKU,OAAOO,KAAKm6C,GACnB,CAKA,SAAWvyC,GACT,OAAO7I,KAAKqtB,OACd,CAKA,eAAW4H,GACT,MAAMwF,GAA8BzrB,OAAOkK,OACzC,CAAE,aAAclZ,KAAK4nC,aAAe5nC,KAAKgW,SACzChW,KAAK06B,cAEP,OAAO1rB,OAAOia,QAAQwR,IACnB35B,OAAO,EAAEqO,GAAGnG,QAASA,IACrBkG,IAAI,EAAEC,MAAOA,IACbwrB,OAAO,CAAC36B,KAAK46B,WAClB,CAEA76B,YAAgCyjB,GAAgCnY,IAC9DkiB,MAAM/J,GAAWnY,IAD6CrL,KAAAqL,MAtHxDrL,KAAAu7C,eAAiB,UACjBv7C,KAAAw7C,eAAiB,QACjBx7C,KAAA07C,eAAiB,WACjB17C,KAAAq7C,WAAa,IAAI3zC,OAAOi0C,MACtB37C,KAAA8jC,2BAA6B,+BAI9B9jC,KAAA+mC,aAAyFgC,IAAeA,GAAWn8B,cAMnH5M,KAAA47C,UAAW,EAIX57C,KAAA67C,aAAc,EASd77C,KAAA2kB,UAA4B,cAI5B3kB,KAAA87C,UAAW,EAIX97C,KAAA+7C,SAAW,EAIX/7C,KAAAg8C,WAAa,EAIbh8C,KAAAi8C,WAAa,EAIbj8C,KAAA4nC,aAAc,EAId5nC,KAAAgW,SAAU,EAIVhW,KAAA24B,cAAe,EAEf34B,KAAAy7C,mBAAoB,EAIbz7C,KAAAytB,WAAY,EAIlBztB,KAAAU,OAAS,IAAID,MAIbT,KAAA8zB,mBAAqB,IAAIrzB,MAIzBT,KAAA23B,kBAAoB,IAAIl3B,MAmDhCT,KAAKk8C,aAAe,CAClBrsB,KAAM7vB,KAAKu7C,eACXY,WAAW,EACXC,SAAS,EACTC,MAAM,EACNC,OAAQ,CACNC,GAAI,CACF1sB,KAAM2sB,iBACNC,gBAAiB,IACjB92C,KAAM,EACN+sB,GAAI,GACJiU,UAAW,GAEb+V,GAAI,CACF7sB,KAAM2sB,iBACN72C,KAAM,EACN+sB,GAAI,GACJ+pB,gBAAiB,KAEnBE,GAAI,CACF9sB,KAAM2sB,iBACNC,gBAAiB,IACjB92C,KAAM,EACN+sB,GAAI,GACJiU,UAAW,GAEbiW,EAAG,CACD/sB,KAAM2sB,gBACNK,KAAM,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,QAIzD,CAEAnhC,WACM1b,KAAK6d,QAAU7d,KAAKpH,IACtBkN,QAAQC,MAAM,yCAElB,CAEAsI,cACMrO,KAAKyN,UACPzN,KAAKyN,SAASY,aAElB,CAEAyuC,sBAAsB97C,IAChBhB,KAAKy7C,oBACPz6C,GAAMsF,OAAOuC,MAAQ7I,KAAK07C,eAC1B17C,KAAK6I,MAAQ7I,KAAK07C,gBAEpB17C,KAAKs0B,WAAWtzB,GAClB,CAMA4N,WAAWksB,IACT,MAAKl6B,SAAMk6B,IAMJvN,MAAM3e,WAAW5O,KAAK6I,WANX,CAChB,MAAMuyC,GAAUp7C,KAAKs7C,YAAYxgB,GAAM96B,KAAKw7C,eAAgBx7C,KAAKu7C,gBACjE12C,WAAW,KACL7E,KAAKy7C,mBAAqBz7C,KAAKq7C,WAAWpb,KAAKmb,MAAUp7C,KAAK07C,eAAiBN,MAErF7tB,MAAM3e,WAAWwsC,IAErB,CASAE,YAAYxgB,GAAcn1B,GAAc+sB,IACtC,OAAOqqB,IAAOjiB,GAAMn1B,IAAM,GAAOi5B,OAAOlM,GAC1C,CAEA/E,aAAa3sB,IAEXhB,KAAK6I,MAAQ7H,GAAMsF,OAAOuC,MAAMkE,QAAQ,IAAK,IAAIiwC,aACnD,mDAlNW7B,IAAmBxkD,MAAAqd,KAAA,IAAArd,aAAA,oCAAnBwkD,GAAmBl7C,UAAA,wCAAAiU,UAAA,SAAA1S,GAAAC,OAAA,EAAAD,mxEDnChC7K,MAAA,WACEA,MAAA,EAAAsmD,GAAA,0BAmBAtmD,MAAA,WACEA,MAAA,EAAAumD,GAAA,8BAUAvmD,MAAA,YAAAA,CAO6B,aAapBA,MAAA,gBAAAG,IAAA,OAAQ2K,GAAAq7C,sBAAAhmD,GAA6B,EAArCH,CAAsC,iBAAAG,IAAA,OAC7B2K,GAAA+yB,YAAA19B,GAAmB,EAD5BH,CAAsC,iBAAAG,IAAA,OAE7B2K,GAAAksB,aAAA72B,GAAoB,EAF7BH,CAAsC,kBAAAG,IAAA,OAG5B2K,GAAAksB,aAAA72B,GAAoB,GAdrCH,QAqBAA,MAAA,UAAAA,CAC4C,sBAO1BA,MAAA,yBAAAG,IAAA,OAAA2K,GAAAoH,MAAA/R,EAAA,GACkCH,UAGpDA,MAAA,EAAAwmD,GAAA,aAIFxmD,QAEAA,MAAA,8BAOsBA,MAAA,wBAAAA,MAAAmT,IAAA,MAAAmhB,GAAAt0B,MAAA,UAAcA,MAAAs0B,GAAAvd,QAAqB,EAAnC/W,CAAoC,yBAAAA,MAAAmT,IAAA,MAAAmhB,GAAAt0B,MAAA,UACrBA,MAAAs0B,GAAA1G,OAAoB,GACzD5tB,QAEAA,MAAA,GAAAymD,GAAA,+BASFzmD,QAEAA,MAAA,GAAA0mD,EAAA,2BAEF1mD,eAtGoBA,MAAA,GAAAA,MAAA,OAAA8K,GAAAoc,OAAApc,GAAA7I,IAoBOjC,MAAA,GAAAA,MAAA,OAAA8K,GAAAuyB,gBAAAvyB,GAAAsyB,SAWlBp9B,MAAA,GAAAA,MAAA,UAAAA,MAAA,GAAA0T,EAAA5I,GAAAnK,KAAA,uBAAAmK,GAAAnK,KAAA,IAAAX,CAAwD,YAAA8K,GAAAkjB,UAAxDhuB,CAAwD,gBAAA8K,GAAA62C,cAAxD3hD,CAAwD,uBASpDA,MAAA,GAAAA,MAAA,OAAA8K,GAAAyzB,KAAAv+B,CAAa,WAAA8K,GAAAgtB,SAAb93B,CAAa,cAAA8K,GAAA8J,YAAb5U,CAAa,UAAA8K,GAAAwzB,YAAbt+B,CAAa,KAAA8K,GAAA7I,GAAbjC,CAAa,WAAA8K,GAAA+qB,cAAb71B,CAAa,QAAA8K,GAAAoH,MAAblS,CAAa,eAAA8K,GAAAsgC,aAAbprC,CAAa,QAAA8K,GAAAy6C,aAAbvlD,CAAa,SAAA8K,GAAAqlC,OAAbnwC,CAAa,WAAA8K,GAAA0zB,eAEbx+B,MAAA,mBAAA8K,GAAA7I,GAAAjC,CAA4B,kBAAA8K,GAAAoc,OAoBjBlnB,MAAA,GAAAA,MAAA,WAAA8K,GAAAm6C,SAAAjlD,CAAqB,UAAA8K,GAAAo6C,YAArBllD,CAAqB,WAAA8K,GAAAs6C,SAArBplD,CAAqB,aAAA8K,GAAAu6C,WAArBrlD,CAAqB,aAAA8K,GAAAw6C,WAArBtlD,CAAqB,WAAA8K,GAAAq6C,SAArBnlD,CAAqB,UAAA8K,GAAAoH,OAWjClS,MAAA,GAAAA,MAAA,OAAA8K,GAAAuU,SAMcrf,MAAA,GAAAA,MAAA,WAAA8K,GAAA+qB,cAAA71B,CAA0B,OAAAA,MAAA,GAAA0T,EAAA1T,MAAA,GAAAie,IAA1Bje,CAA0B,OAAA8K,GAAAnK,MAUzBX,MAAA,GAAAA,MAAA,OAAA8K,GAAAq2B,eAAAr2B,GAAAo2B,QAYNlhC,MAAA,GAAAA,MAAA,OAAA8K,GAAAk3B,kHCnERwiB,EAAoB,sIC9B1B,IAAMmC,EAA6B,MAApC,MAAOA,UAAqCve,KADlDh/B,kCAEmBC,KAAA47C,SAAW,GAE5BpmB,UAAU3sB,GACR,IAAKA,EAAO,OAAO,KAEnB,GAAoB,iBAATA,EAAmB,CAC5B,MAAM00C,EAAY,QACXtiB,EAAOuiB,EAAS5B,GAAY/yC,EAAME,MAAMw0C,GAE/C,MAAO,CACLve,KAAMh/B,KAAKg7B,SAASC,EAAO2gB,GAC3B3c,OAAQN,SAAS6e,EAAS,IAC1Bte,OAAQ,MAGV,OAAOr2B,CAEX,CAEAkyB,QAAQD,GACN,IAAKA,EAAM,OAAO,KAElB,MAAQkE,OAAMC,UAAWnE,EAEnB2iB,EAAqB,GAARze,EAEb0e,GAAO1e,EAAOh/B,KAAK47C,SAEzB,OAHa5c,GAAQh/B,KAAK47C,SAGT,GALF5c,GAAQh/B,KAAK47C,SAK8B57C,KAAK47C,YAAjC/c,MAAIG,EAAOh/B,KAAK47C,cAAyB,EAAI/c,MAAII,QAC3Eye,GAAa,GAAID,EAAyBz9C,KAAK47C,YAAjB/c,MAAIG,OAAqB,EAAIH,MAAII,QAE5D,IACT,CAEQjE,SAASC,EAAe2gB,GAC9B,IAAK3gB,IAAU2gB,EAAU,OAAO,KAEhC,MAAMpsC,EAAIosC,EAASppC,cACbmrC,GAAK1iB,EAEX,OAAI0iB,GAAK39C,KAAK47C,UAAiB,MAALpsC,EAAkB,EACxCmuC,GAAK39C,KAAK47C,UAAiB,MAALpsC,EAAkBmvB,SAAS1D,EAAO,IACxD0iB,GAAK39C,KAAK47C,UAAiB,MAALpsC,EAAkBxP,KAAK47C,SAC7C+B,GAAK39C,KAAK47C,UAAiB,MAALpsC,EAAkBmvB,SAAS1D,EAAO,IAAMj7B,KAAK47C,SAEhE,CACT,8EA/CW0B,KAA4B/0C,GAA5B+0C,EAA4B,yCAA5BA,EAA4BnjC,QAA5BmjC,EAA4BljC,WAAA,SAA5BkjC,CAA6B,KCU7BM,EAAgB,MAAvB,MAAOA,EACX79C,cACE,iDAFS69C,EAAgB,oCAAhBA,GAAgB,wCAFhB,CAAC,CAAEhzC,QAASm0B,KAAgBd,SAAUqf,IAA+Bpf,QAAA,CAHtE/2B,KAAcsO,KAAaooC,KAAqBnvB,IAAiB0P,KAAa7oB,OAAiB,SAK9FqoC,CAAgB,w7BCHtB,IAAME,EAAoB,MAA3B,MAAOA,GACX/9C,cACE,mDAFS+9C,GAAoB,oCAApBA,IAAoB,uCAJrB32C,KAAcsO,KAAa2+B,OAAc,SAIxC0J,EAAoB,oECC1B,IAAMC,GAAiB,MAAxB,MAAOA,wDAAiB,oCAAjBA,IAAiB,uCAJlB52C,OAAY,SAIX42C,EAAiB,KCDjBC,GAAW,MAAlB,MAAOA,wDAAW,oCAAXA,IAAW,uCAJZ72C,KAAcuO,IAAcqoC,KAAiB,SAI5CC,EAAW,8BCFjB,IAAMC,EAAiB,MAAxB,MAAOA,GACXl+C,cACE,mDAFSk+C,GAAiB,oCAAjBA,IAAiB,uCAFlB92C,KAAcuO,MAAY,SAEzBuoC,EAAiB,yDCMvB,IAAMC,GAAU,MAAjB,MAAOA,wDAAU,oCAAVA,IAAU,uCAJX/2C,KAAc8a,OAAgB,SAI7Bi8B,EAAU,qDCPhB,IAAMC,GAAe,MAAtB,MAAOA,GACXp+C,cAAe,mDADJo+C,GAAe,oCAAfA,IAAe,uCAJhBh3C,OAAY,SAIXg3C,EAAe,KCAfC,GAAiB,MAAxB,MAAOA,GACXr+C,cAAe,mDADJq+C,GAAiB,oCAAjBA,IAAiB,uCAJlBj3C,OAAY,SAIXi3C,EAAiB,mSCGvB,IAAMC,GAAN,MAAMA,WAA+BnxB,KAoB1CntB,YAAgCyjB,GAAgCnY,IAC9DkiB,MAAM/J,GAAWnY,IAD6CrL,KAAAqL,MAnBvDrL,KAAAqpC,sBAAuB,EACvBrpC,KAAAs+C,aAAc,EAIPt+C,KAAAytB,WAAY,EAIZztB,KAAA+gC,cAAe,EAEf/gC,KAAAsuB,kBAAmB,EAEzBtuB,KAAA8pB,MAAQ,IAAIrpB,MAEfT,KAAAu+C,KAAO,IAAIC,KAAU,CAAEC,SAAU,IAAI9c,KAAY,GAAI3hC,KAAK0+C,kBAAkB3a,KAAK/jC,SAE/EA,KAAA2+C,kBAAyC,UAIlD,CAEAjjC,WACE1b,KAAKu+C,KAAK/U,aAAa/kC,QAAKC,MAAe1E,OAAO2E,UAAU,CAAEgN,KAAO9I,IAAU7I,KAAKqsC,YAAYxjC,GAAM41C,YAElGz+C,KAAKwjB,UAAUimB,eACjBzpC,KAAKwjB,UAAUimB,cAAc9kC,UAAW+kC,KACtC1pC,KAAK4+C,sCAAsClV,IAC3C1pC,KAAKqL,GAAGkB,cAAY,EAG1B,CAEAqyC,sCAAsClV,IACpC,MAAe,aAAXA,GAA8B1pC,KAAKu+C,KAAK9vC,IAAI,YAAYowC,QAAQ,CAAE5F,WAAW,KAElE,YAAXvP,IAAwB1pC,KAAKu+C,KAAKO,WAAa9+C,KAAKu+C,KAAKld,UAAYrhC,KAAKu+C,KAAKjd,OAASthC,KAAKu+C,KAAK7U,SAAWA,MAC/G1pC,KAAKu+C,KAAK9vC,IAAI,YAAYswC,gBAC1B/+C,KAAKu+C,KAAK9vC,IAAI,YAAYuwC,cAC1Bh/C,KAAKu+C,KAAK9vC,IAAI,YAAYwwC,0BAGxBj/C,KAAKu+C,KAAK9vC,IAAI,YAAYjW,SAAiBwH,KAAKu+C,KAAK9vC,IAAI,YAAYywC,OAAO,CAAEjG,WAAW,SAE9E,UAAXvP,IAAsB1pC,KAAKu+C,KAAK7U,SAAWA,KAE1C1pC,KAAKwjB,UAAU8d,OAAUthC,KAAKwjB,UAAU6d,QACxCrhC,KAAKu+C,KAAK9vC,IAAI,YAAYwwC,yBADuBj/C,KAAKu+C,KAAK9vC,IAAI,YAAYuqC,MAAMh5C,KAAKu+C,KAAK9vC,IAAI,YAAY5F,SAElH,CAEA61C,kBAAkB/6B,IAChB,OAAO3jB,KAAKwjB,WAAWuU,OAAS,IAAK/3B,KAAKwjB,UAAUuU,QAAW,IACjE,CAEAonB,qBACEn/C,KAAK2+C,kBAA+C,aAA3B3+C,KAAK2+C,kBAAmC,OAAS,UAC5E,CAEAS,iBAAiBv2C,MACX,EAACjI,SAAMiI,IAAOvC,QAAQuC,QAAU7I,KAAKu+C,KAAK57B,UAC5C3iB,KAAKu+C,KAAK9vC,IAAI,YAAYuqC,MAAMnwC,IAAOvC,QAAQuC,OAC/C7I,KAAKu+C,KAAK9vC,IAAI,YAAYuwC,cAC1Bh/C,KAAKu+C,KAAK9vC,IAAI,YAAYswC,gBAE9B,CAEA1S,YAAYxjC,IACV7I,KAAK6I,MAAQA,EACf,CAEA+F,WAAWC,IACT0e,MAAM3e,WAAWC,GACnB,mDA1EWwvC,IAAsB1nD,MAAAqd,KAAA,IAAArd,aAAA,oCAAtB0nD,GAAsBp+C,UAAA,yBAAA8d,OAAA,CAAAsrB,qBAAA,uBAAAiV,YAAA,cAAA7wB,UAAA,YAAAsT,aAAA,eAAAzS,iBAAA,mBAAAqwB,kBAAA,qBAAA1gC,QAAA,CAAA6L,MAAA,SAAAjG,SAAA,CAAAltB,OAAAwrB,mBAAAvN,GAAAR,MAAA,EAAAC,KAAA,GAAAC,OAAA,6PAAArc,SAAA,SAAAuJ,GAAAC,IAAA,EAAAD,eCZnC7K,MAAA,KACEA,MAAA,iBAYWA,MAAA,gBAAAG,IAAA,OAAQ2K,GAAA6yB,WAAAx9B,GAAkB,EAA1BH,CAA2B,iBAAAG,IAAA,OAClB2K,GAAA+yB,YAAA19B,GAAmB,EAD5BH,CAA2B,iBAAAG,IAAA,OAElB2K,GAAA29C,iBAAAtoD,GAAwB,EAFjCH,CAA2B,gCAGZ8K,GAAA09C,oBAAoB,GAU5CxoD,MAAA,+DAEAA,MAAA,6DAEFA,QACFA,gBA/BcA,MAAA,YAAA8K,GAAA88C,MAED5nD,MAAA,GAAAA,MAAA,qBAAAA,CAAsB,KAAA8K,GAAA7I,GAAtBjC,CAAsB,QAAA8K,GAAAoc,MAAtBlnB,CAAsB,YAAA8K,GAAAgsB,UAAtB92B,CAAsB,cAAA8K,GAAA8J,YAAtB5U,CAAsB,OAAA8K,GAAAnK,KAAtBX,CAAsB,UAAtBA,CAAsB,OAAA8K,GAAAk9C,kBAAtBhoD,CAAsB,uBAAA8K,GAAA4nC,qBAAtB1yC,CAAsB,mBAAA8K,GAAA6sB,iBAAtB33B,CAAsB,eAAA8K,GAAAs/B,aAAtBpqC,CAAsB,iBAAA8K,GAAAuyB,eAAtBr9B,CAAsB,gBAAAA,MAAA,GAAA0T,GAAA1T,MAAA,GAAA8pB,GAAA,aAAAhf,GAAAk9C,kBAAA,8BAAAl9C,GAAA+qB,eAAA/qB,GAAA68C,8FDUtBD,MAAsBt8C,OAAA,IANlCC,SAAY,EAAEkT,GAAAhT,IAAA,qBA0B8B47B,KAAyB/2B,SApBzDs3C,4CEaN,IAAMgB,GAAmB,MAA1B,MAAOA,wDAAmB,oCAAnBA,IAAmB,uCAb5B9rB,KACA9d,KACAtO,KACA8a,KACAmc,MACA5K,KACA9E,KACAlZ,KACAE,OAAY,SAKH2pC,EAAmB,KCvBzB,MAAMC,GAAoB,IAAIC,MACnC,kFACA,CAAEllC,WAAY,OAAQF,QAASA,KAAe,mBCmBzC,ICXMqlC,GAAgB,MAAvB,MAAOA,wDAAgB,oCAAhBA,IAAgB,uCAJjBr4C,KAAcsO,KAAa8d,KAAqBC,KAAa9d,MAAY,SAIxE8pC,EAAgB,+NCqBvB,MAAOC,GAAb1/C,cAUEC,KAAA0/C,UAAqB,EACrB1/C,KAAA2/C,YAAuB,EACvB3/C,KAAA4/C,mBAA8B,EAC9B5/C,KAAA6/C,YAAuB,CAGzB,EAGO,IAAMC,GAAY,MAAnB,MAAOA,GAMX//C,YAAsBggD,GAAkCC,GAA+DhwC,IAAjGhQ,KAAA+/C,gBAAkC//C,KAAAggD,mBAA+DhgD,KAAAgQ,YAF/GhQ,KAAAigD,SAAW,oBAGjBjgD,KAAKilB,SAAW+6B,GAAgBE,eAAe,KAAM,MACrDlgD,KAAK0yC,KAAO1yC,KAAKgQ,SAAS0iC,IAC5B,CAEQyN,kBACN,OAAOz3C,KAAKm5B,SAASrwB,SAAS,IAAI4uC,OAAO,EAAG,GAC9C,CAQOC,QAAQC,GAAyBje,IACtCriC,KAAKugD,aAAevgD,KAAKmgD,kBACzB,MAAMxmC,GAAU3Z,KAAKwgD,WAAWF,IAC5BA,KACF3mC,GAAQriB,KAAO0I,KAAKmkC,aAAamc,GAAShpD,KAAMgpD,GAASG,aAE3D,MAAMC,GAAW1gD,KAAK+/C,aAAax7B,KAAKo8B,KAAgBhnC,IACxD,OAAA3Z,KAAK4gD,YAAYF,GAASG,kBAAqCP,IAE9DI,GAASG,kBAAqCxe,QAAUA,GACrDie,IAAYA,GAASjiC,WAAoC,SAAvBiiC,GAASjiC,WAC7Cre,KAAK8gD,yBAEFR,IAAUT,cAAgBS,KAAaA,GAASjiC,WAAoC,SAAvBiiC,GAASjiC,YACzEre,KAAKilB,SAASqB,aAAatmB,KAAK0yC,KAAM,QAAS1yC,KAAKigD,UAEtDjgD,KAAK+gD,uBAAuBT,IAAYA,GAASX,YAC1Ce,GAAS34C,MAClB,CAQOwc,KAAc+7B,GAAyB5N,IAC5C1yC,KAAKugD,aAAevgD,KAAKmgD,kBACzB,MAAMO,GAAW1gD,KAAKghD,UAAUL,KAAgBL,IAChD,OAAAtgD,KAAK4gD,YAAYF,GAASG,kBAAqCP,IAC9DI,GAASG,kBAAqCnO,KAAOA,GAElD4N,IAAYA,GAASjiC,WAAoC,SAAvBiiC,GAASjiC,WAC7Cre,KAAK8gD,yBAEFR,IAAUT,cAAgBS,KAAaA,GAASjiC,WAAoC,SAAvBiiC,GAASjiC,YACzEre,KAAKilB,SAASqB,aAAatmB,KAAK0yC,KAAM,QAAS1yC,KAAKigD,UAEtDjgD,KAAK+gD,uBAAuBT,IAAYA,GAASX,YAC1Ce,GAAS34C,MAClB,CAQOk5C,WAAoBr5C,GAAc04C,IACvC,OAAAtgD,KAAKugD,aAAevgD,KAAKmgD,kBACzBngD,KAAK+gD,uBAAuBT,IAAYA,GAASX,YAC1C3/C,KAAKkhD,QAAQt5C,GAAS04C,IAAUv4C,MACzC,CAQOo5C,WAAoBv5C,GAAc04C,IAOvC,OAAOtgD,KAAKihD,WAAoBr5C,GAASoH,OAAOkK,OANV,CACpC5hB,KAAMujB,MAAQC,GACdsmC,SAAU,SACVC,UAAU,GAG2Df,IACzE,CASOY,QAAQt5C,GAAc04C,IAC3BtgD,KAAKugD,aAAevgD,KAAKmgD,kBAEpBG,KACHA,GAAW,IAAIb,IAEjBa,GAASZ,UAAW,EACpB,MAAMgB,GAAW1gD,KAAKghD,UAAUp5C,GAAS04C,IAEzC,OAAIA,IAAYA,GAASjiC,WAAoC,SAAvBiiC,GAASjiC,WAC7Cre,KAAK8gD,yBAGFR,IAAUT,cAAgBS,KAAaA,GAASjiC,WAAoC,SAAvBiiC,GAASjiC,YACzEre,KAAKilB,SAASqB,aAAatmB,KAAK0yC,KAAM,QAAS1yC,KAAKigD,UAItDjgD,KAAK4gD,YAAaF,GAASG,kBAAkBS,WAAaZ,GAASG,kBAAsCP,IACzGtgD,KAAK+gD,uBAAuBT,IAAYA,GAASX,YAE1Ce,EACT,CAKOa,aACLvhD,KAAK+/C,aAAawB,YACpB,CAMOC,gBACL,OAAOxhD,KAAK+/C,aAAayB,eAC3B,CAEUR,UAAUp5C,GAAc+R,IAChC,OAAO3Z,KAAK+/C,aAAax7B,KAAK3c,GAAS5H,KAAKwgD,WAAW7mC,IACzD,CAEU6mC,WAAWF,IACnB,MAAM3mC,GAA2B,CAAE0nC,UAAU,EAAMD,SAAU,SAAUK,UAAU,EAAMC,cAAeA,KAAM,GACtGC,GAAmBrB,IAAYA,GAASX,WAAa,SAAW3/C,KAAKugD,aAAe,GAC1F,OAAID,IAAYA,GAAShpD,OACvBqiB,GAAQriB,KAAO0I,KAAKmkC,aAAamc,GAAShpD,KAAMgpD,GAASG,aAEvDH,IAAYA,GAASjiC,WACvB1E,GAAQ0E,UAAYiiC,GAASjiC,UAC7B1E,GAAQioC,cAAgB,wBACxBjoC,GAAQkoC,YAAc,0BAA0BF,KAChDhoC,GAAQ+nC,cAAgBpB,GAASoB,cAAgBpB,GAASoB,cAAgB,KAAM,GAEhF/nC,GAAQkoC,YAAcF,GAEjBhoC,EACT,CAEQinC,YAAYkB,GAA2BxB,IAM7C,GALKA,KACHA,GAAW,IAAIb,IAEjBqC,GAAUC,OAASzB,GAASyB,OAExBzB,GAASyB,QAAqC,iBAApBzB,GAASyB,UAAuB,EAACvnC,OAAW8lC,GAASyB,QAAS,CAC1F,MAAMA,GAASzB,GAASyB,OACxBD,GAAUnoD,MAAQooD,GAAOpoD,MACzBmoD,GAAUE,eAAiBD,GAAO3mC,KAClC0mC,GAAUG,WAAaF,GAAOzqD,KAC9BwqD,GAAUI,qBAAoBthD,SAAMmhD,GAAOG,mBAAqBJ,GAAUI,kBAAoBH,GAAOG,kBACrGJ,GAAUK,kBAAiBvhD,SAAMmhD,GAAOI,gBAAkBL,GAAUK,eAAiBJ,GAAOI,eAC5FL,GAAUlC,kBAAoBmC,GAAOtgC,aASvC,GAPI6+B,GAAS8B,SACXN,GAAUO,gBAAsCx2C,IAAzBy0C,GAAS8B,OAAOE,QAAuBhC,GAAS8B,OAAOE,MAGhFR,GAAUxqD,KAAOgpD,GAAShpD,KAC1BwqD,GAAUrB,WAAaH,GAASG,WAE5BH,GAAS8B,QAAU9B,GAAS8B,OAAOG,SAAU,CAC/CT,GAAUU,aAAelC,GAAS8B,OAAOG,SAAS3yC,MAAQ,KAC1DkyC,GAAUW,kBAAoBnC,GAAS8B,OAAOG,SAASG,UACvDZ,GAAUa,iBAAmBrC,GAAS8B,OAAOG,SAASjM,SACtDwL,GAAUc,aAAetC,GAAS8B,OAAOG,SAAS7iD,MAAQ,UAC1D,MAAMmjD,GAASvC,GAAS8B,OAAOG,SAASD,KACxCR,GAAUgB,kBAAeliD,SAAMiiD,KAAiBA,QAEhDf,GAAUU,aAAe,KACzBV,GAAUgB,cAAe,EAG3B,GAAIxC,GAAS8B,QAAU9B,GAAS8B,OAAOW,aAAc,CACnDjB,GAAUkB,iBAAmB1C,GAAS8B,OAAOW,aAAanzC,MAAQ,SAClE,MAAMqzC,GAAa3C,GAAS8B,OAAOW,aAAaT,KAChDR,GAAUoB,sBAAmBtiD,SAAMqiD,KAAqBA,QAExDnB,GAAUkB,iBAAmB,SAC7BlB,GAAUoB,kBAAmB,EAE3B5C,GAASziD,OAEXikD,GAAUjkD,KAAOyiD,GAASziD,KAE1BikD,GAAUnnC,QAAU2lC,GAASziD,KAAK8c,SAEpCmnC,GAAUqB,cAAgB7C,GAASZ,SACnCoC,GAAUnC,WAAaW,GAASX,UAClC,CAEQxb,aAAa7sC,GAAcmpD,IACjC,IAAI2C,GAAM,GACV,OAAI3C,KACF2C,IAAO,QAEFA,GAAM9rD,EACf,CAEQwpD,wBACN9gD,KAAKilB,SAAS1gB,YAAYvE,KAAK0yC,KAAM,cACrC1yC,KAAKilB,SAASqB,aAAatmB,KAAK0yC,KAAM,QAAS,GACjD,CAEQqO,uBAAuB/8C,IAC7Ba,WAAW,KACT,MAAMw+C,GAAgBrjD,KAAK0yC,KAAKrvC,cAAc,UAAUrD,KAAKugD,+BACzDv8C,IACFhE,KAAKilB,SAAS9gB,SAASk/C,GAAe,cAAa,EAEpD,EACL,mDAtOWvD,IAAYnpD,MAAAqd,MAAArd,mBAM4Esd,MAAQ,sCANhG6rC,GAAY3lC,QAAZ2lC,GAAY1lC,WAAA,SAAZ0lC,EAAY,KCtCZwD,GAAW,MAAlB,MAAOA,wDAAW,oCAAXA,IAAW,wCAFX,CAACxD,IAAa5hB,QAAA,CAFf/2B,KAAco8C,KAAc7tC,MAAY,SAIvC4tC,EAAW,KCLXE,GAAgB,MAAvB,MAAOA,wDAAgB,oCAAhBA,IAAgB,uCAJjBr8C,OAAY,SAIXq8C,EAAgB,KCAhBC,GAAiB,MAAxB,MAAOA,wDAAiB,oCAAjBA,IAAiB,uCAJlBt8C,OAAY,SAIXs8C,EAAiB,iCCKvB,IAAMC,GAAe,MAAtB,MAAOA,wDAAe,oCAAfA,IAAe,uCAJhBv8C,KAAcuO,IAAc6tC,KAAch8C,MAAmBoO,MAAesM,OAAgB,SAI3FyhC,EAAe,qBCCrB,IAAMC,GAAiB,MAAxB,MAAOA,wDAAiB,oCAAjBA,IAAiB,wCAFjB,CAACC,MAAkB1lB,QAAA,CAFpB/2B,KAAcoO,KAAmBC,KAAoBC,KAAaC,MAAY,SAI7EiuC,EAAiB,qBCFvB,IAAME,GAAW,MAAlB,MAAOA,wDAAW,oCAAXA,IAAW,uCAFZ18C,KAAcuO,IAAc8d,KAAa/d,OAAW,SAEnDouC,EAAW,4GCiBjB,IAAMC,GAAY,MAAnB,MAAOA,GACX/jD,cAAe,mDADJ+jD,GAAY,oCAAZA,IAAY,uCAJb38C,KAAco8C,OAAY,SAIzBO,EAAY,6CClBlB,IAAMC,GAAW,MAAlB,MAAOA,wDAAW,oCAAXA,IAAW,uCAJZ58C,KAAc68C,KAAgBjG,GAAmBroC,MAAY,SAI5DquC,EAAW,qBCEjB,IAAME,GAAY,MAAnB,MAAOA,wDAAY,oCAAZA,IAAY,uCAJb98C,KAAco8C,KAAcD,GAAaY,KAAgBxuC,IAAcuM,OAAgB,SAItFgiC,EAAY,KCiCzB,MAAME,GAAkB,CACtBpG,GACA16B,KACAkgC,KACAa,KACA5E,GACAn4C,KACA+lC,KACAV,KACA6J,KACAqH,KACAlqB,KACAJ,KACA2wB,GACAX,GACAnP,KACA2J,EACAxoC,KACA+uC,KACAX,GACArE,GACA7rB,KACAC,KACA4K,KACA3oB,IACAxO,IACAwnB,KACA0Q,KACA/3B,KACAmvC,KACAqN,GACAC,GACAN,GACAtF,GACAuF,GACAE,GACAW,KACAjQ,KACA/sC,KACAy8C,GACA/F,GACAz2C,MACA42C,GACAC,GACApT,KACA7L,MAUK,IAAMolB,GAAc,MAArB,MAAOA,wDAAc,oCAAdA,IAAc,wCAHd,CAACC,OAAkCtmB,QAAA,CAFpCimB,GAjDVpG,GACA16B,KACAkgC,KACAa,KACA5E,GACAn4C,KACA+lC,KACAV,KACA6J,KACAqH,KACAlqB,KACAJ,KACA2wB,GACAX,GACAnP,KACA2J,EACAxoC,KACA+uC,KACAX,GACArE,GACA7rB,KACAC,KACA4K,KACA3oB,IACAxO,IACAwnB,KACA0Q,KACA/3B,KACAmvC,KACAqN,GACAC,GACAN,GACAtF,GACAuF,GACAE,GACAW,KACAjQ,KACA/sC,KACAy8C,GACA/F,GACAz2C,MACA42C,GACAC,GACApT,KACA7L,OAAe,SAUJolB,EAAc,qBCtGfE,GAAZ,SAAYA,IACVA,aAAAC,KAAA,UACAD,MAAAE,KAAA,UACAF,MAAAG,KAAA,UACAH,MAAAI,QAAA,aACAJ,MAAAK,UAAA,eACAL,MAAAM,aAAA,kBANUN,EAOZ,CAPA,CAAYA,IAAa,gECElB,MAAMO,GAAiB,ICDvB,MAAMC,WAAuBC,OCA7B,MAAMC,WAAoBC,KAC7BrlD,YAAYslD,GAAWC,IACnB/3B,MAAM83B,GAAWC,IACjBtlD,KAAKqlD,UAAYA,GACjBrlD,KAAKslD,KAAOA,EAChB,CACAC,SAASp4B,GAAOq4B,GAAQ,GACpB,OAAIA,GAAQ,EACDj4B,MAAMg4B,SAASp4B,GAAOq4B,KAEjCxlD,KAAKwlD,MAAQA,GACbxlD,KAAKmtB,MAAQA,GACbntB,KAAKqlD,UAAUI,MAAMzlD,MACdA,KACX,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AS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IACnf,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IACvf,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IACvf,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,IAAI,OAAS,KAAK,OAAS,KAAK,OAAS,KAAK,OAAS,KAAK,OAAS,KAAK,OAAS,MACsDyuH,GAAGzuH,EADjD,CAAC,IAAI,Q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AU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OA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","names":["I18_NAMESPACES_MBS_UI_KIT","I18_NAMESPACE_APPS_UI","account","app","audit","backupHistory","button","calendar","chart","contacts","dashboard","dontHavePermission","drive","history","mail","payments","policy","reports","results","skipItems","tasks","users","I18_NAMESPACES_APPS_UI","i0","ctx_r5","topControlsDescription","$event","_r7","ctx_r6","topControlsCheckboxChangeHandler","handleCountTotalSelected","AccordionComponent_div_0_div_4_Template","_c7","ctx_r0","size","checkedTop","indeterminateTop","_r1","ctx_r9","selectedInAllPanels","AccordionComponent_ng_template_1_ng_template_0_Template","AccordionComponent_ng_template_1_span_1_Template","AccordionComponent_ng_template_1_ng_template_2_Template","ctx_r2","topControlsPrependLabel","template","topControlsLabelSelected","topControlsAppendLabel","_c8","ctx_r19","checkboxes","panel_r11","disabled","keepOpened","_r3","isExpanded","id","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_1_ng_container_0_div_3_ng_template_2_Template","ctx_r20","align","panelIconHeader","_r34","$implicit","ctx_r32","handleChangePanelHeaderCheckbox","countTotalSelected","selectedAll","idx_r12","indeterminate","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_1_ng_container_0_div_4_ng_container_4_ng_template_1_Template","titleTemplate","title","ctx_r31","toggleButtonClass","selectedCount","all","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_1_ng_container_0_div_4_mbs_checkbox_2_Template","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_1_ng_container_0_div_4_ng_container_4_Template","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_1_ng_container_0_div_4_ng_container_5_Template","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_1_ng_container_0_div_4_button_6_Template","hideCheckboxes","ctx_r21","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_1_ng_container_0_ng_container_5_ng_template_1_Template","prependHeaderTemplate","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_1_ng_container_0_button_6_ng_container_1_ng_template_1_Template","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_1_ng_container_0_button_6_ng_container_1_Template","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_1_ng_container_0_button_6_ng_container_2_Template","ctx_r23","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_1_ng_container_0_ng_container_7_ng_template_1_Template","appendHeaderTemplate","_r53","ctx_r51","onClickHeaderPanel","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_1_ng_container_0_div_2_Template","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_1_ng_container_0_div_3_Template","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_1_ng_container_0_div_4_Template","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_1_ng_container_0_ng_container_5_Template","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_1_ng_container_0_button_6_Template","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_1_ng_container_0_ng_container_7_Template","_c9","ctx_r16","arrow","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_1_ng_template_1_ng_container_1_ng_container_1_Template","_r60","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_1_ng_template_1_div_2_ng_template_2_Template","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_1_ng_template_1_ng_container_4_ng_template_1_Template","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_1_ng_template_1_ng_container_6_ng_container_1_Template","_c10","ctx_r69","arrowPosition","isTitlePrimary","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_1_ng_template_1_ng_template_7_div_0_Template","ctx_r61","_r73","ctx_r71","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_1_ng_template_1_ng_container_1_Template","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_1_ng_template_1_div_2_Template","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_1_ng_template_1_ng_container_4_Template","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_1_ng_template_1_ng_container_5_Template","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_1_ng_template_1_ng_container_6_Template","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_1_ng_template_1_ng_template_7_Template","ctx_r18","_c11","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_1_ng_container_0_Template","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_1_ng_template_1_Template","ctx_r14","isDefaultView","_r17","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_2_ng_container_0_ng_container_1_ng_container_3_Template","_r79","_r90","item_r85","ctx_r88","checkPanelCheckboxStatus","checked","ctx_r86","labelMode","data","rowTemplate","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_2_ng_container_0_ng_template_2_ng_container_1_div_1_ng_container_2_ng_container_2_Template","_c12","fullWidthLabel","_c13","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_2_ng_container_0_ng_template_2_ng_container_1_div_1_mbs_checkbox_1_Template","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_2_ng_container_0_ng_template_2_ng_container_1_div_1_ng_container_2_Template","_c14","ctx_r84","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_2_ng_container_0_ng_template_2_ng_container_1_div_1_Template","rows","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_2_ng_container_0_ng_template_2_2_ng_template_0_Template","bodyTemplate","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_2_ng_container_0_ng_template_2_ng_container_1_Template","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_2_ng_container_0_ng_template_2_2_Template","_c15","ctx_r80","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_2_ng_container_0_ng_container_1_Template","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_2_ng_container_0_ng_template_2_Template","ctx_r75","xScroll","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_2_ng_template_1_ng_template_1_Template","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_2_ng_container_0_Template","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_2_ng_template_1_Template","ctx_r15","_r76","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_1_Template","AccordionComponent_ng_container_5_ngb_panel_1_ng_template_2_Template","type","AccordionComponent_ng_container_5_ngb_panel_1_Template","shown","nextId","PanelIconHeader","constructor","this","selectors","TopControlsPrependDescription","TopControlsAppendDescription","AccordionRowTemplate","AccordionPanelComponent","length","itemsCanBeHidden","changeHeader","EventEmitter","change","ngAfterViewInit","isNil","countSelected","filter","row","event","emit","panelId","first","every","headerCheckboxChangeHandler","forEach","contentQueries","rf","ctx","dirIndex","AccordionPanelComponent_ng_template_0_Template","AccordionPanelComponent_ng_template_2_Template","AccordionPanelComponent_ng_template_4_Template","AccordionPanelComponent_ng_template_6_Template","__decorate","UntilDestroy","tslib__WEBPACK_IMPORTED_MODULE_4__","w6","AccordionComponent","cdRef","elem","renderer2","activeIds","destroyOnHide","showTopControls","topControlsLabel","withoutBorder","narrowHeader","panelChange","correctTags","Set","changeTotalSelectedCount","changeTop","updateCardClasses","mbsAccordion","host","querySelector","panels","panel","innerAccordion","panelEl","card","closest","el","toggleClass","toggleClassExpanded","cssClass","condition","methods","r2","addClass","native","classList","add","removeClass","remove","pipe","untilDestroyed","subscribe","checkMainCheckboxStatus","setTimeout","checkTittleTags","detectChanges","reduce","total","panelArray","toArray","firstPanel","tittleButtons","querySelectorAll","btn","children","tittle","Array","from","has","tagName","console","error","join","expandAll","expand","collapse","collapseAll","toggle","target","closeOthers","AccordionComponent_div_0_Template","AccordionComponent_ng_template_1_Template","nextState","AccordionComponent_ng_container_5_Template","_c16","maxHeight","_c17","ChangeDetectorRef","ElementRef","Renderer2","AccordionModule","CommonModule","NgbAccordionModule","CheckboxModule","TreeModule","NgScrollbarModule","AdvancedSearchParser","tagsRegex","RegExp","getModel","content","tags","reg","result","model","findFullMatchTag","tag","sourceTags","lastWord","match","filterTags","t","includes","substring","Math","max","matchWords","value","words","split","v","push","copyContent","String","exec","resultArr","nonTagPart","r","index","indexOf","_r8","ctx_r7","handleClear","item_r9","_r12","ctx_r11","stopPropagation","handleClickSelectedValue","i_r10","ctx_r13","selectedItemIndex","_c2","formatter","getLastWord","_r0","innerText","caret","ADVANCED_SEARCH_VALUE_ACCESSOR","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","AdvancedSearchComponent","multi","route","router","doc","cd","_mbsSelectOpenedNgOptions","placeholder","searchIcon","showDropdown","lastWord$","BehaviorSubject","items$","undefined","unwrapItems","disableMultiTag","accessUrlQuery","search","tagsFormatter","val","needClearOnDestroy","Boolean","items","markForCheck","myModel","notifyValueChange","searchContent","advancedSearch","nativeElement","textContent","innerHTML","replace","parseContent","searchHasFocus","activeElement","closeDropdown","contains","isOpenedNgbDropdownMenu","closeDropdownMenu","isClickedOutsideNgbDropdownMenu","ngbDropdownMenu","dropdown","close","isMbsSelectOptionClicked","dropdownRef","_elementRef","isMbsDatepickerClicked","isMbsTimepickerClicked","_open","ngOptions","ngbDropdownMenuNgSelectOptions","some","option","ngOnDestroy","ngAfterContentInit","snapshot","queryParamMap","get","handleParseModel","onChange","writeValue","obj","copy","cloneDeep","Object","keys","map","k","registerOnChange","fn","registerOnTouched","onTouched","m","handleRoute","handlePasteEvent","preventDefault","text","originalEvent","clipboardData","getData","document","execCommand","handleDropEvent","dataTransfer","focus","handleKeyboardUpEvent","defaultPrevented","key","getCaretPosition","handleKeyboardDownEvent","blur","handleEnter","KeyboardEvent","pasteValue","opts","relativeTo","queryParams","queryParamsHandling","navigate","ctrlKey","shiftKey","altKey","window","getSelection","toString","element","firstChild","next","d","collapseToEnd","range","getRangeAt","setStart","JSON","stringify","searching","subscription","unsubscribe","lastPart","tagsFilter","toLowerCase","slice","startMatchIndex","lastIndexOf","matchTag","find","matches","itemFormatter","tagInfo","lastWordMatch","valueMatch","selectedLen","selectWordBeforeCaret","copyValue","startWordCared","leftPart","rightPart","moveCaretTo","offset","createRange","setEnd","removeAllRanges","addRange","item","i1","DOCUMENT","viewQuery","NgbDropdownMenu","decls","vars","consts","AdvancedSearchComponent_div_8_Template","AdvancedSearchComponent_mbs_button_9_Template","AdvancedSearchComponent_div_10_Template","AdvancedSearchComponent_ng_container_13_Template","AdvancedSearchComponent_ng_container_15_Template","_c3","_c4","searchFormTemplate","_c5","dropdownHeight","_c6","tslib_es6","ActivatedRoute","Router","Document","AdvancedSearchModule","NgbDropdownModule","NgbTypeaheadModule","FormsModule","ButtonModule","I18NextModule","ADVANCED_SELECTBOX_INPUT_CONTROL_VALUE_ACCESSOR","AdvancedSelectComponent","reverse","appendTo","loading","myItems","currentIndex","getCurrentIndex","buttonSize","buttonSizeClass","bindValue","isLeftButtonDisabled","isRightButtonDisabled","ngSelect","optionTemplate","onChangeCallback","onNext","onPrev","handleLeftBtnClick","handleRightBtnClick","findIndex","onTouchedCallback","NgOptionTemplateDirective","TemplateRef","NgSelectComponent","_c0","bindLabel","_r6","removeAlert","alert_r2","autoClose","ignoreRouteChanges","_r10","alert_r7","AlertContainerComponent","inlineAlerts","alertService","alerts$","alerts","alert","overlay","maxInlineAlerts","overlayAlerts","maxOverlayAlerts","hostAttrs","hostVars","hostBindings","AlertContainerComponent_mbs_alert_1_Template","AlertContainerComponent_mbs_alert_4_Template","tslib__WEBPACK_IMPORTED_MODULE_5__","AlertService","Alert","init","keepAfterRouteChange","assign","alertDefaultId","#close$","Subject","#alert$","x","onAlert","success","msg","options","MbsPopupType","danger","info","warn","warning","a","clearById","factory","ɵfac","providedIn","getAlertIcon","AlertComponent_ng_container_3_ng_container_1_Template","isTemplate","_r4","closeAlert","context","ctx_r3","MbsSize","lg","xs","xxs","AlertComponent_ng_template_7_ng_container_0_Template","content_r12","AlertComponent","icon","MbsPopupIcon","cssClasses","classes","trim","closable","ngOnInit","handleRouteChanges","events","NavigationStart","url","startWith","pairwise","prev","curr","i2","AlertComponent_div_0_Template","AlertComponent_ng_content_2_Template","AlertComponent_ng_container_3_Template","AlertComponent_div_4_Template","AlertComponent_ng_template_5_Template","AlertComponent_ng_template_7_Template","tslib__WEBPACK_IMPORTED_MODULE_13__","ctx_r4","itemDisplayValue","item_r1","ctx_r8","delimiterIcon","_r13","ctx_r12","index_r2","handleItemClick","BreadcrumbsComponent_ng_container_1_ng_template_2_span_4_Template","BreadcrumbsComponent_ng_container_1_ng_template_2_ng_template_5_Template","sm","_r9","BreadcrumbsComponent_ng_container_1_ng_container_1_Template","BreadcrumbsComponent_ng_container_1_ng_template_2_Template","last_r3","_r5","BreadcrumbsComponent","label","level","inputs","list","outputs","BreadcrumbsComponent_ng_container_1_Template","ButtonDropdownDirective","showArrow","container","display","getTemplate","ButtonGroupComponent","customClasses","multiple","vertical","subscribeClickButtons","buttons","b","updateType","btnChangeSubscription","ngOnChanges","changes","updateDisabled","currentValue","merge","click","mapTo","active","ButtonComponent","square","iconClasses","ButtonComponent_ng_template_0_span_0_Template","ctx_r1","handleClick","customParentClasses","dropdownMenuItemsTemplate","dropdownPlacement","hideDropdownIcon","rounded","tooltipAlways","tooltipData","tooltipContainer","tooltipPlacement","tooltipTriggers","_c1","prefix","btnTypeClass","btnSizeClass","btnBlockClass","btnLoadingClass","btnActiveClass","btnOverflowClass","tooltipClass","buttonType","row_r13","ButtonComponent_ng_template_4_div_0_div_1_Template","ButtonComponent_ng_template_4_div_0_Template","realType","isCtrl","isDashed","textOverflow","block","disabledOrLoading","pointerType","ButtonComponent_ng_template_0_Template","ButtonComponent_ng_container_2_Template","ButtonComponent_ng_container_3_Template","ButtonComponent_ng_template_4_Template","NgbTooltipModule","CardGroupComponent","ngContentSelectors","headerIco","CardHeaderComponent_ng_container_1_div_1_Template","headerTitle","CardHeaderComponent","CardHeaderComponent_ng_container_1_Template","headerTemplate","CardComponent","invalid","innerBordered","border","hasPadding","cardSize","cardMainClasses","getHeight","staticHeight","CardComponent_div_4_Template","cardGroups","SharedDirectivesModule","NgbModule","DisableControlDirective","ngControl","disableControl","toggleDisabledState","control","disableControlOptions","features","skipClick","skipText","PermanentTooltipInternalComponent_ng_template_0_span_1_Template","okClick","PermanentTooltipInternalComponent_ng_template_0_mbs_button_7_Template","okText","i","PermanentTooltipInternalComponent","suggestedView","open","tooltip","PermanentTooltipInternalComponent_ng_template_0_Template","animation","placement","triggers","disableTooltip","openDelay","closeDelay","PermanentTooltipDirective","renderer","injector","componentFactoryResolver","appRef","debounceInterval","minWidth","offsetTop","offsetLeft","destroyed","close$","parkTooltip","componentRef","instance","startTrackingPosition","mutationObserver","disconnect","containerElement","parentNode","parking","createElement","updateParkingPosition","setAttribute","setStyle","appendChild","componentFactory","resolveComponentFactory","create","location","attachView","hostView","scrollTop","pageYOffset","documentElement","rect","getBoundingClientRect","getComputedStyle","position","top","left","scroll$","fromEvent","resize$","mutationEl","MutationObserver","observe","attributes","childList","subtree","takeUntil","debounceTime","updatePosition","removeChild","destroy","mbsPermanentTooltip","exportAs","tslib__WEBPACK_IMPORTED_MODULE_11__","Injector","ComponentFactoryResolver","ApplicationRef","SizeObserverDirective","zone","sizeChanged","observer","ResizeObserver","entries","run","height","contentRect","width","hasVerticalScroll","scrollHeight","clientHeight","hasHorizontalScroll","scrollWidth","clientWidth","unobserve","TrimInputDirective","input","patchValue","titleClasses","ctx_r10","FormGroupComponent_header_0_h1_1_Template","FormGroupComponent_header_0_h2_2_Template","FormGroupComponent_header_0_h3_3_Template","FormGroupComponent_header_0_h4_4_Template","FormGroupComponent_header_0_h5_5_Template","FormGroupComponent_header_0_h6_6_Template","FormGroupComponent_header_0_h5_7_Template","titleSize","FormGroupComponent","titlePosition","contentCustomClass","getClass","FormGroupComponent_header_0_Template","FormGroupComponent_ng_container_2_Template","FormGroupComponent_ng_template_3_Template","_r2","FormSectionComponent_header_0_h1_1_ng_container_1_Template","FormSectionComponent_header_0_h2_2_ng_container_1_Template","FormSectionComponent_header_0_h3_3_ng_container_1_Template","FormSectionComponent_header_0_h4_4_ng_container_1_Template","FormSectionComponent_header_0_h5_5_ng_container_1_Template","FormSectionComponent_header_0_h6_6_ng_container_1_Template","FormSectionComponent_header_0_h5_7_ng_container_1_Template","FormSectionComponent_header_0_h1_1_Template","FormSectionComponent_header_0_h2_2_Template","FormSectionComponent_header_0_h3_3_Template","FormSectionComponent_header_0_h4_4_Template","FormSectionComponent_header_0_h5_5_Template","FormSectionComponent_header_0_h6_6_Template","FormSectionComponent_header_0_h5_7_Template","FormSectionComponent_ng_template_5_span_0_Template","FormSectionComponent","getClassListForSection","FormSectionComponent_header_0_Template","FormSectionComponent_ng_container_2_Template","FormSectionComponent_ng_template_3_Template","FormSectionComponent_ng_template_5_Template","subtitleOutside","disabledState","subtitleClasses","subtitle","CheckboxComponent_div_6_ng_template_1_Template","descriptionOutside","descriptionClasses","checkboxDescription","CheckboxDescription","hide","CheckboxComponent","InputBase","state","myIndeterminate","myValue","myChecked","super","subtitleHide","boldLabel","centerCheckbox","handleChange","CheckboxComponent_div_5_Template","CheckboxComponent_div_6_Template","pinMode","labelSize","labelPosition","labelContext","infoPlacement","infoTriggers","infoContainer","hasRequiredValidator","showRequiredMark","labelClasses","labelContentClasses","tabindex","InputBaseModule","FocusedInput","START","END","NONE","getDateWithOffset","offsetInDays","Date","setDate","getDate","period_r7","selectPeriod","date_r10","hoveredDate","focused_r11","isRange","isInside","day","DatepickerRangeComponent","mask","DateFormat","mediumDate","periods","start","end","setMonth","getMonth","rangeSelected","focusedInput","isValueChangedByDatepicker","elementSelectors","currentlyDate","chosenPeriod","startDateInput","endDateInput","startDateCalendar","endDateCalendar","today","prevMonthDate","date","getTime","setPages","period","emitRange","onEnter","isFirstCalendar","KeyEventEnum","Enter","isInvalidDate","onInputChange","toggleFocus","isNaN","isStart","isEqual","setValue","page","getNgbDate","isEqualPages","calendarPage","setCalendarPage","equals","after","before","onPicked","to","firstPage","secondPage","year","month","preparedDate","NgbDate","getFullYear","NgbDropdown","_r15","DatepickerRangeComponent_mbs_button_14_Template","DatepickerRangeComponent_ng_template_15_Template","DatepickerRangeModule","ReactiveFormsModule","InputModule","InputRangeModule","DatepickerModule","DatepickerViewMode","_r20","handleButtonEnter","buttonClickPrepend","prepend","prependButtons","DatepickerComponent_div_0_div_4_ng_container_7_ng_container_1_Template","_r11","_r28","ctx_r27","ctx_r29","handleBlur","ctx_r30","handleFocus","onClosed","ctx_r33","ctx_r34","ctx_r35","ctx_r36","onNavigate","DatepickerComponent_div_0_div_4_ng_container_7_Template","isValidated","bindClasses","name","readonlyState","firstDayOfWeek","displayMonths","markDisabled","dateAdapter","fromModel","minDate","maxDate","navigation","outsideDays","showWeekdays","showWeekNumbers","startDate","month_r43","_r45","ctx_r44","handleMonthSelect","ctx_r42","isTodayMonth","isSelectedMonth","isDisabledMonth","i18n","getMonthShortName","DatepickerComponent_div_0_div_5_ng_template_7_ng_container_1_Template","ctx_r40","monthList$","asObservable","DatepickerComponent_div_0_div_5_ng_container_8_ng_container_1_Template","_r48","ctx_r47","ctx_r49","ctx_r50","ctx_r52","ctx_r53","ctx_r54","DatepickerComponent_div_0_div_5_ng_template_7_Template","DatepickerComponent_div_0_div_5_ng_container_8_Template","_r56","ctx_r55","ctx_r57","buttonClickAppend","ctx_r17","append","appendButtons","errors","DatepickerComponent_div_0_mbs_input_label_1_Template","DatepickerComponent_div_0_mbs_input_pre_append_3_Template","DatepickerComponent_div_0_div_4_Template","DatepickerComponent_div_0_div_5_Template","_r59","ctx_r58","ctx_r60","handleButtonClick","DatepickerComponent_div_0_mbs_input_pre_append_7_Template","DatepickerComponent_div_0_mbs_input_errors_8_Template","viewMode","isShowErrors","_r63","ctx_r62","ctx_r64","dayTemplate","hideFooter","_r67","ctx_r66","ctx_r68","onDateSelection","date_r70","ctx_r72","ctx_r74","focused_r71","isHovered","today_r79","focused_r78","isSelected","date_r75","currentMonth_r76","disabled_r77","isWeekend","_r81","handleSetToday","currentDate","_r83","ctx_r82","handleSetToYears","DatepickerComponent","dateSync$","classesObject","validClasses","concat","sizeClass","getFormattedDateWithTimeReset","time","toModel","setHours","hours","min","sec","ms","dropdownMenuDrop","dropdownMenu","NgbDateNativeAdapter","ReplaySubject","maskFormat","current","needSetCurrent","rangeSelect","closed","buttonClick","shortMonth","datepicker","months","queueMicrotask","handleDateSet","navigateTo","convertDate","datepickerRef","selectedDate","isOpen","dpDropdown","navigatedDate","navigatedYear","ngbDate","formatDate","getWeekday","markMonthDisabled","Event","pickedDate","toDate","NgbDatepicker","DatepickerComponent_div_0_Template","DatepickerComponent_ng_container_1_Template","DatepickerComponent_ng_container_2_Template","DatepickerComponent_ng_template_3_Template","DatepickerComponent_ng_template_5_Template","DatepickerComponent_ng_template_7_Template","DatepickerComponent_ng_template_9_Template","DatepickerComponent_ng_template_11_Template","plain","NgbCalendar","NgControl","NgbDatepickerI18n","NgbDateAdapter","useClass","imports","NgbDatepickerModule","IMaskModule","DropFileModule","ShortDateParserFormatter","NgbDateParserFormatter","DELIMITER","parse","toLocaleDateString","parseInt","format","pad","NgbTimeStringAdapter","NgbTimeAdapter","hour","minute","second","TagsInputModule","TagModule","spanAllZeroes","s","spanAll","n","sprintf","spanLeadingZeroesSimple","group","spanLeadingZeroes","address","g","simpleGroup","addressString","test","AutoFocusDirective","elRef","FocusDirective","isFocused","FocusBlurHandlerDirective","onFocus","onBlur","setListeners","handleblur","addEventListener","removeListeners","removeEventListener","InputAppendDirective","disabledSelf","readonly","pristine","valid","mapErrors","untouched","touched","dirty","validator","asyncValidator","pending","validators","FormControl","required","random","autofocus","autocomplete","isErrorsShow","valueAccessor","setDisabledState","isDisabled","er","message","errorMessage","MbsValidators","validatorMessages","InputPrependDirective","InputLabelDirective","InputErrorsDirective","templateRef","error_r6","InputErrorsComponent_ng_template_1_ng_container_0_div_1_Template","errors_r3","trackByMessage","InputErrorsComponent_ng_template_1_ng_container_0_Template","InputErrorsComponent","myErrorsTemplate","errorsTemplate","InputErrorsComponent_ng_template_0_Template","InputErrorsComponent_ng_template_1_Template","InputLabelComponent_span_3_1_ng_template_0_Template","InputLabelComponent_span_3_1_Template","labelContentClassesInner","isString","InputLabelComponent","_disabled","labelClassesDefault","labelContentClassesDefault","bind","labelClassesInner","getCurrentClasses","center","getSizeClass","source","defaultClass","convertCssClassesToString","hasLabel","isArray","prototype","hasOwnProperty","call","activeClasses","InputLabelComponent_span_3_Template","InputLabelComponent_span_4_Template","InputLabelComponent_span_5_Template","InputLabelComponent_ng_template_7_Template","buttonItem_r5","InputPreAppendComponent_ng_template_0_ng_template_0_button_0_span_1_Template","btnType","generateButtonClasses","InputPreAppendComponent_ng_template_0_ng_template_0_button_0_Template","InputPreAppendComponent_ng_template_0_ng_template_0_Template","InputPreAppendComponent_ng_container_2_ng_template_1_Template","InputPreAppendComponent_ng_container_2_ng_template_2_Template","dataTemplate","InputPreAppendComponent","myDataTemplate","keyupEnter","handleKeyupEnter","InputPreAppendComponent_ng_template_0_Template","InputPreAppendComponent_ng_container_2_Template","InputPreAppendComponent_ng_container_3_Template","InputRangeComponent","isFocus","sizeGroupClass","newClass","InputRangeComponent_mbs_input_label_1_Template","InputRangeComponent_mbs_input_pre_append_3_Template","InputRangeComponent_div_9_Template","InputRangeComponent_mbs_input_pre_append_10_Template","isLabelTemplate","_r18","maxLength","minLength","imaskOpts","unmask","imaskElement","_r22","ctx_r24","ctx_r25","handleTypeaheadItemSelected","typeahead","_r27","ctx_r26","InputComponent_ng_container_5_input_1_Template","InputComponent_ng_container_5_ng_template_2_Template","InputComponent_ng_container_5_div_4_Template","InputComponent_ng_container_5_mbs_button_5_Template","showErrorsInTooltip","clearButton","_r32","InputComponent_ng_container_6_span_8_Template","InputComponent_ng_container_6_span_9_Template","ctx_r37","loadFileHandler","accept","filePlaceholderOverflow","_r39","ctx_r38","ctx_r41","resize","_r43","errorTooltipTitle","item_r46","InputComponent_ng_template_10_p_1_Template","InputComponent_ng_template_10_li_3_Template","getErrorsArray","InputComponent","elementRef","myValidationWhitespace","buttonClickOnEnter","buttonClickOnEnterIndex","of","clear","validationWhitespace","handleWhitespaceValidation","enterClickHandler","valueChanges","statusChanges","status","errorsTooltip","hasMessage","values","markAsPristine","fileValue","files","extendValidators","Validators","compose","whitespaceValidator","setValidators","fileInputElement","IMaskDirective","InputComponent_mbs_input_label_1_Template","InputComponent_mbs_input_pre_append_3_Template","InputComponent_ng_container_5_Template","InputComponent_ng_container_6_Template","InputComponent_ng_container_7_Template","InputComponent_mbs_input_pre_append_8_Template","InputComponent_mbs_input_errors_9_Template","InputComponent_ng_template_10_Template","IPAddressModule","changeValueHandler","btnUp","btnDown","NumberComponent_mbs_input_pre_append_4_ng_template_1_Template","NumberComponent","Number","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","step","showButtons","containerClasses","maskDirective","isIncrement","checkRanges","numberChangeHandler","calculatedContainerClasses","numberHandleBlur","num","newValue","updateMaskValue","handleInput","handleAccept","NumberComponent_mbs_input_label_1_Template","NumberComponent_mbs_input_pre_append_4_Template","NumberComponent_mbs_input_errors_5_Template","NumberModule","RadioComponent_div_6_ng_template_1_Template","radioDescription","RadioDescription","RadioComponent","modelValue","centerRadio","ngAfterViewChecked","RadioComponent_div_5_Template","RadioComponent_div_6_Template","RadioModule","items_r5","labelForCounter","SelectComponent_3_ng_template_0_ng_container_0_Template","searchState","term","SelectComponent_3_ng_template_0_Template","item$_r11","selected","item_r10","SelectComponent_ng_container_4_ng_template_1_Template","item_r14","groupBy","isSomeItemsSelected","item$_r13","SelectComponent","compareWith","isAllItemsSelected","formControlSelect","markFirst","notFoundText","dropdownPosition","closeOnSelect","hideSelected","selectOnTab","bufferAmount","selectableGroup","selectableGroupAsModel","searchFn","trackByFn","clearOnBackspace","labelForId","isCounterShowing","inputAttrs","searchWhileComposing","minTermLength","editableSearchTerm","keyDownFn","arg","hideOn","addTag","searchable","clearable","isCheckboxSelect","isAutoWidth","selectedItemsFirst","blurEvent","focusEvent","changeEvent","openEvent","closeEvent","searchEvent","clearEvent","addEvent","removeEvent","scroll","scrollToEnd","sortByAlphabet","sortBySelection","optgroupTemplate","labelTemplate","labelTemplateSelect","multiLabelTemplate","footerTemplate","notFoundTemplate","typeToSearchTemplate","loadingTextTemplate","tagTemplate","loadingSpinnerTemplate","scrollHandler","getAppendToElement","ngSelectChangeHandler","handleOpen","dropdownElement","dropdownId","updateDropdownClasses","manageHideOn","handleClose","clearSearch","last","sort","localeCompare","onSearch","child","strategy","manageHideOnScroll","body","NgOptgroupTemplateDirective","NgLabelTemplateDirective","NgMultiLabelTemplateDirective","NgHeaderTemplateDirective","NgFooterTemplateDirective","NgNotFoundTemplateDirective","NgTypeToSearchTemplateDirective","NgLoadingTextTemplateDirective","NgTagTemplateDirective","NgLoadingSpinnerTemplateDirective","NgOptionComponent","SelectComponent_mbs_input_label_1_Template","SelectComponent_3_Template","SelectComponent_ng_container_4_Template","SelectComponent_ng_template_5_Template","addTagText","appearance","clearAllText","clearSearchOnAdd","loadingText","maxSelectedItems","typeToSearchText","virtualScroll","tslib__WEBPACK_IMPORTED_MODULE_10__","SelectModule","NgSelectModule","TextEllipsisModule","statusWidth","statusPosition","md","Switch","on","off","SwitcherComponent_span_7_span_2_2_ng_template_0_Template","SwitcherComponent_span_7_span_2_2_Template","labelSizeClass","SwitcherComponent_span_7_mbs_status_1_Template","SwitcherComponent_span_7_span_2_Template","expandLabel","expandedLabelPosition","showStatus","SwitcherComponent_div_10_ng_template_1_Template","switcherDescription","SwitcherDescription","SwitcherComponent","_statusWidth","getStatusWidth","beforeUpdate","afterUpdate","updateLabelSizeClass","performUpdate","nextValue","stop","stopImmediatePropagation","SwitcherComponent_span_5_Template","SwitcherComponent_span_7_Template","SwitcherComponent_div_9_Template","SwitcherComponent_div_10_Template","SwitcherComponent_ng_template_11_Template","loading$","SwitcherModule","StatusModule","index_r10","idPrefix","_r14","mode","modeEnum","Opened","_r16","Collapsed","_r19","ctx_r22","handleKeyDown","inputControl","_r26","onActionButtonPressed","actionButton","suggestion_r27","_r29","ctx_r28","onSuggestionItemClick","TagsInputComponent_div_12_mbs_button_1_Template","TagsInputComponent_div_12_button_2_Template","offsetWidth","filteredSuggestions","Mode","TagsInputComponent","suggestions","passedSuggestions","prepareSuggestions","controlContainer","dropdownClass","showExtendButton$","isStatic","isCollapseMode","separators","innerValue","addItem","formControlName","distinctUntilChanged","resetInnerValue","reset","emitEvent","createObserver","callback","collapseHeight","inputSizeClass","inputSize","keyCode","KeyCode","fromSuggestionsOnly","getPreparedInputValue","getPreparedUpdateValue","inputField","BackSpace","endsWith","strArr","sep","newStrArr","str","idx","suggestion","elements","trimWhiteSpaces","needToDisplayActionButton","TagsInputComponent_mbs_input_label_1_Template","TagsInputComponent_ng_container_4_Template","TagsInputComponent_ng_container_5_Template","TagsInputComponent_ng_container_7_Template","TagsInputComponent_input_9_Template","TagsInputComponent_span_10_Template","TagsInputComponent_mbs_input_errors_11_Template","TagsInputComponent_div_12_Template","minHeight","tslib__WEBPACK_IMPORTED_MODULE_14__","ControlContainer","TimepickerComponent","newTime","testRegExp","convertTime","momentFormat12","momentFormat24","needChangeInvalid","lastValidState","TIME_12_FORMAT_WITHOUT_SECONDS_REGEXP","meridian","showSeconds","spinners","hourStep","minuteStep","secondStep","imaskOptions","overwrite","autofix","lazy","blocks","HH","IMask","placeholderChar","hh","mm","A","enum","timePickerBlurHandler","moment","toUpperCase","TimepickerComponent_mbs_input_label_1_Template","TimepickerComponent_mbs_input_pre_append_3_Template","TimepickerComponent_div_9_Template","TimepickerComponent_mbs_input_pre_append_11_Template","TimepickerComponent_mbs_input_errors_12_Template","NgbTimeStringAdapterFormat12","parseTime","minutes","isMidnight","isAm","h","TimepickerModule","NgbTimepickerModule","AdvancedSelectModule","SharedPipesModule","AlertModule","BreadcrumbsModule","CardModule","FormGroupModule","FormSectionModule","InputPasswordComponent","disabledEye","form","FormGroup","password","passwordValidator","passwordInputType","setFormStatusAfterControlStatusChange","disable","enabled","markAsTouched","markAsDirty","updateValueAndValidity","enable","changeTypePassword","inputPassHandler","InputPasswordModule","APP_READONLY_MODE","InjectionToken","ListEditorModule","ModalSettings","isCustom","collapsing","titleTextOverflow","freezeBody","ModalService","modalService","rendererFactory","overflow","createRenderer","getRandomString","substr","confirm","settings","randomString","getOptions","responsive","modalRef","ModalComponent","setSettings","componentInstance","restoreDocumentScroll","toggleOptionCollapsing","openModal","openCustom","openRef","openWizard","backdrop","keyboard","baseModal","dismissAll","hasOpenModals","centered","beforeDismiss","randomModalClass","backdropClass","windowClass","component","header","titleIconClass","headerSize","showExpandedCross","showCloseCross","footer","showFooter","show","okButton","okButtonText","okButtonDisabled$","disabled$","okButtonLoading$","okButtonType","okShow","showOkButton","cancelButton","cancelButtonText","cancelShow","showCancelButton","isCustomModal","tmp","$modalContent","ModalModule","LoaderModule","PageFooterModule","ProgressBarModule","SidepanelModule","SmartSearchModule","SmartSearchConfig","StepsModule","TabsetModule","ToastModule","NgbToastModule","WizardModule","NgbModalModule","internalModules","ListSelectModule","TableGridModule","TileModule","MbsUiKitModule","SHARED_PERSISTENT_STATE_PROVIDERS","ConfirmReason","NOOP","SAVE","BACK","DISCARD","CAN_CLOSE","CANNOT_CLOSE","queueScheduler","QueueScheduler","AsyncScheduler","QueueAction","AsyncAction","scheduler","work","schedule","delay","flush","execute","_execute","requestAsyncId","arrReducer","arr","zipAll","project","joinAllInternals","joinFn","operate","subscriber","accumulator","seed","scanInternals","arguments","mergeMap","sources","mapOneOrManyArgs","identity","zip","DataChangeWatcherService","tabsService","readonlyMode","components","attachComponent","deattachComponent","splice","c","detectChanges$","take","scheduled","reasons","reason","EnumHelper","HasFlag","showSaveModal","allValid","isValidSidepanel","modalText","genericPanel","modalSettings","getModalSettings","textInvalid","asapScheduler","openFirstError","catchError","save","back","cancel","DataChangeWatcherBase","changeDetector","canDiscardWithChanges","observableObjects","iif","trueResult","falseResult","defer","isChanged","attachObject","getRawData","ob","previousData","hold","SidepanelCrudBase","loadingData","loadingDataInternal","setLoadingByKey","defaultLoadingDataKey","cdNew","delete","loadingDataAcc","manualTabInitialisation","mergeClose","data$","switchMap","modalResult","handleSave","canUpdateData","canUpdate","Id","GuidEmpty","isCreate","tabset","select","updateData","dataCopy","saveEvent","tap","activeId","internalLoadingForSave","finalize","deleteEvent","internalLoadingForDelete","handleDelete","panelClosed","panelOpened","changeTabsetItemsStatusLoadingAndDisabled","qt","forceDisabled","forceLoading","canClose","allTabsValid","SidepanelComponent","TabsetDirective","SidepanelService","onOpen","onClose","vc","p","createComponent","appRootNode","contentElem","changeDetectorRef","componentType","addAndOpenByType","closeAll","openByType","isOpened","removeByType","removeComponent","removeAll","allRemoved","sidepanel","openSidepanel","toggleLoadingDataByType","config","toggleLoadingData","closeSidepanel","closeByType","closeablePanels","closeResults","getPanelsOffsetWidth","panelIds","sidePanel","getPanelOffsetWidthByType","SidepanelBase","bodyClasses","StepComponent","number","readOnly","lastStep","singleStep","activate","complete","StepComponent_span_6_Template","StepComponent_div_11_Template","StepComponent_div_12_Template","StepsComponent","activeStep","myActiveStep","handleActiveStep","steps","activeStepIndex","WizardStepComponent","myValid","visible","myVisible","hasChanges","ngModel","ngFormControlName","ngFormControlDirective","ngFormGroupDirective","ngFormGroupName","ngForm","blockEnterIfControlFocus","completed","activated","canOpen","changesBeforeValidation","isNext","isSave","nextEvent","detach","notActivate","NgModel","FormControlName","FormControlDirective","FormGroupDirective","FormGroupName","NgForm","WizardStepComponent_ng_container_0_Template","WizardTitle","WizardStepMarks","$markedSteps","pause","marks","isEmpty","getMark","stepName","action","description","needBlock","args","important","addMark","actions","cleanUp","updatePause","removeMark","mark","WizardComponent_4_ng_template_0_Template","wizardTitle","closeWithConfirm","step_r15","markedStep_r18","_r21","selectManualStep","WizardComponent_ng_container_7_ng_container_2_li_3_span_6_Template","isOpenSteps","stepClasses","i_r16","stepMarks","WizardComponent_ng_container_7_ng_container_2_li_3_Template","step_r23","_r25","WizardComponent_ng_container_7_ng_container_6_li_2_Template","WizardComponent_ng_container_7_ng_container_2_Template","handleStepScroll","WizardComponent_ng_container_7_ng_container_6_Template","WizardComponent_ng_container_7_mbs_loader_7_Template","WizardComponent_ng_container_7_ng_container_8_Template","stepsOrientation","showSteps","scrollableStepContent","stepContainerClasses","currentStep","helpLink","WizardComponent_footer_10_div_2_ng_container_1_Template","backButton","changeStep","WizardComponent_footer_10_mbs_button_group_3_mbs_button_1_span_1_Template","replaceAll","nextAndBackButtonType","buttonLoadingMode","nextButton","_r42","WizardComponent_footer_10_mbs_button_group_3_mbs_button_2_span_1_Template","WizardComponent_footer_10_mbs_button_group_3_mbs_button_1_Template","WizardComponent_footer_10_mbs_button_group_3_mbs_button_2_Template","ctx_r43","saveButton","WizardComponent_footer_10_mbs_button_4_span_1_Template","disableSpinner","spinnerShow","saveButtonDisabled","saveButtonTooltip","saveButtonGroupItem_r46","_r50","WizardComponent_footer_10_mbs_button_5_span_1_Template","WizardComponent_footer_10_mbs_button_6_span_1_Template","WizardComponent_footer_10_div_1_Template","WizardComponent_footer_10_div_2_Template","WizardComponent_footer_10_mbs_button_group_3_Template","WizardComponent_footer_10_mbs_button_4_Template","WizardComponent_footer_10_mbs_button_5_Template","WizardComponent_footer_10_mbs_button_6_Template","hideNextAndBackButtons","saveButtonGroup","WIZARD_VALUE_ACCESSOR","WizardComponent","discardChangesText","WizardFooterPrependDirective","canClosed","activeModal","internalStep","updateStepState","stepQueue","registerStepDisplay","allStepValid","sanitizer","defaultWizardHeight","ignoreSteps","hideCrossButton","showSaveBtnOnClose","checkChanges","completeClass","invalidClass","activeClass","stepsContainerClass","disableStepChangeOnKeyboardKey","canCloseWithoutSave","initialLoading","stepSelected","stepScroll","sanitizedHeight","setSanitizedHeight","closeWizard","modalList","listLength","confirmClose","canSave","then","goToErrorStep","catch","nextStepWizard","backStepWizard","initWizardSteps","resetConfirmClose","firstStepTitle","setFirstStep","bypassSecurityTrustStyle","hasQueue","getQueue","goToRequiredStep","closeHandler","newSteps","skipCurrentStep","queue","nextStep","direction","getStepByDirection","stepsArray","currentStepIndex","targetStepIndex","resetStepsAfter","classesArr","stepInQueue","modal","addBreadcrumb","category","timestamp","isFirst","isLast","initialStep","i3","WizardComponent_h5_3_Template","WizardComponent_4_Template","WizardComponent_div_5_Template","WizardComponent_ng_container_7_Template","WizardComponent_ng_template_8_Template","WizardComponent_footer_10_Template","NgbActiveModal","DomSanitizer","ListSelectGroupCheckDirective","ListSelectGroupHeaderDirective","ListSelectGroupInnerItemDirective","advancedSearchFilters","updateFilters","searchTemplates","filterTerm","searchChangeHandler","filterLabel","ListSelectComponent_div_2_mbs_advanced_search_1_Template","ListSelectComponent_div_2_mbs_input_2_Template","ListSelectComponent_ng_template_4_div_0_div_2_mbs_checkbox_1_Template","ListSelectComponent_ng_template_4_div_0_div_2_Template","ListSelectComponent_ng_template_4_div_0_div_3_Template","showTopControlsCheckbox","ListSelectComponent_ng_template_4_div_0_Template","handleChangeItemChecked","scrolledIndexChange","scrollEnd","classesTable","mySelectedData","bindDisabledValues","bindSelected","bordered","changeSortState","checkboxCellClass","checkboxCellWidth","tableContentClass","virtualScrolling","virtualItemSize","virtualItemsNumber","minVirtualScrollItemSize","maxVirtualScrollItemSize","virtualScrollItemSizeDivider","minBufferPx","maxBufferPx","filtered","headers","hover","isNeedSelectRow","rowClasses","keepState","loaderType","multipleSelect","noDataMessage","selectAllIgnoreDisabled","selectRowClass","showCheckboxes","selectOnlyOnCheckboxClick","showHeaders","striped","tableTemplates","selectedData","ListSelectComponent_ng_template_6_ng_template_0_Template","ListSelectComponent_ng_template_6_span_1_Template","ListSelectComponent_ng_template_6_ng_template_2_Template","prependTopControlsLabel","appendTopControlsLabel","AppendTopControlsLabel","PrependTopControlsLabel","LIST_SELECT_VALUE_ACCESSOR","ListSelectComponent","listType","useAdvancedSearch","mySelectedGroups","myCheckToggleSelectAllId","showSearch","showCounter","counterLabel","unselectLabel","loadSource","changeSelected","scrolled","filterByFieldsPredicate","filterFields","field","tableHeight","listClass","myClassesTable","updateMainCheckboxData","updateSelectedData","newSelected","noop","selectedLength","filteredLength","unselectAll","setSelectedItemsIfFiltered","selectedFiltered","changeFn","needAdd","needDel","withoutNeedDel","touchedFn","setFilteredData","TableCellDirective","ListSelectComponent_div_2_Template","ListSelectComponent_ng_container_3_Template","ListSelectComponent_ng_template_4_Template","ListSelectComponent_ng_template_6_Template","LoaderComponent","useFixedDocumentSpinner","_useFixedSize","_hasVerticalScroll","spinnerSizeClass","documentHasVerticalScrollbar","useFixedSize","checkSpinnerPosition","bgClass","spinnerColorClass","theme","fixedSpinnerClass","onResize","ModalFooterDirective","toggleExpand","ModalComponent_ng_container_0_div_9_div_2_Template","ModalComponent_ng_container_0_div_9_div_3_Template","ModalComponent_ng_container_0_ng_template_10_span_0_Template","isHeaderSettingsString","ModalComponent_ng_container_0_ng_template_12_ng_container_0_Template","ModalComponent_ng_container_0_ng_template_18_ng_container_0_Template","ModalComponent_ng_container_0_div_23_ng_template_1_mbs_button_0_Template","ModalComponent_ng_container_0_div_23_ng_template_1_mbs_button_1_Template","ModalComponent_ng_container_0_div_23_ng_template_1_Template","ModalComponent_ng_container_0_div_23_ng_container_3_Template","customFooter","ModalComponent_ng_container_0_div_3_Template","ModalComponent_ng_container_0_ng_container_8_Template","ModalComponent_ng_container_0_div_9_Template","ModalComponent_ng_container_0_ng_template_10_Template","ModalComponent_ng_container_0_ng_template_12_Template","ModalComponent_ng_container_0_ng_template_16_Template","ModalComponent_ng_container_0_ng_template_18_Template","ModalComponent_ng_container_0_ng_template_20_Template","ModalComponent_ng_container_0_ng_container_22_Template","ModalComponent_ng_container_0_div_23_Template","getHeaderSizeClass","isHeaderSettingsTemplateRef","computedBodyClass","expandedClass","canExpand","expandedChange","parentElement","modalDialog","removeAttribute","dismiss","headerCustomClasses","ModalComponent_ng_container_0_Template","ModalComponent_app_loader_1_Template","ErrorsEnum","Uknown","Forced2FANotConfigured","DatabaseAccessLayerCreatingError","DatabaseAccessLayerReadingError","DatabaseAccessLayerUpdatingError","DatabaseAccessLayerDeletingError","InvalidModelError","EmailNotSentBecauseServiceNotConfiguredError","EntityNotFoundError","OperationCanBeDoneOnceError","SettingsNotConfiguredError","WebManagerNotAuthorizedWithPermission","NotUniqueProperty","WebManagerNotAuthorizedChangeCompanyInfo","ImpossibleOperation","RmmSummaryCounter","RmmParameterNotFound","RmmCountersRecoveryError","RmmFolderCreatingOr","RmmFileOperationError","RmmProcessError","RmmTimeOut","RmmTheInputParameter","RmmPreviousOperationNot","RmmFileNotExists","RmmPathNotExists","RmmReadonlyMode","RmmPowerShellScriptsAre","RmmAnCancelRequest","RmmHyperVNotFound","RmmHyperVServiceNotFound","RmmHyperVServiceNotRunning","RmmStartProcessAs","RmmUpdateDownloadError","RmmUpdateInstallationError","RmmUpdatesNotFound","RmmUpdatesListCorrupted","RmmThereMayBe","RmmInstalledUpdatesNot","RmmAvailableUpdatesNot","RmmUpdateNotInstalled","RmmHddErrorRetrievingSmart","RmmHddGetSmartRegisters","RmmHddConvertingHexValue","RmmAccessDenied","RmmTimeoutGettingComputers","RmmTimeoutClientConnect","rotate","asc","desc","PersistentStateServiceBase","namespace$","myChange","namespace","readData","userId","getEmitterInstance","listenStorageChange","storageArea","localStorage","set","setItem","storageData","getItem","clearData","myData","recursiveDefineReactiveProperties","sourceObj","getPropertiesOptions","writable","enumerable","properties","defineProperties","SharedPersistentStateEnum","table","grid","SHARED_PERSISTENT_STATE","useFactory","initSharedPersistentStateService","SharedPersistentStateService","SharedPersistentState","viewTableGridMode","eventEmitter","innerContentType","SidepanelComponent_ng_container_17_div_2_ng_container_1_Template","SidepanelComponent_ng_container_17_div_2_ng_template_2_Template","SidepanelComponent_ng_container_17_mbs_loader_1_Template","SidepanelComponent_ng_container_17_div_2_Template","disabledDelete","loadingForDelete$","actionNames","saveButtonTooltipPosition","disabledSave","loadingForSave$","SidepanelComponent_footer_19_ng_template_2_div_0_Template","SidepanelComponent_footer_19_ng_template_2_div_2_Template","showDelete","hideSave","SidepanelComponent_footer_19_ng_template_2_Template","SidepanelComponent_footer_19_ng_container_4_Template","footerTemplateContent","externalLoadingForSave","externalLoadingForDelete","showPanel","combineLatest","internal","external","loadingForSave","loadingForDelete","applyExpandedStyle","Error","sidebarSideClass","side","tabs","large","SidepanelComponent_ng_template_5_Template","SidepanelComponent_ng_template_7_Template","SidepanelComponent_ng_container_9_Template","SidepanelComponent_div_10_Template","SidepanelComponent_ng_template_15_Template","SidepanelComponent_ng_container_17_Template","SidepanelComponent_ng_container_18_Template","SidepanelComponent_footer_19_Template","headerClass","SmartSearchCharacters","GROUP_LEFT","GROUP_RIGHT","NEGATIVE","GREATER","GREATER_EQUAL","LESS","LESS_EQUAL","SPACE","MASK","SEQUENCE","CONDITION_CHARS","INVALID_CLASS","TAG_CLASS","FIELD_CLASS","PLAIN_CLASS","SMART_SEARCH_CLASSES","SmartSearchValidationState","Unknown","Valid","Invalid","ActionType","Comma","Space","convertCondition","rawCondition","convertModel","fields","f","getNormalizeTerm","fieldValue","conditionValue","tagValue","hashtag","CODE_ENTER","CODE_END","CODE_HOME","CODE_LEFT","CODE_UP","CODE_RIGHT","CODE_DOWN","debounce","durationSelector","hasValue","lastValue","durationSubscriber","createOperatorSubscriber","innerFrom","HighlightHelper","addClassInRange","classValue","removeClassInRange","removeSmartSearchClassesInRange","highlightNodes","models","tagElements","fieldElements","highlightWords","replaceClassInRange","className","SmartSearchKeywordDirective","toModelTemplate","filterByProp","isMultiple","isSequenceMultiple","addGroupBrackets","enableCacheStorage","SmartSearchParser","parseSingleWords","conditionChars","wordModels","singleWordReg","word","conditionElements","isGrouped","parseGroupWords","allMatched","wordLeftPart","wordPartElements","nextMatch","wordRightPart","wordRightPartElements","parseWords","parseTag","tagLower","tagFormatter","toLocaleLowerCase","keywords","searchTag","isHashtag","valueSource","valueElements","getField","conditionIndex","fieldIndex","hasEndComma","wordPart","wordElements","firstMatch","formatter_r14","leftCaretClearValue","i_r11","SmartSearchComponent_ng_container_11_ng_template_3_Template","ngbDropdownAnchorLeftStyle","SmartSearchComponent","highlightHelperFactory","bottomLeftStr","caretNode","isPreviousContentEqualGroupBracket","previousElementSibling","searchDiv","newTextContent","createFragment","createDocumentFragment","setCaretAfterNode","lastElementChild","updateState","showAutocomplete","cdr","modelValidationState","cachedValues","cachedValueState","placementNgbDropdownForm","formControlRef","toggleButtonRef","smartSearch","highlight","updateOn","placementNgbDropdown","manualRouteHandling","searching$","searchingChange","routeChanged","css","hasTextContentChanges","queueOnUpdateState$","mbsSelectOpenedNgOptions","onUpdateState$","queueFocus$","onPasteValue$","keywordTemplates","sequenceMultipleActions","actionType","skipSpaceAfterValue","isMouseSelectValue","hashtagsFormatter","updateStateImmediate","getAddGroupBrackets","needWrapToBranch","skipGroupSymbols","isKeyword","wrapToBranch","isToggleButtonClicked","isMbsSelectCloseCtrlClicked","isPlaceholderClicked","Window","isOpenedDropdownMenu","ngbDropdownMenuForm","dropdownsMenus","callbacks","q","rxDebounce","asyncScheduler","shareReplay","currentCaret","tagTemplates","mergeTagTemplates","handleUpdateModel","input$","keyup$","keydown$","keyupEnter$","inputType","insertText","code","metaKey","handleUndo","handleArrowUpDown","handleKeyboardUp","focus$","handlePaste","handleCut","showDropdown$","placeholderClick","menu","stringifySmartSearchModel","inputTemplates","contentTemplates","templates","keyBy","separator","startsWith","updateContenteditableDiv","paste","removeSelectedRangeElements","startContainer","endContainer","pasteFragment","lastChild","nextSibling","insertBefore","selection","rangeCount","childNodes","node","removeBlockElement","caretIndex","HTMLDivElement","onlySpanWithText","childNode","nodeName","fragment","HTMLSpanElement","HTMLBRElement","getValidationStateClasses","endOffset","endElement","getParentSpan","span","createText","spanArray","DocumentFragment","handleDrop","pop","removeAllChild","setCaretToTheBeginning","setCaretToTheEnd","counter","getCaretNodeInfo","parseSearchContent","checkActualCachedState","usedTags","caretPart","getLeftCaretPart","leftCaretValue","getClearTerm","leftCaretCondition","availableTags","getAvailableTags","available","getAvailable","tagModel","tagIndex","elemIndex","wordIndex","hashIndex","getCorrectSearchPart","workSource","invalidPart","allGroupChars","char","nextElement","invalidStart","invalidElements","getRangeElements","correctElements","getSearchModelByContent","correctSource","regRaw","regRegex","previousSameModel","sourcePart","sourceElements","startSpan","endSpan","removeSpan","usedTagSet","nodeIndex","childElementCount","nodeType","debugCounter","showAutocompleteImmediate","caretElement","it","matchedItems","newIt","space","createTag","keyword","raw","spanClass","insertAdjacentHTML","insertAdjacentText","spaceSpan","rangeSelection","setStartAfter","setEndAfter","setStartBefore","setEndBefore","valueNodes","prepareCachedItem","removeElements","nextElementSibling","nextCaret","nextCaretIndex","newChild","refChild","oldChild","addItemToCache","searchValue","cachedValue","modelTag","isClickedOutsideNgbDropdown","getAttribute","deps","SmartSearchComponent_ng_container_11_Template","SmartSearchComponent_div_13_Template","SmartSearchComponent_mbs_button_16_Template","SmartSearchComponent_div_20_Template","SmartSearchComponent_button_21_Template","SmartSearchComponent_ng_container_24_Template","termCurrent","spaceReg","textClasses$","StatusIconType","default","StatusComponent","clickable","iconPosition","textCustomClasses","textSize","hostClasses","mbsClick","iconClasses$","showStatusText$","needUpdateIconClasses","firstChange","needUpdateTextClasses","getIconClasses","getTextClasses","getClassesAsString","parsedClassList","getClassesWithoutJustEmptySpace","isJustEmptySpace","updateIconClasses","updateTextClasses","textClasses","validateSizeClass","getCustomClasses","updateShowStatusText","getValue","isShow","checkNgContentStatusText","ngContentWrapperRef","StatusComponent_span_2_Template","GridTileDirective","TableHeaderNameDirective","headerFor","mbsTableHeader","TableControlDirective","TableFilterDirective","TableNavContentDirective","TableSortArrowDirective","TableSortGroupDirective","sortHeaders","rotateSequence","resetSortArrow","orderBy","changeState","column","columnName","TableSortDirective","columnNameLegacy","render2","cardIndex_r6","cardClickHandler","gridHeaders","item_r5","isNeedSelectCard","selectCardClass","checkCardInSelected","statusClass","selectedCardIndex","tileTemplate","GridComponent_ng_container_3_ng_container_1_Template","noDataIsTemplate","noDataMessageDefault","MultipleSelectType","Mouse","Keyboard","GridComponent","isGridColumn","multipleSelectType","bindSelectedChildren","selectedCards","changeSelectedCards","clickTableElement","shiftSelectedIndex","cardIndex","updateSelectedCards","isMac","navigator","platform","lastRowIndex","unselectIndex","unselect","myTrackBy","GridComponent_app_loader_1_Template","GridComponent_ng_container_2_Template","GridComponent_ng_container_3_Template","GridComponent_ng_template_4_Template","FiltersGroupDirective","filtersGroup","filter_r7","TableNavComponent_div_0_div_1_div_2_div_1_Template","myFilters","TableNavComponent_div_0_div_1_div_3_ng_container_1_Template","myContent","TableNavComponent_div_0_div_1_ng_container_1_Template","TableNavComponent_div_0_div_1_div_2_Template","TableNavComponent_div_0_div_1_div_3_Template","fullContentWidth","wideContentMode","xlWideContentMode","TableNavComponent_div_0_div_2_div_2_ng_container_1_ng_container_1_Template","control_r17","TableNavComponent_div_0_div_2_div_2_ng_container_1_Template","customPrependControls","onPageChange","TableNavComponent_div_0_div_2_div_3_ng_template_2_Template","TableNavComponent_div_0_div_2_div_3_ng_template_3_Template","paginationOptionsInternal","dataSize","maxSize","pageSize","_r24","export","exportButtonName","size_r27","handleChangePageSize","getPageSizeMenuText","TableNavComponent_div_0_div_2_div_5_ng_template_3_button_0_Template","pageSizeList","TableNavComponent_div_0_div_2_div_5_ng_template_3_Template","getPageSizeText","_r31","refresh","refreshing","_r33","onViewChange","sharedPersistentStateEnum","myViewMode","TableNavComponent_div_0_div_2_div_8_ng_container_1_ng_container_1_Template","control_r36","TableNavComponent_div_0_div_2_div_8_ng_container_1_Template","customAppendControls","TableNavComponent_div_0_div_2_div_2_Template","TableNavComponent_div_0_div_2_div_3_Template","TableNavComponent_div_0_div_2_div_4_Template","TableNavComponent_div_0_div_2_div_5_Template","TableNavComponent_div_0_div_2_div_6_Template","TableNavComponent_div_0_div_2_div_7_Template","TableNavComponent_div_0_div_2_div_8_Template","hasFilters","showPagination","showExportToCSVButton","showRefreshButton","enableSwitcher","switcherView","TableNavComponent_div_0_div_1_Template","TableNavComponent_div_0_div_2_Template","needToShowPaginationColumn","TableNavComponent","filterTemplates","filters","customContentTemplate","customContent","disableViewSwitch","innerWidth","viewChange","lastViewMode","myControls","controlTemplates","customControls","sharedPersistent","paginationOptionsDefault","showNav","pageSizeChange","pageSwitch","pageChange","paginationOptions","getDefaultPageSizeText","pageSizeMenuFormatter","TableNavComponent_div_0_Template","onPageSwitch","navContent","TableGridComponent_div_1_mbs_checkbox_3_Template","TableGridComponent_div_1_div_4_Template","selectedItems","TableGridComponent_ng_template_2_ng_template_0_Template","TableGridComponent_ng_template_2_span_1_Template","TableGridComponent_ng_template_2_ng_template_2_Template","handleSelectedRow","handleClickTableElement","handleSort","setTotalSelectedItems","arrayRowsWithClasses","bindChildren","canSelectParent","bindKeyForRowClass","bindParentKey","borderedTable","childHeaderClasses","childRowsClasses","childrenTemplates","collapsibleMode","cardMode","needChildrenPaddingLeft","displayData","totalItems","totalSelectedItems","getItems","headerTemplates","highlightOpened","hoverTable","selectable","loadedChildren","stickyHeader","showSelectAllCheckbox","needToggleOnEndRow","dependenceChildren","disableChildren","getCustomRowClasses","toggleCellWidth","showTableCheckboxes","showCheckboxesForChildren","showChildrenHeaders","sizeTable","stripedTable","subtitleHeaders","staticHeightIfVoidData","cellTemplates","showSelectAllHint","entityName","selectedCountText","selectAllButtonText","cancelSelectionText","infiniteScroll","infiniteScrollDistance","infiniteScrollThrottle","infiniteScrollLoading","scrollWindow","gridHeaderTemplate","enableCardSelection","TableGridComponent","_data","serverSidePagination","_displayData","_selectedItems","_paginationOptions","_selectable","cellRefTemplates","childrenRefTemplates","cells","childTemplates","removeSelectionAfterDoubleClick","rowClick","doubleClickTableElement","selectAllOnAllPages","updateDisplayData","needToShowNav","updateShowingNavAfterChanges","getFlatData","acc","flatAllLength","flatData","_clickedTableElement","_clickTimerTableElement","clearTimeout","removeSelection","itemsCount","getClippedInitData","TableGridComponent_mbs_table_nav_0_Template","TableGridComponent_div_1_Template","TableGridComponent_ng_template_2_Template","TableGridComponent_mbs_table_5_Template","TableGridComponent_mbs_grid_6_Template","tslib__WEBPACK_IMPORTED_MODULE_20__","ScrollingModule","InfiniteScrollModule","TableComponent_ng_container_1_ng_container_2_Template","classTableGridObject","handleGridSizeChanged","TableComponent_ng_template_2_ng_container_0_ng_container_2_Template","TableComponent_ng_template_2_ng_template_1_ng_container_1_Template","TableComponent_ng_template_2_ng_container_0_Template","TableComponent_ng_template_2_ng_template_1_Template","headerClassToObject","column_r29","TableComponent_ng_template_4_div_0_Template","TableComponent_ng_template_4_div_1_Template","allChecked","isDisableHeaderCheckbox","indeterminateMainCheckbox","TableComponent_ng_template_6_div_1_div_1_mbs_checkbox_1_Template","TableComponent_ng_template_6_div_1_ng_container_3_div_1_ng_container_1_Template","column_r46","template_r50","TableComponent_ng_template_6_div_1_ng_container_3_ng_template_2_ng_container_0_Template","TableComponent_ng_template_6_div_1_ng_container_3_div_1_Template","TableComponent_ng_template_6_div_1_ng_container_3_ng_template_2_Template","findHeaderTemplate","TableComponent_ng_template_6_div_1_div_1_Template","TableComponent_ng_template_6_div_1_div_2_Template","TableComponent_ng_template_6_div_1_ng_container_3_Template","rowStyles","gridHeaderColumns","gridSize","TableComponent_ng_template_6_div_5_ng_container_2_ng_container_1_Template","row_r57","rowIndex_r58","_r61","ctx_r63","TableComponent_ng_template_6_div_5_ng_container_2_Template","TableComponent_ng_template_6_div_5_ng_container_3_Template","virtualScrollViewportSize","virtualScrollItemSize","TableComponent_ng_template_6_ng_template_6_ng_container_0_ng_container_1_Template","row_r66","rowIndex_r67","TableComponent_ng_template_6_ng_template_6_ng_container_0_Template","TableComponent_ng_template_6_ng_template_6_ng_container_1_Template","ctx_r39","TableComponent_ng_template_6_div_1_Template","TableComponent_ng_template_6_ng_container_2_Template","TableComponent_ng_template_6_mbs_loader_4_Template","TableComponent_ng_template_6_div_5_Template","TableComponent_ng_template_6_ng_template_6_Template","contentClass","parentScrollMode","_r38","TableComponent_ng_template_9_ng_container_0_ng_container_2_Template","TableComponent_ng_template_9_ng_container_0_Template","hasData","getSelectedCountTextDefault","_r78","ctx_r77","selectAllOnAllPagesHandle","getSelectAllButtonTextDefault","_r80","ctx_r79","clearSelection","ctx_r76","cancelSelectionTextDefault","TableComponent_ng_template_11_div_0_ng_container_2_Template","TableComponent_ng_template_11_div_0_ng_template_3_Template","TableComponent_ng_template_11_div_0_mbs_button_5_Template","TableComponent_ng_template_11_div_0_mbs_button_6_Template","isSelectedAllOnAllPages","TableComponent_ng_template_11_div_0_Template","TableComponent_ng_template_15_ng_container_0_ng_container_2_ng_container_2_Template","getGridWidth","columnClassToObject","template_r87","row_r81","rowIndex_r82","TableComponent_ng_template_15_ng_container_0_ng_container_2_Template","ctx_r83","getClassListForRow","myTemplates","ctx_r91","isChecked","indeterminateState","disabledStateByRow","_r101","ctx_r99","handleToggleCollapse","ctx_r97","isCollapsed","TableComponent_ng_template_15_ng_container_1_div_3_button_1_Template","TableComponent_ng_template_15_ng_container_1_div_3_span_2_Template","ctx_r92","loadingChildren","TableComponent_ng_template_15_ng_container_1_ng_container_4_ng_container_2_Template","ctx_r93","index_r105","template_r104","_r112","ctx_r110","ctx_r108","TableComponent_ng_template_15_ng_container_1_div_5_button_1_Template","TableComponent_ng_template_15_ng_container_1_div_5_span_2_Template","ctx_r94","TableComponent_ng_template_15_ng_container_1_div_6_div_1_ng_container_2_ng_container_1_Template","column_r123","TableComponent_ng_template_15_ng_container_1_div_6_div_1_div_1_Template","TableComponent_ng_template_15_ng_container_1_div_6_div_1_ng_container_2_Template","ctx_r115","subtitleStyles","gridTemplateColumns","TableComponent_ng_template_15_ng_container_1_div_6_ng_container_2_ng_container_3_ng_template_1_Template","_r119","childRow_r126","TableComponent_ng_template_15_ng_container_1_div_6_ng_container_2_ng_container_3_Template","ctx_r116","getCollapsableModeVSContainerHeight","TableComponent_ng_template_15_ng_container_1_div_6_ng_template_3_ng_container_0_ng_template_1_Template","childRow_r130","TableComponent_ng_template_15_ng_container_1_div_6_ng_template_3_ng_container_0_Template","ctx_r118","ctx_r134","childRow_r133","TableComponent_ng_template_15_ng_container_1_div_6_ng_template_5_ng_container_2_ng_container_2_Template","ctx_r135","actualTableColumnsForStyles","childIndex_r139","template_r138","_r144","ctx_r143","handleRowClick","TableComponent_ng_template_15_ng_container_1_div_6_ng_template_5_div_1_Template","TableComponent_ng_template_15_ng_container_1_div_6_ng_template_5_ng_container_2_Template","ctx_r120","myChildrenTemplates","TableComponent_ng_template_15_ng_container_1_div_6_div_1_Template","TableComponent_ng_template_15_ng_container_1_div_6_ng_container_2_Template","TableComponent_ng_template_15_ng_container_1_div_6_ng_template_3_Template","TableComponent_ng_template_15_ng_container_1_div_6_ng_template_5_Template","ctx_r95","_r117","_r149","ctx_r147","TableComponent_ng_template_15_ng_container_1_div_2_Template","TableComponent_ng_template_15_ng_container_1_div_3_Template","TableComponent_ng_template_15_ng_container_1_ng_container_4_Template","TableComponent_ng_template_15_ng_container_1_div_5_Template","TableComponent_ng_template_15_ng_container_1_div_6_Template","ctx_r151","TableComponent_ng_template_15_ng_container_2_ng_container_3_ng_container_2_Template","ctx_r152","index_r155","template_r154","_r160","ctx_r158","TableComponent_ng_template_15_ng_container_2_div_2_Template","TableComponent_ng_template_15_ng_container_2_ng_container_3_Template","ctx_r85","TableComponent_ng_template_15_ng_container_0_Template","TableComponent_ng_template_15_ng_container_1_Template","TableComponent_ng_template_15_ng_container_2_Template","isCardHeader","TableComponent","#flatData","#selectedItems","#extendedData","#selectable","#defaultHighlightClass","#classesTable","myHeaderTemplates","contentHeaderTemplates","updateClassTableGridObject","setDependenceChildren","isBindChildrenInMultipleSelect","updateCheckboxesState","itemData","requestedChildren","updateFlatData","selectAllIsNotDisabled","isShowSelectAllTooltip","dataItem","lastShiftSelectedIndex","openedCollapsibleItems","isSelectedRow","generateActualTableColumnsForStyles","updateStylesAndHeaders","updateDataDependentOptions","requested","opened","someSelected","someNoteSelected","keep","childItem","styles","headerStyles","style","getStyles","headerStyle","getHeaderStyles","subtitleStyle","gridColMin","gridColSize","isParent","rowIndex","rowClass","getRowClass","compareKey","class","childRowsClass","updateSelectedItems","clone","selectedKey","_row","isCheckboxCell","buttonParent","linkParent","switcherParent","oldState","updateShiftSelectedRows","parent","getParent","firstState","currentClickIndex","getOriginalFlatData","colSpan","Xt","colspan","j","col","sizes","classToObject","isTextMuted","columns","headerName","notDisabledElements","selectAll","openedItemIndex","rowCount","TableComponent_ng_container_1_Template","TableComponent_ng_template_2_Template","TableComponent_ng_template_4_Template","TableComponent_ng_template_6_Template","TableComponent_div_8_Template","TableComponent_ng_template_9_Template","TableComponent_ng_template_11_Template","TableComponent_ng_template_13_Template","TableComponent_ng_template_15_Template","tslib__WEBPACK_IMPORTED_MODULE_22__","TabsetContentDirective","TabsetGroupDirective","isActive","bool","firstActive","parentTabset","parentTab","TabsetDirectiveToken","TabsetItemDirectiveToken","TabsetLinkDirective","TabsetItemDirective","activateSelf","isActiveAndNotDisabled","nested","nestedItems","isLoading","loadOnAppearance","isPanelInDom","ngAfterContentChecked","contentTemplate","contentDirectives","horizontal","inline","defaultTab","tab","updateActiveId","activateGroup","groupId","groups","itemId","currentId","TabsetItemTabComponentPair","TabsService","tabSetComponentPairs","errorsBus$","myTabSets","Map","attachTabSet","tabSetValidated","tabSet","deattachTabSet","tabSetItem","customValidItem","validTabsetItems","showErrors$","pair","pairs","newTab","firstFoundPair","checkAllTabsStatus","pairsStatuses$","clearFormStatus$","statuses","getDataByTabId","tabId","TabsetItemValidDirective","TabsetValidatedDirective","tabSetService","TabBase","lastStatus","myLastStatus","formStatus$","afterFormInit","subscriptions","Subscription","FormsUtil","triggerValidation","TabsetDestroyerDirective","tabsetService","TabsetContentOutlet_ng_template_1_div_0_mbs_loader_1_Template","TabsetContentOutlet_ng_template_1_div_0_ng_template_3_Template","fullHeight","TabsetContentOutlet_ng_template_1_div_0_Template","TabsetContentOutlet","TabsetContentOutlet_ng_template_1_Template","nav","mbsClose","closeIcon","mbsType","dark","mbsSize","TagComponent","noBorder","MbsType","closableSize","closeIconClass","updateHostClasses","updateClosableSize","updateCloseIconClasses","customClass","temp","TagComponent_mbs_button_3_Template","TextEllipsisAppendDirective","TextEllipsisPrependDirective","TextEllipsisComponent_span_0_ng_container_1_Template","TextEllipsisComponent_span_6_ng_container_1_Template","TextEllipsisComponent","checkFit","isTruncated","defaultHostClasses","innerHostClasses","check","onContentChange","wrapperSpan","contentSpan","canAbilityCdRef","updateIsTruncated","textEllipsisWidth","spanWidth","TextEllipsisComponent_span_0_Template","TextEllipsisComponent_span_6_Template","ObserversModule","TileComponent_ng_template_2_div_3_ng_container_2_ng_template_5_Template","header_r11","item_r7","TileComponent_ng_template_2_div_3_ng_container_2_Template","TileComponent_ng_template_2_ng_container_2_Template","TileComponent_ng_template_2_div_3_Template","showBody","TileComponent_ng_template_6_div_0_Template","hoverAble","TileComponent","borderedSelected","autoDeselect","selectedClass","borderPadding","getTileClasses","TileComponent_ng_container_1_Template","TileComponent_ng_template_2_Template","TileComponent_ng_template_4_Template","TileComponent_ng_template_6_Template","toast_r5","ToastComponent_ngb_toast_0_header_3_ng_template_1_ng_container_0_Template","ToastComponent_ngb_toast_0_header_3_ng_template_1_Template","ToastComponent_ngb_toast_0_header_3_ng_container_3_Template","textBreak","TextBreak","both","button_r23","onButtonClick","inherit","ToastComponent_ngb_toast_0_footer_6_ng_template_1_div_1_Template","ToastComponent_ngb_toast_0_footer_6_ng_container_3_ng_container_1_Template","ToastComponent_ngb_toast_0_footer_6_ng_template_1_Template","ToastComponent_ngb_toast_0_footer_6_ng_container_3_Template","handleRemove","autohide","ToastComponent_ngb_toast_0_div_1_Template","ToastComponent_ngb_toast_0_header_3_Template","ToastComponent_ngb_toast_0_ng_container_5_Template","ToastComponent_ngb_toast_0_footer_6_Template","getToastClasses","isLast_r6","delayConfig","ToastComponent_ng_template_3_ng_container_0_Template","toast_r38","ToastComponent","visibleToasts","toasts","toastService","defaultConfig","getById","toast","showClose","classname","clickHandler","preventClose","ToastComponent_ngb_toast_0_Template","ToastComponent_ng_template_1_Template","ToastComponent_ng_template_3_Template","Toast","none","ToastService","subject","TreeElementDirective","TreeLoadMoreDirective","passiveCapturingEventOptions$1","normalizePassiveListenerOptions","passive","capture","RippleEventManager","_events","_delegateEventHandler","_getEventTarget","handlers","handler","handleEvent","addHandler","ngZone","handlersForEvent","handlersForElement","runOutsideAngular","removeHandler","RippleRenderer","_eventManager","_target","_ngZone","elementOrElementRef","_platform","_isPointerDown","_activeRipples","_pointerUpEventsRegistered","isBrowser","_containerElement","coerceElement","fadeInRipple","y","containerRect","_containerRect","animationConfig","defaultRippleAnimationConfig","radius","distanceToFurthestCorner","distX","abs","right","distY","bottom","sqrt","offsetX","offsetY","enterDuration","ripple","color","backgroundColor","transitionDuration","computedStyles","userTransitionDuration","animationForciblyDisabledThroughCss","transitionProperty","rippleRef","RippleRef","transform","persistent","_mostRecentTransientRipple","exitDuration","onTransitionEnd","_finishRippleTransition","onTransitionCancel","_destroyRipple","fadeOutRipple","rippleEl","opacity","_animationForciblyDisabledThroughCss","fadeOutAll","_getActiveRipples","fadeOut","fadeOutAllNonPersistent","setupTriggerEvents","_triggerElement","_removeTriggerEvents","pointerDownEvents","_onMousedown","_onTouchStart","_onPointerUp","pointerUpEvents","passiveCapturingEventOptions","_startFadeOutTransition","isMostRecentTransientRipple","eventListeners","isFakeMousedown","isFakeMousedownFromScreenReader","isSyntheticEvent","_lastTouchStartEvent","now","rippleDisabled","clientX","clientY","rippleConfig","isFakeTouchstartFromScreenReader","touch","touches","changedTouches","identifier","radiusX","radiusY","terminateOnPointerUp","trigger","MatTreeFlatDataSource","DataSource","_flattenedData","_treeFlattener","flattenNodes","_treeControl","dataNodes","initialData","_expandedData","connect","collectionViewer","expansionModel","changed","expandFlattenedNodes","TreeAppendDirective","getIsNodeExpandable","getNodeLevel","treeFlattener","MatTreeFlattener","transformFunction","getLevel","isExpandable","getChildren","_flattenNode","resultNodes","parentMap","flatNode","childrenNodes","_flattenChildren","childParentMap","structuredData","nodes","treeControl","currentExpand","nodeTransformer","expandable","getNodeChildren","TreeLoadMorePipe","nextElementParentId","currentItem","needLoadMore","currentParent","childrenLength","expanded","totalChildren","pure","TreeComponent_cdk_virtual_scroll_viewport_0_ng_container_2_div_2_ng_container_1_Template","loadMoreItem_r18","loadMoreTemplate","TreeComponent_cdk_virtual_scroll_viewport_0_ng_container_2_ng_container_1_Template","TreeComponent_cdk_virtual_scroll_viewport_0_ng_container_2_div_2_Template","index_r15","visibleFlatData","TreeComponent_cdk_virtual_scroll_viewport_0_ng_container_2_Template","classesForRoot","getVirtualScrollViewportSize","virtualTrackBy","TreeComponent_div_1_ng_container_2_ng_container_1_ng_container_1_Template","item_r22","TreeComponent_div_1_ng_container_2_div_2_ng_container_1_Template","loadMoreItem_r28","TreeComponent_div_1_ng_container_2_ng_container_1_Template","TreeComponent_div_1_ng_container_2_div_2_Template","needToRender","index_r23","TreeComponent_div_1_ng_container_2_Template","rootClasses","item_r30","handleClickLoadMore","disabledTree","disableIfLoadingSubtree","loadingSubtree","loadMoreButtonCaption","item_r33","TreeComponent_ng_template_4_div_3_ng_container_1_Template","appendTemplate","TreeComponent_ng_template_4_span_0_Template","_r41","handleClickItem","TreeComponent_ng_template_4_ng_container_2_Template","TreeComponent_ng_template_4_div_3_Template","hideCheckbox","hideTreeIcon","ctx_r46","customDisableText","item_r42","TreeComponent_ng_template_6_ng_template_0_span_1_Template","TreeComponent_ng_template_6_ng_template_0_ng_template_2_Template","_r47","TreeComponent_ng_template_6_div_3_ng_container_1_Template","ctx_r45","TreeComponent_ng_template_6_ng_template_0_Template","_r54","handleCheck","TreeComponent_ng_template_6_div_3_Template","disableCheckbox","_r62","item_r57","TreeComponent_ng_template_10_mbs_button_2_Template","TreeComponent_ng_template_10_ng_container_3_Template","hashTreeClasses","levelClass","itemClasses","otherClasses","selectedItemId","selectClass","gotChildren","TreeComponent","#nestedData","#expandAll","dataSource","updateVisibleData","updateHashItemsClasses","nodeList","dontSelectChildren","recursiveCheck","elementTemplate","elementAppendTemplate","elementLoadMoreTemplate","FlatTreeControl","dataChange","root","onlyOneSelect","nestedPadding","clickEmitBeforeLoad","childrenManualControl","toggleOnClick","closeOnClick","offCheckAndIndeterminate","findKey","mbsChange","mbsPreClick","mapParents","getFlatNodeAndSubject","nestedItem","getFlatByNested","endUpdateTreeElements","flatSubtree","flatItem","handleGotSubtree","isNotLazy","loadMoreNotLazy","loadMore","unionBy","isLoadMore","getSubtree","forceToggle","updateChildren","updateFileChildren","bubbleStateToRoot","treeItems","getDescendants","findParent","selectedItem","uncheckAllElements","updateParentNode","needCheck","same","updateParentFileNode","childrenChecked","doSelect","getSelected","findAndSelect","goToItem","virtualViewport","scrollToIndex","treeNativeElement","mbsTree","getElementsByClassName","scrollIntoView","behavior","getItemById","findAll","predicate","childrenArray","found","findAndSelectAll","resetSelection","checkItem","checkParentState","checkIndeterminate","flat","CdkVirtualScrollViewport","TreeComponent_cdk_virtual_scroll_viewport_0_Template","TreeComponent_div_1_Template","TreeComponent_ng_template_2_Template","TreeComponent_ng_template_4_Template","TreeComponent_ng_template_6_Template","TreeComponent_ng_template_8_Template","TreeComponent_ng_template_10_Template","CdkTreeModule","formatWithLeadingZero","padStart","ConverterSecondsPipe","secs","days","floor","seconds","standalone","SafePipe","bypassSecurityTrustHtml","bypassSecurityTrustScript","bypassSecurityTrustUrl","bypassSecurityTrustResourceUrl","SizeConverterPipe","bytes","params","decimals","formatBytes","EMAIL_REGEXP","HOME_EMAIL_REGEXP","validateIPV4Regex","TIME_24_FORMAT_WITHOUT_SECONDS_REGEXP","DNS_REGEX","ALIAS_REGEX","ALIAS_TEXT_REGEX","DOMAIN_REGEX","getComposedRegex","regexes","regex","BREAKS_REGEX","SPACES_REGEX","SPACE_REGEX","COMMAS_REGEX","bytesFrom","pow","dm","log","parseFloat","toFixed","StringIsNumber","EnumToArray","enumm","EnumToSelectArray","displayEnumm","EnumToSelectIndexesArray","orderArray","short","shortTimeZone","medium","shortDate","shortTime","mediumTime","longMonth","Esc","controls","FormArray","getOwnPropertyNames","onlySelf","naturalSort","as","bs","a1","b1","rx","rd","rz","shift","MbsLabelSize","lmd","xmd","xl","primary","secondary","light","brand","muted","object","email","minlength","requiredLength","maxlength","maxlengthPassword","minlengthPassword","pattern","mustMatch","mustNotMatch","portValidator","dnsMatch","aliasMatch","domainNameMatch","whitespace","angleBracketsValidator","angleBrackets","emailValidator","IPAddressValidator","fileSizeValidator","maxfileSize","fileList","sizeText","sizeNum","file","dimensionValidator","fileReader","FileReader","readAsDataURL","onload","image","Image","src","maxWidth","passwordStrengthValidator","passwordCheckService","fakePassword","checkPasswordStrength","newErrors","errorKeys","filteredKeys","err","passwordStrengthError","createPasswordValidator","ValidatorsArray","extensionValidator","extensionsArray","testResult","extension","splitText","forbiddenFileType","allowedFileType","allowedTypes","customMessage","forbidden","dateValidator","onlyDigits","port","timeFormat24WithoutSecondsValidator","timeValidatorWithoutText","timeInvalid","formGroup","controlName","matchingControl","matchingControlName","setErrors","inverse","domainValidator","domainNamesRegex","domainName","dnsValidator","dns","aliasValidator","aliasCommonValidator","aliasTextValidator","isTextValidator","alias","service_r4","count","DeleteUserBackupComponent","#statistics","#checkedServices","#formError","statistics","formControls","serviceType","passwordControl","deleteBackupForm","formError","setPasswordErrorState","i18nPipe","deleteBackupChange","deleteBackupFormValid","passwordType$","APPEND_BUTTON_PASSWORD_STATE","hidden","getAppendButtonsIcon","UntypedFormGroup","getTableHeaders","emitValue","handleChecked","deleteServices","handleChangePasswordType","isPasswordType","hasAppendButtonsPasswordType","getAppendButtonsState","DeleteUserBackupComponent_ng_template_1_Template","DeleteUserBackupComponent_ng_template_2_Template","DeleteUserBackupComponent_ng_template_3_Template","I18NextPipe","DeleteUserBackupModule","DontHavePermissionModule","ExportToPstComponent_mbs_form_group_0_ng_template_10_ng_template_4_div_0_div_7_Template","mailCheckedControl","currentDay","ExportToPstComponent_mbs_form_group_0_ng_template_10_ng_template_4_div_0_Template","isMailFilter","mailFilterChange","ExportToPstComponent_mbs_form_group_0_ng_template_10_ng_template_4_Template","ExportToPstComponent_mbs_form_group_0_ng_template_10_Template","ExportToPstComponent","needResetForm","e","resetForm","mailFilterFromControl","mailFilterToControl","calendarCheckedControl","contactsCheckedControl","fb","exportServices","formValid","getFromDate","timestampFromDate","convertFilterToISO","isValidDate","formattedFilterData","formattedFrom","formattedTo","From","toISOString","To","initForm","emitServices","updateDatesValidation","validateSearchFilterForm","ValidateDatepicker","ValidateFormRequired","services","getServices","Service","ucFirst","Filter","clearValidators","ExportToPstComponent_mbs_form_group_0_Template","tslib__WEBPACK_IMPORTED_MODULE_12__","FormBuilder","ExportToPstModule","AuthState","AccessDenied","AccessRequest","AltAccountNotVerified","Approve","AuthCodeInvalid","Blocked","DomainNotFound","DomainOrUserIsNotSpecified","NoLicensesAvailable","NotGrant","OwnerNameIsNotSpecified","OwnerNotIdentified","Redirect","ResetPassword","RequiredTwoStepAuthCode","ServiceUnavailable","SignInDisabled","Success","TokenInvalid","VerificationAlternateAccount","WrongAccount","WrongTwoStepAuthCode","UserAccountDisabled","OtherState","UnsupportedBrowser","AuthMode","None","SecondSignIn","AnotherAccount","ProviderSignIn","Onboarding","AlternativeAccount","ChangeEmailModalComponent","userService","changeLoading$","changeEmailForm","Email","Password","changeButtonClick","editAlternateEmail","handleFormError","cancelButtonClick","response","ChangePasswordModalComponent","changePasswordForm","NewPassword","ConfirmPassword","isConfirmPasswordValidator","confirmPassword","resetLoading$","oldPasswordType$","newPasswordType$","confirmPasswordType$","editAlternatePassword","subjectById","camelCase","ConfirmPasswordModalType","ConfirmPasswordModalComponent","#deleteText","#saveText","saveButtonType","saveButtonText","confirmForm","beforeSave","Promise","resolve","saveButtonClick","_this","_asyncToGenerator","ERROR_TEXT","passwordIncorrect","retentionPolicyForm","toggleEnableKeepRevisions","EditCreateRetentionPolicyModalComponent_mbs_form_group_14_ng_template_3_Template","errors_r12","EditCreateRetentionPolicyModalComponent_mbs_form_group_15_ng_template_3_div_4_Template","KeepRevisionsCnt","EditCreateRetentionPolicyModalComponent_mbs_form_group_15_ng_template_3_Template","controls_r15","AlwaysKeepLastRevision","EditCreateRetentionPolicyModalComponent_ng_template_37_div_15_Template","KeepCntUnits","KeepUnit","timePeriods","ByModifyOrBackupDate","ServiceType","ServiceTypeStr","Mail","Teams","EditCreateRetentionPolicyModalComponent","#toastTitleSuccess","#toastTitleError","enableKeepCntUnitsControl","EnableKeepCntUnits","keepRevisionsCntControl","delayPurgeCntUnitsControl","serviceTypeControl","isOffice","authService","isGoogle","isImmutability","retentionPolicyService","modulePolicy","ReadOnly","Name","customNameValidator","DelayPurgeCntUnits","DelayPurgeUnit","EnableKeepRevisionsCnt","HasLegalHold","bodySuccess","bodyError","okButtonDisabled","initStreams","needTriggerValidationKeepRevisionsCntControl","needTriggerValidationDelayPurgeCntUnitsControl","delayPurgeCntUnitsValidator","keepRevisionsCntValidator","minCount","actual","isEnableKeepRevisionsCntControl","isEnableDelayPurgeCntUnitsControl","getAuthUser","user","policies","isHomeUser","availableRetentionPolicies","updatePolicy","createPolicy","res","hasErrorResponseText","getErrorText","i4","EditCreateRetentionPolicyModalComponent_mbs_alert_3_Template","EditCreateRetentionPolicyModalComponent_mbs_form_group_13_Template","EditCreateRetentionPolicyModalComponent_mbs_form_group_14_Template","EditCreateRetentionPolicyModalComponent_mbs_form_group_15_Template","EditCreateRetentionPolicyModalComponent_ng_template_37_Template","tslib__WEBPACK_IMPORTED_MODULE_27__","AuthService","RetentionPolicyService","EditCreateRetentionPolicyModalModule","I18NEXT_NAMESPACE","useValue","contactInfo_r12","MyAccountSidepanelComponent_div_4_mbs_text_ellipsis_2_Template","MyAccountTab","general","MyAccountSidepanelComponent_ng_template_21_app_my_account_general_tab_1_Template","updateAlternateAccountTab","twoStepEnabled","alternateEmailVerified","initialAlternateEmail","alternateAccount","MyAccountSidepanelComponent_ng_template_26_app_my_account_alternate_account_tab_1_Template","addedStorage","backupDestination","MyAccountSidepanelComponent_li_27_ng_template_4_app_my_account_backup_destination_tab_1_Template","MyAccountSidepanelComponent_li_27_ng_template_4_Template","moduleAccount","saveLoading$","deleteLoading$","MyAccountSidepanelComponent_ng_template_31_mbs_button_1_Template","isAvailableDeleteAccount$","user$","DomainName","MyAccountSidepanelComponent_ng_template_33_ng_container_0_Template","MyAccountSidepanelComponent_ng_template_33_ng_template_1_Template","MyAccountSidepanelComponent","URLSearchParams","generalTabControl","alternateAccountTabControl","backupDestinationTabControl","toastFactory","myAccountService","sidepanelService","_loading$","getGeneralTabFormGroup","exportSettings","contactInfo","systemInfo","defaultRetentionSettings","unit","DateUnitEnum","Days","phone","Phone","version","AssemblyVersion","keepAllowed","checkbox","ProtectedWithPassword","SECRET_KEY_MASK","keepCntUnits","RetentionSettings","Enabled","DateNum","DateUnit","getAlternateAccountTabFormGroup","alternateEmail","getBackupDestinationFormGroup","storageType","StorageType","bucketName","BucketName","rootFolder","RootFolder","accessKey","AccessKey","secretKey","defaultFormValue","hasActionsQueue","isSuperAdmin$","getRoles","roles","hasDomainAdminRole","isStandaloneMode$","getSystemInfo","ProductMode","resale","isDomainAdmin","isSingleUser","hasSingleUserRole","controlValidator","contactInfo$","getContactInfo","share","isProviderSignIn$","isProviderSignIn","ctrl","isStandaloneMode","setRouteSlug","selectActivateTab","initTabs","needQueryParams","createUrlTree","myAccount","go","activatedTabId","updateGeneralTab","forkJoin","getExportSettings","markAsUntouched","getAlternateEmail","TwoStepEnabled","Verified","updateBackupDestinationTab","getStorage","Endpoint","endpoint","EndpointSuffix","endpointSuffix","updateReadonly","deleteAccountConfirmTemplate","confirmed","deleteAccount","logout","requestPool$","isAvailableSaveGeneralTab","handleSaveGeneral","isAvailableSaveAlternateAccountTab","handleSaveAlternateEmail","isAvailableSaveBackupDestinationTab","handleSaveBackupDestination","showToast","nameSpace","isSavedSuccessfully","isControlChanged","requestPool","isContactChanged","isExportSettingsChanged","handleSaveContacts","handleSaveExportSettings","setContactInfo","formData","setExportSettings","addAlternateEmail","payload","SecretKey","testSavingStorage","setStorage","showBackupDestinationConfirmModal","testStorage","StorageStateEnum","ok","backupDestinationConfirmTemplate","handleBeforeUpdateTabset","needInitGeneralTab","needInitAlternateAccountTab","needInitBackupDestinationTab","WINDOW","i5","i6","i7","MyAccountSidepanelComponent_div_4_Template","MyAccountSidepanelComponent_mbs_loader_13_Template","MyAccountSidepanelComponent_ng_template_21_Template","MyAccountSidepanelComponent_ng_template_26_Template","MyAccountSidepanelComponent_li_27_Template","MyAccountSidepanelComponent_ng_template_31_Template","MyAccountSidepanelComponent_ng_template_33_Template","MyAccountSidepanelComponent_ng_template_35_Template","tslib__WEBPACK_IMPORTED_MODULE_31__","ToastFactory","Location","MyAccountService","UserOdataService","MyAccountSidepanelService","toggleSidepanel","toggleByType","DNS","headerHeight","footerHeight","mbsPageContentPadTop","mbsPageContentPadBottom","MIN_SCREEN_HEIGHT","SINGLE_QUOTES_REGEX","FIRST_SYMBOL_$","TEXT_OVERFLOW","TABLE_MIN_HEIGHT","PHONE_REGEX","PHONE_REGEX_SAFARI","NO_LICENSES_AVAILABLE_ERROR_DETAIL","STANDALONE_ICON","logo","favicon","ApiServiceStatusEnum","Available","InstallRequired","ScopeRequestRequired","ExportToCsvBHistory","Grid","Skipped","Failed","Users","CalendarViewType","TimeGridDay","TimeGridWeek","DayGridMonth","List","CreateService","Artifacts","CalendarAttachments","DriveRevisions","MailMessages","SiteItems","CustomerProblem","AlmostExceededStorageLimit","ExceededStorageLimit","InvoiceProblem","LicenseProblem","NoProblem","RestoreAbilityExpired","PlanExpired","PlanWillExpired","StorageImmutabilityActive","StorageImmutabilityWithoutPolicyActive","TrialRestriction","TrialWillExpired","weeks","years","ShortMonth","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","MailFolderType","All","Archive","Flagged","Trash","Clutter","Conflicts","Conversationhistory","Drafts","Inbox","Localfailures","Msgfolderroot","Other","Outbox","Recoverableitemsdeletions","Scheduled","Searchfolders","Sentitems","Serverfailures","Spam","Syncissues","MimeCategory","Audio","Drawing","Drive","Excel","File","Folder","Form","Fusion","Generic","OneNoteFolder","OneNoteFile","Pdf","Powerpoint","Presentation","Script","Site","SitePage","SiteDisabled","Spreadsheet","Text","Video","Word","MimeCategorySiteBlock","Agenda","Announcements","AppCatalog","AppRequests","CallTrack","Categories","Circulation","Commcat","Commem","Comments","Contacts","Decision","DiscussionBoard","DocumentLibrary","Events","GanttTasks","GenericList","Itrl","ICXDDOC","Issues","Links","KpiList","MeetingUser","MeetingObjective","Facility","PictureLibrary","Posts","Pwsris","Pwscom","ReportsLibrary","SlideLibrary","Survey","Tal","Tasks","Timecard","Whereabouts","WorkflowHistory","WebPageLibrary","WebTemplateExtensionsList","XmlForm","COMPARISON_OPERATOR","gt","lt","ge","le","eq","ne","in","BOOLEAN_OPERATOR","and","or","not","OperationTypeSkippedItemsHistory","Backup","Restore","MarkingForDelete","DeleteItems","ProcessRetention","DeleteFromStorage","Export","Test","InvoiceState","Expose","Paid","WaitPayment","SendErrorEmail","WrongPrice","InvoiceStateByAPI","property","displayName","PaymentType","AdditionalSize","AdditionalUsers","Credits","FirstSubscriptionActivated","SharePoint","SubscriptionUpdated","TeamDrive","PolicyType","custom","DayOfMonth","DayOfWeek","sunday","monday","tuesday","wednesday","thursday","friday","saturday","FilterActionType","enabledUsers","containsIssue","disabledUsers","allUsers","ReportScheduleType","daily","weekly","monthly","ReportStatus","unknown","issue","overdue","CalculateProviderSize","Calendar","History","Payments","PersonalSite","PublicFolder","PublicFolderCalendar","PublicFolderContact","PublicFolderMail","TeamDrives","BrowserStorage","Prefix","AuthPrefix","ErrorPage","BHistoryGridFilters","BHistorySPanelFilters","RestoreFileTeams","RestoreToAnotherUser","RestoreToAnotherUserSettings","SPointDisabled","SPointNoSiteBackup","SkippedItemsHistory","Token","UpdateInterval","TaskAction","Cancel","CancelAll","CancelSelected","Delete","Pause","Restart","Resume","TaskStatus","Cancelled","Finished","LimitExceeded","Paused","Pending","Running","BackupLicenseStatuses","Assigned","NotAvailable","Inactive","TextColor","gray500","RoutePath","Account","AuditLog","AuthCallback","BackupHistory","Dashboard","ExportResults","GoogleOffice365","Help","Login","NotFound","Reports","RetentionPolicy","SharedDrives","Sharepoint","SkipItems","TaskManager","UserGroups","ProviderPath","Alternate","Google","Office","STAGE_HOSTS","ResizeColumnDirective","updateClasses","updateStyles","holderClass","resizable","initInstances","insertResizer","initStyles","initClasses","initListeners","resizer","listen","onMouseDown","onMouseMove","onMouseUp","removeStyle","pressed","startX","pageX","startWidth","defaultView","inject","RestoreToEnum","folder","messages","UserActionTypeAreas","AutoActivationMode","SettingsChanged","PageVisited","BackupConfigured","BackupDeleted","PermissionsSet","RetentionPolicyChanged","AlternateEmailChanged","BackupOptionsChanged","ArchiveOptionsChanged","StorageChanged","TaskPerformed","Downloaded","ContentViewed","Deletion","ExportSettingsChanged","DefaultRetentionPolicySet","EditEmailReportSettings","EmailReportSettingsChanged","TeamsItemsRestoreInitiated","TeamsItemsRestoreCompleted","UserActionTypesPageVisited","MailVisited","DriveVisited","ContactsVisited","CalendarVisited","SharePointVisited","TeamDrivesVisited","UserActionTypesRestoreInstalled","MailAllRestoreInitiated","MailFolderRestoreInitiated","MailMessagesRestoreInitiated","ContactsAllRestoreInitiated","ContactGroupsRestoreInitiated","ContactsRestoreInitiated","CalendarAllRestoreInitiated","CalendarGroupsRestoreInitiated","CalendarsRestoreInitiated","CalendarEventsRestoreInitiated","DriveItemsRestoreInitiated","SharePointItemsRestoreInitiated","SharedDrivesItemsRestoreInitiated","UserActionTypesCompleted","MailAllRestoreCompleted","MailMessagesRestoreCompleted","MailFolderRestoreCompleted","ContactsAllRestoreCompleted","ContactGroupsRestoreCompleted","ContactsRestoreCompleted","CalendarAllRestoreCompleted","CalendarGroupsRestoreCompleted","CalendarsRestoreCompleted","CalendarEventsRestoreCompleted","DriveItemsRestoreCompleted","SharePointRestoreCompleted","SharedDrivesRestoreCompleted","UserActionTypesBackupConfigured","UsersConfiguredBackup","DomainConfiguredBackup","UserTurnedOnOff","AllUsersTurnedOn","UserActionTypesViewed","MailMessageViewed","UserActionTypesRetentionPolicyChanged","AddedRetentionPolicy","EditedRetentionPolicy","DeletedRetentionPolicy","AssignedRetentionPolicy","EditedArtifactRetentionPolicy","UserActionTypesAlternateEmailChanged","AddedAlternateEmail","EditedAlternateEmail","DeletedAlternateEmail","UserActionTypesBackupOptionsChanged","AddedBackupOptions","EditedBackupOptions","DeletedBackupOptions","ChangedSpamTrash","UserActionTypesArchiveOptionsChanged","AddedArchiveOptions","EditedArchiveOptions","DeletedArchiveOptions","UserActionTypesTaskPerformed","PausedTask","CanceledTask","CanceledTasks","UserActionTypesDownloaded","DriveFileDownloaded","SharePointFileDownloaded","TeamDrivesFileDownloaded","MailFileDownloaded","UserActionTypesDeletion","MailMessagesDeleted","MailFoldersDeleted","ContactGroupsDeleted","ContactsDeleted","CalendarGroupsDeleted","CalendarsDeleted","CalendarEventsDeleted","DriveItemsDeleted","SharePointItemsDeleted","TeamDrivesItemsDeleted","UserActionTypesExport","ExportInitiated","ExportCompleted","ExportFileDownloaded","ExportFileDeleted","EditedExportSettings","UserActionType","UserActionTypeArea","Weeks","Months","Years","SmallSizeList","ServiceStatistics","odataObj","serviceUiInfo","getServiceUiInfo","api","Api","Status","InstallUrl","Count","iconCssClass","lastBackupDate","LastBackupDate","servicePageUrl","Size","ProtectedUsers","Provider","GoogleBusiness","OfficeBusiness","OfficeHome","GoogleHome","DriveItemType","DriveODataOption","UserId","ProviderId","SearchQ","HistoryPeriods","Month","Year","HistoryUnits","FolderFilterType","Except","Selected","FolderType","Include","Exclude","OfficeExcludeFolder","JunkEmail","DeletedItems","GoogleExcludeFolder","SpamIMAP","TrashIMAP","MailAttachment","downloadLink","query","StorageTypes","amazonS3","azure","backBlaze","s3compatible","minio","swift","azureStack","wasabi","CloudBerryDiscountState","notFound","approved","notApproved","TariffType","trial","perUser","perData","perDomain","perOnOrHaveDataUsers","perHaveDataUsers","perActualData","Role","DomainAdmin","UserAccountAdministrator","SingleUser","DomainUser","EmergencySignIn","SystemAdmin","LimitedAdmin","ProviderRole","CompanyAdministrator","hasLimitedAdminRole","providerRoles","pr","hasAdminRole","isEmergencySignIn","hasUserAccountAdminRole","hasDomainUserRole","hasProviderRole","TreeItemTypes","SiteItem","SiteBlock","SiteBlockItem","Root","SearchType","Files","FilesInSiteItem","notSet","connectionError","mbs","TeamItemType","Team","Channel","FilesRoot","PostsRoot","TeamPost","#repliesSet","#replies","post","showReplies","userName","FromName","CreatedDate","Content","hasReplies","ExistReplies","repliesSet","replies","AutoActiveActionType","EditAutoActivationMode","ServiceTypeByAPIEnum","OperationType","Sync","ClearCustomer","DeleteUser","CalculateUsersProviderSize","OperationTypeByAPIEnum","operationType","ServiceFields","filteredArrayValues","AllUsers","NewUsers","Disabled","ODataExecReturnType","PagedResult","ODataOperation","#expand","#select","typeName","http","Expand","toStringArray","Select","getParams","expandData","Dictionary","normalSelects","expandName","propertyName","containsKey","HttpParams","expands","distinct","any","toCommaString","handleResponse","entity","extractData","caught","handleError","throwError","getDefaultRequestOptions","defaultRequestOptions","getPostRequestOptions","postRequestOptions","GenerateUrl","entitiesUri","OperationWithKey","_typeName","entityKey","getEntityUri","GetUrl","OperationWithEntity","getEntitiesUri","OperationWithKeyAndEntity","GetOperation","Exec","PostOperation","PatchOperation","patch","PutOperation","put","DeleteOperation","ODataQuery","#entitiesUri","#filter","#top","#skip","#search","#orderBy","#apply","#maxPerPage","#customQueryOptions","Search","Top","Skip","skip","OrderBy","MaxPerPage","maxPerPage","Apply","apply","CustomQueryOptions","customOptions","returnType","getQueryParams","requestOptions","getQueryRequestOptions","execGetCount","execGetArrayDataWithCount","execGetArrayData","ExecWithCount","NextPage","pagedResult","nextLink","countUrl","extractDataAsNumber","execGetCatchError","extractArrayDataWithCount","extractArrayData","odata4","HttpHeaders","customQueryOption","checkReservedCustomQueryOptionKey","extractQueryResultDataAsNumber","extractQueryResultData","extractQueryResultDataWithCount","ODataUtils","convertObjectToString","prop","quoteValue","parts","tryParseInt","parsed","NaN","ODataService","_http","TypeName","Get","Post","Patch","Put","CustomAction","actionName","postdata","customRequestOptions","resp","CustomCollectionAction","CustomFunction","functionName","parameters","CustomCollectionFunction","ItemProperty","Query","ODataPagedResult","KeyConfigs","ODataConfiguration","#defaultHeaders","#baseUrl","#errorText","sanitizeTypeName","entities","parseResult","ODataServiceFactory","ActiveRoutePipe","reportingDropdownPages","routeUrl","iconClass","getUrlSegment","firstUrlSegment","AutoActivationModePipe","moduleUsers","BHistoryPanelIdPipe","#prefixId","InfoColumnLayoutPipe","resizableMode","MainColumnLayoutPipe","showInfoPanel","NavColumnLayoutPipe","ResizeColumnLayoutPipe","screenX","GetDownloadLoadingPipe","downloadService","getLoading","InvoiceStateToDisplayNamePipe","InvoiceStatusIconTypeEnum","expose","paid","wrongPrice","waitPayment","sendErrorEmail","InvoiceStatusTypeEnum","InvoiceStatusPipe","invoiceStatusIconMap","invoiceStatusTypeMap","param","OperationTypeToDisplayNamePipe","PipesModule","PriceToDisplayPipe","float","isNumber","BackupStatusPipe","iconMap","typeMap","UserStatusPipe","checkUnknownState","SelectGridAllButtonTextPipe","oneEntityKey","manyEntitiesKey","SelectGridButtonTextPipe","isSelectAllOnAllPages","ServiceTypeToDisplayNamePipe","SmartSearchMaxWidthPipe","SortOrderByPipe","array","SrcMimeCategorySbPipe","path","environment","spriteMimeCategorySiteBlocks","spriteMimeCategory","SrcMimeCategoryPipe","backupOn","TaskStatusIconPipe","_map","TaskStatusTypePipe","FolderIconPipe","icoClass","imageSrcForDriveItem","ItemType","FoldersLayoutPipe","MimeCategoryIconPipe","TransformTextByPipe","character","UserActionTypeAreaPipe","UserActionTypePipe","StatusFilterBackup","FilterServiceBackupColorPipe","FilterServiceBackupTextPipe","servicePrefix","statusSuffix","service","StatusFilterBackupPipe","disabledServices","InBackup","inBackup","UserProviderState","providerState","IsPublicFolder","isPublicFolder","serviceEnabled","getServiceEnabled","lastBackupStopReason","getLastBackupStopReason","UserFiltersEnum","notInDomain","DriveEnable","CalendarEnable","MailEnable","ContactsEnable","DriveLastBackupStopReason","CalendarLastBackupStopReason","EmailLastBackupStopReason","ContactLastBackupStopReason","AuditLogTagsEnum","AuditLogTagsMap","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread2","_defineProperty","getOwnPropertyDescriptors","defineProperty","_typeof","Symbol","iterator","_classCallCheck","Constructor","TypeError","_defineProperties","props","descriptor","configurable","_createClass","protoProps","staticProps","_inherits","subClass","superClass","_setPrototypeOf","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","valueOf","Super","NewTarget","_possibleConstructorReturn","self","_assertThisInitialized","ReferenceError","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_i","_s","_e","_arr","_n","_d","done","return","_unsupportedIterableToArray","_nonIterableRest","_toConsumableArray","_arrayWithoutHoles","_arrayLikeToArray","_iterableToArray","iter","_nonIterableSpread","minLen","len","arr2","_createForOfIteratorHelper","allowArrayLike","F","normalCompletion","didErr","fromCharCode","keyStrBase64","keyStrUriSafe","baseReverseDic","getBaseValue","alphabet","charAt","LZString","compressToBase64","_compress","decompressFromBase64","_decompress","compressToUTF16","decompressFromUTF16","compressed","charCodeAt","compressToUint8Array","uncompressed","compress","buf","Uint8Array","TotalLen","current_value","decompressFromUint8Array","decompress","compressToEncodedURIComponent","decompressFromEncodedURIComponent","bitsPerChar","getCharFromInt","ii","context_c","context_wc","context_w","context_enlargeIn","context_dictSize","context_numBits","context_data_val","context_data_position","context_dictionary","context_dictionaryToCreate","context_data","resetValue","getNextValue","w","bits","resb","maxpower","power","dictionary","enlargeIn","dictSize","numBits","entry","Config","DEBUG","LIB_VERSION","ArrayProto","ObjProto","win","userAgent","document$1","nativeForEach","nativeIndexOf","breaker","logger","_isUndefined","__rrweb_original__","_len","_key","_eachArray","_len2","_args","_key2","_len3","_key3","_trim","_each","thisArg","l","_key4","_extend","_len4","_key5","_isArray","_isFunction","_includes","needle","_isObject","_isString","_isNumber","_encodeDates","_isDate","_formatDate","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","_safewrap","_len5","_key7","_strip_empty_properties","ret","COPY_IN_PROGRESS_ATTRIBUTE","deepCircularCopy","customizer","LONG_STRINGS_ALLOW_LIST","_copyAndTruncateStrings","maxStringLength","_base64Encode","h2","h3","h4","b64","ac","enc","tmp_arr","_utf8Encode","T","string","stringl","utftext","c1","_UUID","se","screen","ch","ua","buffer","xor","byte_array","unshift","UA","_getQueryParam","cleanParam","decodeURIComponent","_getHashParam","hash","_register_event","fixEvent","returnValue","cancelBubble","oldSchool","useCapture","ontype","makeHandler","new_handler","old_handlers","old_result","new_result","_info","campaignParams","campaign_keywords","kwkey","kw","URL","searchEngine","referrer","searchInfo","$search_engine","ph_keyword","browser","user_agent","vendor","opera","browserVersion","Chrome","Safari","Opera","Firefox","Konqueror","BlackBerry","Mozilla","os","device","deviceType","referringDomain","$os","$browser","$device","$device_type","$current_url","href","$host","$pathname","pathname","$browser_version","$screen_height","$screen_width","$viewport_height","innerHeight","$viewport_width","$lib","$lib_version","$insert_id","$time","people_properties","getClassName","baseVal","getSafeText","elText","shouldCaptureElement","isSensitiveElement","isTextNode","shouldCaptureValue","isElementNode","isTag","isDocumentFragment","usefulElements","curEl","loadScript","scriptUrlToLoad","scriptTag","_scripts$0$parentNode","scripts","getElementsByTagName","RageClick","get_config","clicks","lastClick","autocapture","_initializedTokens","_previousElementSibling","_el","previousSibling","_getPropertiesFromElement","maskInputs","maskText","tag_name","$el_text","attr","isAngularStyleAttr","attributeName","nthChild","nthOfType","currentElem","nth_child","nth_of_type","_getDefaultProperties","eventType","$event_type","$ce_version","_extractCustomPropertyValue","customProperty","propValues","css_selector","matchedElem","_getCustomProperties","targetElementList","_customProperties","event_selectors","eventSelector","eventElement","srcElement","_e$target","shadowRoot","composedPath","_captureEvent","_this$rageclicks","_this2","MouseEvent","rageclicks","shouldCaptureDomEvent","parentIsUsefulElement","_compStyles","getPropertyValue","compStyles","elementsJson","explicitNoCapture","shouldCaptureEl","attr__href","$elements","_navigate","_addDomEventHandlers","_this3","afterDecideResponse","token","enable_collect_everything","custom_properties","__autocapture_enabled","enabledForProject","numBuckets","numEnabledBuckets","charCodeSum","isBrowserSupported","func","_bind_instance_methods","_safewrap_instance_methods","DOMAIN_MATCH_REGEX","cookieStore","is_supported","nameEQ","ca","cookie","cross_subdomain","is_secure","cdomain","expires","secure","hostname","domain","setTime","toUTCString","new_cookie_val","encodeURIComponent","_localStorage_supported","localStore","supported","removeItem","localPlusCookieStore","extend","distinct_id","memoryStorage","memoryStore","sessionStorageSupported","sessionStore","sessionStorage","GDPR_DEFAULT_PERSISTENCE_PREFIX","optIn","_optInOut","optOut","hasOptedIn","_getStorageValue","hasOptedOut","_hasDoNotTrackFlagOn","respectDnt","win$1","hasDntOn","doNotTrack","msDoNotTrack","dntValue","clearOptInOut","_getStorage","_getStorageKey","crossSubdomainCookie","persistenceType","persistencePrefix","optValue","cookieExpiration","secureCookie","captureEventName","captureProperties","send_instantly","userOptedOut","posthog","silenceErrors","optedOut","addOptOutCheck","method","SET_ACTION","PostHogPeople","_posthog","set_action","_get_config","persistence","update_referrer_info","get_referrer_info","_send_request","set_once","set_once_action","$token","$distinct_id","get_distinct_id","device_id","get_property","user_id","had_persisted_distinct_id","$device_id","$user_id","$had_persisted_distinct_id","date_encoded_data","truncated_data","encoded_data","_prepare_callback","conf_var","apiActionParser","_is_reserved_property","PostHogFeatureFlags","_override_warning","flagCallReported","featureFlagEventHandlers","reloadFeatureFlagsQueued","reloadFeatureFlagsInAction","getFlagVariants","enabledFlags","overriddenFlags","finalFlags","overriddenKeys","_startReloadTimer","anon_distinct_id","$anon_distinct_id","isPaused","_reloadFeatureFlagsRequest","setReloadingPaused","getGroups","receivedFeatureFlags","getFlags","flagValue","send_event","$feature_flag","$feature_flag_response","getFeatureFlag","decideEndpointWasHit","flags","featureFlags","$enabled_feature_flags","register","$active_feature_flags","unregister","parseFeatureFlagDecideResponse","variants","flagsObj","$override_feature_flags","addFeatureFlagsHandler","PEOPLE_DISTINCT_ID_KEY","ALIAS_ID_KEY","EVENT_TIMERS_KEY","SESSION_RECORDING_ENABLED_SERVER_SIDE","SESSION_ID","ENABLED_FEATURE_FLAGS","RESERVED_PROPERTIES","PostHogPersistence","campaign_params_saved","persistence_name","storage_type","storage","load","update_config","_include","expire_days","default_value","default_expiry","$referrer","$referring_domain","cookie_expiration","set_disabled","disable_persistence","set_cross_subdomain","cross_subdomain_cookie","set_secure","secure_cookie","event_name","timers","FULL_SNAPSHOT_EVENT_TYPE","META_EVENT_TYPE","SessionRecording","captureStarted","snapshots","stopRrweb","windowId","sessionId","receivedDecide","isRecordingEnabled","startCaptureAndTrySendingQueuedSnapshots","stopRecording","enabled_server_side","enabled_client_side","_response$sessionReco","_response$sessionReco2","sessionRecording","startRecordingIfEnabled","_captureSnapshot","_startCapture","_onScriptLoaded","_event$data","_this$rrwebRecord","isNotUserInteraction","_this$instance$sessio","sessionManager","checkAndGetSessionAndWindowId","rrwebRecord","takeFullSnapshot","_this$rrwebRecord2","sessionRecordingOptions","blockClass","blockSelector","ignoreClass","maskAllInputs","maskInputOptions","maskInputFn","slimDOMOptions","collectFonts","inlineStylesheet","rrweb","record","userSessionRecordingOptions","_Object$entries","_Object$entries$_i","truncateLargeConsoleLogs","plugin","updatedPayload","filterDataURLsFromLargeDataObjects","stringifiedData","_step","_iterator","matchAll","_updateWindowAndSessionIds","$snapshot_data","$session_id","$window_id","_captureMetrics","incr","plugins","rrwebConsoleRecord","getRecordConsolePlugin","_addCaptureHook","eventName","_this2$rrwebRecord","addCustomEvent","transport","_noTruncate","_batchKey","_metrics","rrweb_full_snapshot","Decide","_hasBootstrappedFeatureFlags","verbose","parseDecideResponse","toolbar","supportedCompression","compression","Toolbar","editorParams","toolbarVersion","isAuthenticated","_loadEditor","apiURL","stateHash","userIntent","desiredHash","replaceState","_postHogToolbarLoaded","jsURL","editorUrl","disableToolbarMetrics","instrument","ph_load_editor","RequestQueueScaffold","pollInterval","isPolling","_event_queue","_empty_queue_count","_poller","_pollInterval","interval","poll","RequestQueue","_RequestQueueScaffold","_super","captureMetrics","handlePollRequest","requests","formatQueue","_loop","_requests$key","_","dataKey","_requests$key2","_url","requestValues","_ref","request","CaptureMetrics","metrics","by","u8","u16","Uint16Array","u32","Uint32Array","fleb","fdeb","clim","freb","eb","_a","revfl","revfd","rev","hMap","mb","co","rvb","sv","r_1","flt","fdt","flm","fdm","shft","slc","subarray","wbits","wbits16","hTree","t2","maxSym","tr","mbt","ln","dt","lft","cst","i2_1","i2_2","i2_3","lc","cl","cli","cln","cls","clen","cf","wfblk","out","pos","dat","wblk","_final2","syms","lf","df","li","bl","dlt","mlb","_b","ddt","mdb","_c","lclt","nlc","lcdt","ndc","lcfreq","lct","mlcb","nlcc","lm","ll","dl","flen","ftlen","dtlen","llm","lcts","clct","dst","deo","et","crct","wbytes","gzipSync","cr","crc","opt","pre","st","lvl","plvl","lst","msk_1","head","bs1_1","ceil","bs2_1","hsh","lc_1","wi","hv","imod","pimod","rem","ch_1","dif","maxn","maxd","ml","nl","mmd","ti","lin","din","dflt","mem","dopt","filename","gzhl","mtime","gzh","strToU8","latin1","TextEncoder","encode","ar","ai","Compression","GZipJS","LZ64","Base64","encodePostData","blob","Blob","sendBeacon","body_data","xhr","retriesPerformedSoFar","retryQueue","onXHRError","req","XMLHttpRequest","headerValue","setRequestHeader","withCredentials","onreadystatechange","readyState","decr","responseText","enqueue","send","RetryQueue","areWeOnline","onLine","_handleWeAreNowOnline","requestData","msToNextRetry","retryAt","toFlush","_ref2","_executeXhrRequest","_step2","_iterator2","_ref3","SessionIdManager","_windowId","_sessionId","_sessionStartTimestamp","_sessionActivityTimestamp","persistenceName","window_id_storage_key","primary_window_exists_storage_key","lastWindowId","primaryWindowExists","_listenToReloadWindow","sessionActivityTimestamp","sessionStartTimestamp","_setSessionId","_timestamp","_this$_getSessionId2","_getSessionId","lastTimestamp","startTimestamp","_getWindowId","sessionPastMaximumLength","newTimestamp","_setWindowId","isFloat","getPerformanceEntriesByType","optimisePerformanceData","performanceEntries","performanceEntry","performanceEntryItemKey_","performanceEntryItemKey","deduplicateKeys","performance","getEntriesByType","ex","init_type","posthog_master","SentryIntegration","organization","projectId","setupOnce","addGlobalEventProcessor","_event$exception","_exceptions$","_exceptions$2","__loaded","api_host","sessionRecordingStarted","exceptions","exception","$sentry_event_id","event_id","$sentry_exception","$sentry_exception_message","$sentry_exception_type","$sentry_tags","$sentry_url","InitType","INIT_MODULE","INIT_SNIPPET","__NOOP","__NOOPTIONS","PRIMARY_INSTANCE_NAME","USE_XHR","ENQUEUE_REQUESTS","_document$location","_document$location$ho","_window$location","api_method","api_transport","rageclick","cookie_name","loaded","store_google","save_referrer","img","capture_pageview","debug","upgrade","disable_session_recording","disable_cookie","enable_recording_console_log","protocol","ip","opt_out_capturing_by_default","opt_out_persistence_by_default","opt_out_capturing_persistence_type","opt_out_capturing_cookie_prefix","property_blacklist","respect_dnt","sanitize_properties","xhr_headers","inapp_protocol","inapp_link_new_window","request_batching","properties_string_max_length","session_recording","mask_all_element_attributes","mask_all_text","advanced_disable_decide","advanced_disable_toolbar_metrics","on_xhr_error","statusText","get_device_id","uuid","_onCapture","_capture_metrics","_capture_performance","callback_fn","bootstrap","create_mplib","PostHog","_init","maybeLoadEditor","_execute_array","people","__captureHooks","__request_queue","_jsc","feature_flags","_requestQueue","_retryQueue","_loaded","_config$bootstrap","_triggered_notifs","set_config","_handle_queued_event","_gdpr_init","distinctID","_config$bootstrap2","deviceID","isIdentifiedID","_config$bootstrap3","activeFlags","flag","_config$bootstrap4","_config$bootstrap4$fe","_config$bootstrap5","_config$bootstrap5$fe","_uuid","register_once","_handle_unload","_start_queue_if_opted_in","resetRequestQueue","has_opted_out_capturing","jsc","randomized_cb","callback_string","updateUnloadMetrics","unload","jsonData","__compress_and_send_json_request","_compressData","compressData","urlQueryArgs","decideCompression","compressionSupport","_compressData2","DEFAULT_OPTIONS","useSendBeacon","parameterOptions","ver","halves","argSeparator","formdata","use_val","use_key","arg_separator","tph_arr","_HTTPBuildQuery","addParamsToURL","_s$parentNode","script","async","fn_name","alias_calls","other_calls","capturing_calls","calls","caller","_this$config$bootstra","_this$config$bootstra2","start_timestamp","remove_event_timer","update_search_keyword","update_campaign_params","_calculate_event_properties","$set","has_unique_traits","_invokeCaptureHooks","eventData","event_properties","persistenceProps","duration_in_ms","$duration","_this$sessionManager$","getPerformanceData","paint","resource","clearResourceTimings","pageLoad","pageLoadFrom","performanceData","durationIndex","endKeyIndex","startKeyIndex","$performance_page_loaded","$performance_raw","blacklisted_prop","isFeatureEnabled","reloadFeatureFlags","onFeatureFlags","new_distinct_id","userPropertiesToSet","userPropertiesToSetOnce","previous_distinct_id","$set_once","setAnonymousDistinctId","groupType","groupKey","groupPropertiesToSet","existingGroups","$groups","$group_type","$group_key","$group_set","reset_device_id","resetSessionId","_alias","original","_register_single","identify","oldConfig","_this$sessionRecordin","started","prop_name","_this$config","property_name","_this$get_config","has_opted_in_capturing","persistence_type","opt_in_capturing","enable_persistence","opt_out_capturing","clear_persistence","clear_opt_in_out_capturing","_gdpr_update_persistence","cookie_prefix","capture_event_name","capture_properties","_gdpr_call_func","_options","_debug","klass","functions","_safewrap_class","instances","init_as_module","dom_loaded_handler","inst","_dom_loaded","add_dom_loaded_handler","PosthogService","storageService","initialize","needDeclinePostHog","prod","serverUrl","DomainId","RestoreEnable","SignInEnable","isAcceptedHost","acceptedHosts","declinedHosts","isMatchWithMask","lValue","lMask","truncate","stringMatchesSomePattern","testString","patterns","requireExactStringMatch","isMatchingPattern","isRegExp","DEFAULT_IGNORE_ERRORS","DEFAULT_IGNORE_TRANSACTIONS","InboundFilters","__initStatic","getCurrentHub","eventProcess","hub","getIntegration","client","getClient","clientOptions","_mergeOptions","internalOptions","allowUrls","denyUrls","ignoreErrors","disableErrorDefaults","ignoreTransactions","disableTransactionDefaults","ignoreInternal","_shouldDropEvent","_isSentryError","__SENTRY_DEBUG__","getEventDescription","_isIgnoredError","_getPossibleEventMessages","_isIgnoredTransaction","transaction","_isDeniedUrl","_getEventFilterUrl","_isAllowedUrl","frames","stacktrace","_getLastValidUrl","frame","originalFunctionToString","FunctionToString","Function","getOriginalFunction","installedIntegrations","getIntegrationsToSetup","defaultIntegrations","userIntegrations","integrations","integration","isDefaultInstance","arrayify","finalIntegrations","filterDuplicates","integrationsByName","currentInstance","existingInstance","debugIndex","debugInstance","setupIntegration","integrationIndex","STACKTRACE_FRAME_LIMIT","WEBPACK_ERROR_REGEXP","STRIP_FRAME_REGEXP","createStackParser","parsers","sortedParsers","stack","skipFirst","lines","line","cleanedLine","parser","stripSentryFramesAndReverse","localStack","function","stackParserFromStackParserOptions","stackParser","defaultFunctionName","getFunctionName","CONSOLE_LEVELS","makeLogger","consoleSandbox","worldwide","n2","originalConsole","GLOBAL_OBJ","wrappedLevels","originalWrappedFunc","__sentry_original__","getGlobalSingleton","getGlobalObject","supportsFetch","Headers","Request","Response","isNativeFetch","objectToString","isError","wat","isInstanceOf","isBuiltin","isErrorEvent","isDOMError","isPlainObject","isEvent","base","DEFAULT_MAX_STRING_LENGTH","htmlTreeAsString","MAX_TRAVERSE_HEIGHT","sepLength","nextStr","keyAttrs","_htmlElementAsString","keyAttrPairs","keyAttr","keyAttrPair","allowedAttrs","safeJoin","delimiter","output","fill","replacementFactory","wrapped","markFunctionWrapped","addNonEnumerableProperty","convertToPlainObject","getOwnProperties","newObj","serializeEventTarget","currentTarget","CustomEvent","detail","isElement","Element","extractedProps","SENTRY_XHR_DATA_KEY","instrumented","addInstrumentationHandler","instrumentConsole","originalConsoleMethod","triggerHandlers","instrumentDOM","triggerDOMHandler","globalDOMEventHandler","makeDOMEventHandler","proto","originalAddEventListener","listener","__sentry_instrumentation_handlers__","handlerForType","refCount","originalRemoveEventListener","instrumentXHR","xhrproto","originalOpen","xhrInfo","request_headers","__sentry_own_request__","onreadystatechangeHandler","status_code","endTimestamp","readyStateArgs","setRequestHeaderArgs","originalSend","sentryXhrData","instrumentFetch","supportsNativeFetch","fetch","sandbox","contentWindow","originalFetch","parseFetchArgs","fetchArgs","getUrlFromResource","hasProp","handlerData","fetchData","instrumentHistory","supportsHistory","chrome","runtime","pushState","oldOnPopState","onpopstate","historyReplacementFunction","originalHistoryFunction","lastHref","instrumentError","_oldOnErrorHandler","onerror","__SENTRY_LOADER__","__SENTRY_INSTRUMENTED__","instrumentUnhandledRejection","_oldOnUnhandledRejectionHandler","onunhandledrejection","debounceDuration","debounceTimerID","lastCapturedEvent","globalListener","shouldSkipDOMEvent","isContentEditable","shouldShortcircuitPreviousDebounce","previous","global","DSN_REGEX","dsnToString","dsn","withPassword","pass","publicKey","dsnFromComponents","normalize","depth","maxProperties","visit","ERROR","memo","memoBuilder","hasWeakSet","WeakSet","inner","memoize","unmemoize","stringified","stringifyValue","objName","getConstructorName","__sentry_skip_normalization__","remainingDepth","__sentry_override_normalization_depth__","valueWithToJSON","toJSON","normalized","numAdded","visitable","visitKey","createEnvelope","addItemToEnvelope","envelope","newItem","forEachEnvelopeItem","envelopeItems","envelopeItem","encodeUTF8","textEncoder","serializeEnvelope","envHeaders","itemHeaders","stringifiedPayload","concatBuffers","buffers","totalLength","merged","createAttachmentEnvelopeItem","attachment","dropUndefinedKeys","content_type","contentType","attachment_type","attachmentType","ITEM_TYPE_TO_DATA_CATEGORY_MAP","session","sessions","client_report","user_report","profile","replay_event","replay_recording","check_in","envelopeItemTypeToDataCategory","getSdkMetadataForEnvelopeHeader","metadataOrEvent","sdk","SentryError","logLevel","debugIdStackParserCache","WeakMap","ALREADY_SEEN_ERROR","BaseClient","_integrations","_integrationsInitialized","_numProcessing","_outcomes","_hooks","_dsn","makeDsn","dsnFromString","lastPath","projectMatch","validateDsn","isValidProtocol","getEnvelopeEndpointWithUrlEncodedAuth","tunnelOrOptions","sdkInfo","_metadata","tunnel","_getIngestEndpoint","getBaseApiEndpoint","_encodedAuth","urlEncode","sentry_key","sentry_version","sentry_client","_transport","recordDroppedEvent","transportOptions","captureException","hint","scope","checkOrSetAlreadyCaught","eventId","_process","eventFromException","captureMessage","promisedEvent","isPrimitive","eventFromMessage","captureEvent","originalException","captureSession","_isEnabled","release","sendSession","updateSession","getDsn","getSdkMetadata","getTransport","timeout","_isClientDoneProcessing","clientFinished","transportFlushed","resolvedSyncPromise","setupIntegrations","getIntegrationById","integrationId","addIntegration","sendEvent","env","createEventEnvelope","metadata","enhanceEventWithSdkInfo","packages","envelopeHeaders","createEventEnvelopeHeaders","dynamicSamplingContext","sdkProcessingMetadata","sent_at","trace","attachments","promise","_sendEnvelope","sendResponse","createSessionEnvelope","_event","sendClientReports","hook","rest","_updateSessionFromEvent","crashed","errored","mechanism","handled","sessionNonTerminal","SyncPromise","ticked","setInterval","clearInterval","_prepareEvent","prepareEvent","normalizeDepth","normalizeMaxBreadth","prepared","uuid4","dateTimestampInSeconds","applyClientOptions","dist","maxValueLength","DEFAULT_ENVIRONMENT","applyIntegrationsMetadata","integrationNames","applyDebugIds","debugIdMap","_sentryDebugIds","debugIdStackFramesCache","cachedDebugIdStackFrameCache","filenameDebugIdMap","debugIdStackTrace","parsedStack","cachedParsedStack","stackFrame","debug_id","finalScope","captureContext","Scope","update","getAttachments","applyToEvent","evt","applyDebugMeta","abs_path","debug_meta","images","code_file","normalizeEvent","maxBreadth","breadcrumbs","contexts","extra","spans","propagationContext","traceId","trace_id","spanId","parentSpanId","dsc","span_id","parent_span_id","getDynamicSamplingContextFromClient","_processEvent","finalEvent","sentryError","sampleRate","rejectedSyncPromise","isTransaction","isTransactionEvent","beforeSendLabel","dataCategory","__sentry__","processBeforeSend","beforeSend","beforeSendTransaction","_validateBeforeSendResult","beforeSendResult","invalidValueError","isThenable","processedEvent","getSession","transactionInfo","transaction_info","_clearOutcomes","outcomes","quantity","States","normalizeToSize","jsonSize","utf8Length","encodeURI","getFirstException","firstException","addExceptionTypeValue","addExceptionMechanism","newMechanism","currentMechanism","mergedData","PENDING","RESOLVED","REJECTED","executor","__init","__init2","__init3","__init4","_state","_handlers","_resolve","_reject","onfulfilled","onrejected","reject","_executeHandlers","finally","onfinally","isRejected","_setResult","_value","cachedHandlers","exceptionFromError","parseStackFrames","extractMessage","eventFromError","popSize","getPopSize","framesToPop","reactMinifiedRegexp","eventFromUnknownInput","syntheticException","attachStacktrace","isUnhandledRejection","isDOMException","domException","eventFromString","eventFromPlainObject","getNonErrorObjectExceptionValue","__serialized__","synthetic","extractExceptionKeysForMessage","includedKeys","serialized","captureType","getObjectClassName","ignoreOnError","shouldIgnoreOnError","wrap","wrapper","__sentry_wrapped__","sentryWrapped","wrappedArguments","ignoreNextOnError","withScope","addEventProcessor","validSeverityLevels","severityLevelFromString","parseUrl","relative","BREADCRUMB_INTEGRATION_ID","Breadcrumbs","dom","sentry","_consoleBreadcrumb","_domBreadcrumb","_innerDomBreadcrumb","serializeAttribute","_isEvent","_xhrBreadcrumb","_fetchBreadcrumb","_historyBreadcrumb","addSentryBreadcrumb","breadcrumb","parsedLoc","parsedFrom","parsedTo","BrowserClient","sdkSource","SENTRY_SDK_SOURCE","getSDKSource","visibilityState","_flushOutcomes","breadcrumbIntegration","captureUserFeedback","feedback","createUserFeedbackEnvelope","createUserFeedbackEnvelopeItem","createClientReportEnvelope","discarded_events","GlobalHandlers","_installFunc","_installGlobalOnErrorHandler","_installGlobalOnUnhandledRejectionHandler","stackTraceLimit","installFunc","globalHandlerLog","getHubAndOptions","_eventFromIncompleteOnError","_enhanceEventWithInitialFrame","addMechanismAndCapture","_eventFromRejectionWithPrimitive","ev","ev0","ev0s","ev0sf","colno","lineno","getLocationHref","in_app","DEFAULT_EVENT_TARGET","TryCatch","eventTarget","requestAnimationFrame","_wrapTimeFunction","_wrapRAF","helpers_WINDOW","_wrapXHR","eventTargetOption","_wrapEventTarget","xmlHttpRequestProps","wrapOptions","originalFunction","wrappedEventHandler","originalEventHandler","applyAggregateErrorsToEvent","exceptionFromErrorImplementation","maxValueLimit","limit","truncateAggregateExceptions","aggregateExceptionsFromError","prevExceptions","exceptionId","newExceptions","applyExceptionGroupFieldsForParentException","newException","newExceptionId","applyExceptionGroupFieldsForChildException","childError","is_exception_group","exception_id","parentId","parent_id","LinkedErrors","_limit","HttpContext","Referer","Dedupe","eventProcessor","currentEvent","previousEvent","_isSameMessageEvent","currentMessage","previousMessage","_isSameFingerprint","_isSameStacktrace","_isSameExceptionEvent","previousException","_getExceptionFromEvent","currentException","_previousEvent","currentFrames","_getFramesFromEvent","previousFrames","frameA","frameB","currentFingerprint","fingerprint","previousFingerprint","createFrame","chromeRegex","chromeEvalRegex","chromeStackLineParser","subMatch","extractSafariExtensionDetails","geckoREgex","geckoEvalRegex","geckoStackLineParser","winjsRegex","winjsStackLineParser","defaultStackParser","isSafariExtension","isSafariWebExtension","DEFAULT_RETRY_AFTER","DEFAULT_TRANSPORT_BUFFER_SIZE","createTransport","makeRequest","makePromiseBuffer","task","$","taskProducer","isReady","drain","capturedSetTimeout","bufferSize","rateLimits","filteredEnvelopeItems","envelopeItemDataCategory","isRateLimited","limits","disabledUntil","getEventForEnvelopeItem","filteredEnvelope","recordEnvelopeLoss","requestTask","statusCode","updateRateLimits","updatedRateLimits","rateLimitHeader","retryAfterHeader","retryAfter","categories","headerDelay","parseRetryAfterHeader","headerDate","__sentry__baseTransport__","cachedFetchImpl","makeFetchTransport","nativeFetch","getNativeFetchImplementation","fetchImpl","pendingBodySize","pendingCount","requestSize","referrerPolicy","keepalive","fetchOptions","clearCachedFetchImplementation","XHR_READYSTATE_DONE","makeXHRTransport","getResponseHeader","Integrations","startSessionOnHub","startSession","ignoreDuration","windowIntegrations","Sentry","INTEGRATIONS","worldwide_1","BAGGAGE_HEADER_NAME","SENTRY_BAGGAGE_KEY_PREFIX","SENTRY_BAGGAGE_KEY_PREFIX_REGEX","MAX_BAGGAGE_STRING_LENGTH","dynamicSamplingContextToSentryBaggageHeader","objectToBaggageHeader","baggageHeader","objectKey","objectValue","baggageEntry","newBaggageHeader","dscKey","dscValue","baggageHeaderToObject","keyOrValue","gbl","crypto","msCrypto","randomUUID","getRandomByte","getRandomValues","maybeArray","TRACEPARENT_REGEXP","generateSentryTraceHeader","sampled","sampledString","bindReporter","metric","reportAllChanges","prevValue","delta","forceReport","getNavigationEntry","__WEB_VITALS_POLYFILL__","getNavigationEntryFromPerformanceTiming","timing","navigationEntry","entryType","startTime","navigationStart","getActivationStart","navEntry","activationStart","initMetric","navigationType","prerendering","rating","PerformanceObserver","supportedEntryTypes","po","getEntries","buffered","onHidden","cb","once","onHiddenOrPageHide","firstHiddenTime","getVisibilityWatcher","Infinity","timeStamp","reportedMetricIDs","isMeasurementValue","isFinite","_startChild","startChild","msToSec","getBrowserPerformanceAPI","_lcpEntry","_clsEntry","_performanceCursor","_measurements","startTrackingWebVitals","browserPerformanceTimeOrigin","_trackFID","onReport","visibilityWatcher","report","handleEntry","processingStart","handleEntries","takeRecords","onFID","timeOrigin","fid","clsCallback","_trackCLS","sessionValue","sessionEntries","hadRecentInput","stopListening","onCLS","lcpCallback","_trackLCP","lastEntry","onLCP","lcp","_addPerformanceNavigationTiming","eventEnd","op","DEFAULT_TRACE_PROPAGATION_TARGETS","defaultRequestInstrumentationOptions","traceFetch","traceXHR","enableHTTPTimings","tracingOrigins","tracePropagationTargets","instrumentOutgoingRequests","shouldCreateSpanForRequest","shouldCreateSpan","shouldAttachHeadersWithTargets","shouldAttachHeaders","createdSpan","fetchCallback","hasTracingEnabled","shouldCreateSpanResult","__span","setHttpStatus","contentLength","contentLengthNum","setData","setStatus","finish","getScope","parentSpan","getSpan","addTracingHeadersToFetchRequest","requestSpan","getPropagationContext","sentryTraceHeader","toTraceparent","sentryBaggageHeader","getDynamicSamplingContext","newHeaders","existingBaggageHeader","baggage","newBaggageHeaders","addHTTPTimings","xhrCallback","__sentry_xhr_span_id__","setHeaderOnXhr","initiatorType","resourceTimingEntryToSpanData","resourceTiming","extractNetworkProtocol","nextHopProtocol","_name","timingSpanData","getAbsoluteTime","redirectStart","fetchStart","domainLookupStart","domainLookupEnd","connectStart","secureConnectionStart","connectEnd","requestStart","responseStart","responseEnd","entryTypes","DEFAULT_BROWSER_TRACING_OPTIONS","TRACING_DEFAULTS","markBackgroundTransactions","routingInstrumentation","instrumentRoutingWithDefaults","customStartTransaction","startTransactionOnPageLoad","startTransactionOnLocationChange","activeTransaction","startingUrl","enableLongTask","_experiments","getMetaContent","metaName","metaTag","getDomElement","selector","_optionalChain","ops","lastAccessLHS","shouldDisableAutoInstrumentation","_2","_3","_4","_5","_6","instrumenter","Apollo","useNestjs","_useNest","loadDependency","_module","loadModule","pkg","GraphQLFactory","orig","resolversExplorerService","instrumentResolvers","ApolloServerBase","resolvers","schema","modules","resolverGroupName","resolverName","wrapResolver","rv","_7","_8","_9","stripUrlQueryAndFragment","urlPath","getNumberOfUrlSegments","Express","_router","_methods","instrumentMiddlewares","patchMiddleware","originalCallback","wrapMiddlewareArgs","instrumentRouter","appOrRouter","isApp","lazyrouter","routerProto","originalProcessParams","process_params","layer","called","_reconstructedRoute","layerRoutePath","isRegex","numExtraSegments","getLayerRoutePathInfo","lrp","_10","_11","getNumberOfArrayUrlSegments","routesArray","accNumSegments","currentRoute","getLayerRoutePathString","_hasParameters","finalPartialRoute","segment","originalUrl","__sentry_transaction","setName","extractPathForTransaction","customRoute","baseUrl","arity","GraphQL","setSpan","_12","_13","_14","_15","OPERATIONS","OPERATION_SIGNATURES","bulkWrite","countDocuments","createIndex","createIndexes","deleteMany","deleteOne","dropIndex","findOne","findOneAndDelete","findOneAndReplace","findOneAndUpdate","indexExists","insertMany","insertOne","mapReduce","rename","replaceOne","updateMany","updateOne","Mongo","_operations","operations","_describeOperations","describeOperations","_useMongoose","useMongoose","_instrumentOperations","Collection","collection","operation","_patchOperation","getSpanContext","_getSpanContextFromOperationArguments","lastArg","maybePromiseOrCursor","isCursor","maybeCursor","cursor","_16","_17","dbName","collectionName","spanContext","signature","shouldDescribe","Mysql","mySqlConfig","wrappingTarget","sql","Postgres","_usePgNative","usePgNative","Client","database","Prisma","isValidPrismaClient","possibleClient","$use","_sentryInstrumented","clientData","engineConfig","_engineConfig","activeProvider","clientVersion","onError","activeSpan","getActiveSpan","startTransaction","finishAndSetSpan","maybePromiseResult","BrowserTracing","_hasSetTracePropagationTargets","addTracingExtensions","_collectWebVitals","startTrackingLongTasks","getActiveTransaction","duration","enableInteractions","startTrackingInteractions","durationThreshold","_getCurrentHub","instrumentRouting","clientOptionsTracePropagationTargets","_createRouteTransaction","onStartRouteTransaction","registerBackgroundTabDetection","statusType","setTag","_registerInteractionListener","beforeNavigate","idleTimeout","finalTimeout","heartbeatInterval","isPageloadTransaction","sentryTrace","traceparentData","tracingContextFromHeaders","extractTraceparentData","traceparent","parentSampled","baggageHeaderToDynamicSamplingContext","baggageObject","expandedContext","trimEnd","modifiedContext","finalContext","_latestRouteName","_latestRouteSource","idleTransaction","startIdleTransaction","setPropagationContext","registerBeforeFinishCallback","addPerformanceEntries","responseStartTimestamp","requestStartTimestamp","_addNavigationSpans","_addRequest","_addMeasureSpans","measureStartTimestamp","firstHidden","shouldRecord","fp","fcp","resourceName","origin","_addResourceSpans","transferSize","encodedBodySize","decodedBodySize","renderBlockingStatus","_trackNavigator","connection","effectiveType","rtt","deviceMemory","hardwareConcurrency","ttfb","oldValue","measurementTimestamp","normalizedValue","fidMark","measurementName","setMeasurement","_tagMetricInfo","inflightInteractionTransaction","registerInteractionTransaction","currentTransaction","setFinishReason","__SENTRY_TRACING__","addExtensionMethods$1","SentryService","__SENTRY_RELEASE__","SENTRY_RELEASE","autoSessionTracking","initAndBind","clientClass","initialScope","bindClient","startSessionTracking","TracingIntegrations","beforeBreadcrumb","tracesSampleRate","getSentryEnvironment","addUser","setUser","#modelBasel","#availableServices","#me","#roles","#claims","#providerRoles","#systemInfo","#loading$","#odataService$","#odata$","#claimService$","#isEmergencySignIn","modelBasel","sessionStorageService","domainId","provider","isProviderGoogle","isProviderOffice","getPrefix","isGAA","GAA","IsImmutability","phService","jwtService","odataFactory","persistentService","sentryService","loggedIn$","requestPending$","checkTokenInLocalStorage","decodeToken","isTokenExpired","login","odataService","authCallback","alternativeSignIn","getToken","getPath","isAlternateSignIn","initAuthGuard","getAvailableServices","authUser","availableServices","setFavicon","FaviconUrl","setTimeZoneOffsetInCookie","faviconUrl","getTimezoneOffset","resetCache","forceUpdate","getClaims","claims","Type","Value","getProviderRoles","persistentStateKey","btoa","eventEmitter$","getAuthUserServiceInfo","TotalSize","restoreAvailable","isLimitedAdmin","signAsAdmin","HttpErrorResponse","EMPTY","RedirectUrl","activateAltEmail","i8","i9","ConfigurationService","configuration","MBS_APP_CONFIG","loadingSymbol","DownloadService","datePipe","getTempLink","guidId","saveFile","tempLink","link","downloadBare","serviceName","responseType","download","rawUrl","getUrlEnd","generateFileName","saveAs","getFileName","getBlob","updateLoading","removeLoading","ArchivePasswordService","AuditService","SharedOdataService","#event","#action","#userName","#from","#to","userActionTypePipe","userActionTypeAreaPipe","odataMethods","getAuditLog","getAuditLogInEventSection","containsValue","getUniqueListByProp","getAuditLogInActionSection","getAuditLogInUserNameSection","UserName","exportToCSV","odata","updateFilter","getFilterByContains","enumItems","getFilterByEqFromEnum","getFilterByDateRange","filterByWords","containsWrapper","AzureGroupsService","#name","#autoActivation","UserGroupsTagsMap","UserGroupsTagsEnum","AutoActivation","fetchGroups","getNewGroupSettings","updateNewGroupSettings","updateAutoActivation","searchObj","nameTag","tagKey","autoActivationTag","getFilterByEq","BackupService","backupUsers","canBackup","canRestore","restoreStatus","startBackup","getBackupOptions","prepareBackupOptions","setBackupOptions","getArchiveOptions","setArchiveOptions","getFolder","folders","ApplyToAllDomainUsers","CalendarOdataService","#userId","#keys","ids","CalendarServiceTagsMap","CalendarServiceTag","odataUsersService","odataCalendarGroupService","odataCalendarEventsService","odataCalendarAttachmentsService","hasAccessToEvents","getEvents","endDate","ItemIds","getEventRevisions","searchEvents","restoreAll","restoreGroup","Ids","restoreEvent","EventId","restoreCalendar","WithAllRevisions","deleteCalendar","calendarIds","deleteGroup","groupIds","ContactsService","#groupId","#firstName","#lastName","#primaryEmail","#phoneNumber","moduleContacts","ContactsServiceTagsMap","ContactsServiceTag","FirstName","LastName","PrimaryEmail","PhoneNumber","convertFiltersToStr","backupMethods","getContactsItemsByGroupId","getContactVersions","providerId","getContactDetails","getContactsFolders","inbox","defaultFolderName","getOdataTop","restoreContacts","CategoryId","deleteContacts","restoreContactsGroup","deleteContactsGroup","restoreAllContacts","DashboardService","getId","isAdmin","domainMethods","requestScopeUrl","userData$","getServiceStatistics","getServiceMethod","configureServices","saveData","postBody","ApplyToEnabledUsers","forAllEnabledUsers","Services","getRequestScopeUrl","DomainService","#domainData","#domainStatistic","#domainServicesState","getServiceName","domainOdata","currentDomain$","domainStatistic$","domainServicesState$","fetchDomain","getFetchDomain","getDomainServiceInfo","domainServiceInfo","fetchDomainStatistic","callOdataFunc","fetchDomainServicesState","funcName","successCallback","syncDomain","DriveTreeOdataService","odataDriveItems","setDefaultOdataOptions","fetchItems","updateCustomOptions","isDelete","removeCustomQueryOption","addCustomQueryOption","DriveOdataService","#fileName","DriveBaseTagsMap","DriveBaseTagsEnum","#folderName","#fileType","#folderType","getPage","customQueryOptions","restoreDriveItems","getItemDetails","deleteDriveItems","deleteSiteBlocks","deleteSiteBlockItems","SmartSearchHelper","getValues","getJoinedValue","folderValue","fileCondition","folderCondition","ExportResultsService","ExportResultsTagsMap","ExportResultsTagsEnum","fileName","#serviceType","#dateFrom","dateFrom","#dateTo","dateTo","#sizeMore","sizeMore","#sizeLess","sizeLess","odataArtifact","getExportResults","userExportResults","deleteArtifact","deleteSelected","deleteArtifacts","sizeFilterEnum","more","getFilterBySize","less","countRequired","DownloadToPstFileComponent_ng_template_5_ng_container_0_Template","DownloadToPstFileComponent_ng_template_5_ng_template_2_Template","isAdmin$","moduleButton","loadingSaveButton$","DownloadToPstFileComponent_ng_template_9_mbs_button_0_Template","DownloadToPstFileComponent","baseModalData","taskHasStarted","archivePasswordService","loadingData$","formInit","DownloadToPstFileComponent_ng_container_4_Template","DownloadToPstFileComponent_ng_template_5_Template","DownloadToPstFileComponent_ng_container_8_Template","DownloadToPstFileComponent_ng_template_9_Template","DownloadToPstFileComponent_mbs_button_11_Template","AsyncPipe","NgIf","RouterLink","IconSpriteModule","encapsulation","changeDetection","ExportToPstHelper","errorRole$","catchErrorDownloadFile","isDomainUser","formatWithSpaces","minItemsCountRequiredPasswordProtection","handleCatchError","ExportToPSTService","exportToPstHelper","exportUserData","exportMailMsgs","exportMailFolders","exportContactItems","exportContactGroups","exportCalendarEvents","exportCalendarItems","exportCalendarGroups","HistoryService","usageHistory","units","userUsageHistory","userUsageDetails","Items","domainUsageDetails","domainUsageHistory","InvoicesService","#paymentState","PaymentsTagsMap","PaymentsTagsEnum","#quantity","#price","price","#amount","amount","#date","#expireDate","expireDate","#invoiceId","invoiceId","getInvoices","payInvoice","currencyInvert","getFilterByDate","MailOdataService","#customOptions","MailTagsMap","MailTagsEnum","#subject","#withAttachment","withAttachment","#backupArchive","backupArchive","mailMessagesService","getMailsByGroupId","newOdata","getMailFolders","getMailBodyUrl","createObjectURL","getMailAttachment","mailId","MsgId","Num","restoreAllMailbox","restoreTo","AnotherUser","restoreFolder","folderId","subFolders","postData","FolderId","IncludeSubfolders","restoreMessages","messageIds","MsgsIds","getEmailsInFromSection","searchItems","getEmailsInToSection","getListOfSubjects","searchFields","deleteFolder","deleteMessages","odataDomains","odataSingleUsers","odataExportSettings","roles$","authData","deleteAccountDomainAdmin","deleteAccountSingleUser","getStorageAdmin","getStorageSingleUser","setStorageAdmin","setStorageSingleUser","testStorageAdmin","testStorageSingleUser","deleteStorage","deleteStorageAdmin","deleteStorageSingleUser","resetAlternatePassword","getExportSettingsCommon","setExportSettingsCommon","pluck","currentProp","ReportsService","ReportsUserTagsMap","ReportsUserTagsEnum","#license","license","#userState","userState","me$","backupReports","domainBackupReport","userBackupReport","userReports","domainUserReport","singleUserReport","oDataUserReports","UserIds","userReportLicences","licenses","getReportSendingOptions","reportSendingOptions","setReportSendingOptions","getUserReportsSummary","domainSummary","singleUserSummary","defaultOptions","domainExportToCSV","singleUserExportToCSV","paramsString","isResetButtonClick","singleUserReportLicences","domainReportLicences","RetentionPolicyTagsMap","RetentionPolicyTagsEnum","policyName","tagType","tagLegalHold","legalHold","legalHoldType","true","false","getLoadingState","getPolicies","getAttachedPolicies","userIds","extendedPolicies","deletePolicy","setDefaultPolicy","SiteItemsODataService","#siteName","SharePointTagsMap","SharePointTagsEnum","SiteName","FileName","#mixinName","Mixin","odataSiteLists","odataSiteListsItems","odataSite","odataSiteDriveItems","defaultPaginationOptions","getDefaultPaginationOptions","getSiteItems","siteItems","orderByForSearch","listsOfSiteItems","blockId","driveItemsOfSiteLists","getPageOfSiteItems","siteId","getPageDriveItemsOfSiteLists","siteBlockId","driveItemId","listItemsOfSiteLists","findDriveItemsOfSiteList","siteItemDetails","siteListsDetails","siteDriveItemsDetails","siteListsItemsDetails","setAllSitesBackup","addAllToBackup","getAutoAddSiteToBackupStatus","setAutoAddSiteToBackup","AutoAddSiteToBackup","setupSitesBackup","restoreSiteItems","getFilter","getTypeFromSearchObj","valueMixinName","valueSiteName","valueFileName","StatisticsService","getServiceStatus","methodName","TariffsService","getPlanInfo","_planInfo","planInfo","getTariffs","createInvoices","createInvoice","unsubscribeActivatedPlan","TaskManagerService","TaskManagerTagsMap","TaskManagerTagsEnum","#task","#status","fetchAction","cancelAll","TaskIds","cancelSelected","getTasks","domainTasks","userTasks","domainCancelAll","userCancelAll","TeamsOdataService","driveItemsService","getTeams","getChannels","teamId","getChannelItems","channelId","ChannelId","getPosts","posts","getReplies","messageId","getFiles","treeId","getFileDetails","restoreTeamItems","restoreTeamsParameters","checkAppPermissions","Allowed","includePolicyDataQueryOption","inDomain","suspended","#users$","#total$","orgUnitsService","allUsersText","oDataFilter","convertPolicyId","myAvailableFilters","searchTerm","userProviderState","usersGroup","mailFilter","driveFilter","contactFilter","calendarFilter","policyType","availableFilters","_set","totalSize","userProviderStateWithTotalSize","getUsers","updatePolicyTypeFilter","anyFilters","getFiltersFn","operator","getUserWithServiceInfo","includeUsersId","selectedFields","selectedUsers","u","deleteUser","request$","updatePermissions","getUsersPermissions","getUsersServices","backupSettings","updateAttachedPolicies","EmailPolicyId","emailPolicyId","DrivePolicyId","drivePolicyId","ContactPolicyId","contactPolicyId","CalendarPolicyId","calendarPolicyId","SitePolicyId","sitePolicyId","TeamDrivePolicyId","teamDriveId","TeamsPolicyId","teamsPolicyId","deleteBackup","deleteModel","getBackupStatistic","include","getTasksState","newPassword","deleteAlternateEmail","getSecretForAlternate","enableAlternateTwoStep","responseCode","ResponseCode","getUserGroups","getOrganizationalUnitsGroups","transformPath","insertAllUsers","notInUnits","Path","disableAlternateTwoStep","addAllUsersToBackup","setAutoAddUserToBackup","autoAddUserToBackup","setAutoAddGroupToBackup","autoAddGroupToBackup","clearCache","mapBackupStatisticToGridList","stats","isGlobalAdmin","getServiceType","stat","ItemCount","confirmAlternatePassword","OrganizationalUnitsService","autoActivateTag","TYPE_NAME","#state","getDefaultState","getQuery","defaultOrderBy","getCustomQueryOptions","searchParams","Descr","SmartSearchModelTemplateCalendarService","SmartSearchTemplatesBase","calendarOdataService","sortOrderByPipe","EventTag","smartSearchModelFactory","uniqueList","SmartSearchModelTemplateContactsService","contactsService","FirstNameTag","contact","LastNameTag","PrimaryEmailTag","PhoneNumberTag","SmartSearchModelTemplateAuditLogService","auditService","keyCache","UserNameTag","auditLogService$","writeToCache","ActionTag","FromTag","ToTag","SmartSearchModelTemplateExportResultsService","exportResults","serviceTypeToDisplayNamePipe","exportResultsService$","FileNameTag","ServiceTypeTag","DateFromTag","CreateDate","DateToTag","SizeMoreThanTag","getCustomSizeItems","updateExportResultsFilter","SizeMoreLessTag","SmartSearchModelTemplateMailService","#optionYes","#optionNo","mailService","getSearchMails","SubjectTag","updateMailFilter","WithAttachmentTag","BackupArchiveTag","getSearchRequest","sizeFilter","sizeValue","sizeMagnitude","SmartSearchModelTemplatePaymentsService","paymentsService","currencyPipe","invoiceStateToDisplayNamePipe","StateTag","paymentsService$","invoices","invoice","State","QuantityTag","Quantity","PriceTag","Price","AmountTag","Amount","DateTag","ExpireDateTag","ExpireDate","InvoiceIdTag","OrderId","SmartSearchModelTemplateReportsService","reportsService","userReport$","License","LicenseExpireDate","UserState","SmartSearchModelTemplateRetentionPolicyService","#policyName","#legalHold","NameTag","retentionPolicy$","getNestedObjectByPath","TypeTag","LegalHoldTag","SmartSearchModelTemplateTaskManagerService","taskManagerService","operationTypeToDisplayNamePipe","taskManagerService$","TaskTag","StatusTag","SmartSearchModelTemplateSharePointService","siteItemsService","SiteNameTag","getSearchODataOptions","sites","site","getFileFilter","smartSearchObjs","storedTimeout","cache","cacheTimeout","uniqueItem","parsedPath","getSizeFilter","defaultTagName","getSize","getSizeMagnitude","sizeMagnitudesEnum","Mb","Gb","Kb","convertToPropSmartSearchModel","getValueFromSmartSearchModel","replaceNbsps","isSmartSearchPersist","isPersist","SmartSearchModelTemplateUserGroupsService","azureGroupsService","groupService","AbstractStorage","__param","Inject","tslib__WEBPACK_IMPORTED_MODULE_1__","LocalStorageService","#change","removeAllListeners","PersistentState","_f","_g","PersistentStateService","SessionStorageService","quoteODataEncoding","quotes","sign","magnitude","trunc","addTypeResetToInputSearch","fe","removeOdataContext","IsDefault","toastTitle","#getToastTitle","toastBody","#getToastBody","toastMethod","#getToastMethod","showForbiddenPermissionToast","isAvailable","fromEntries","getColors","COLORS","missingColors","countOfMissing","getRandomHEX","ServiceColors","noItemDisplayChart","baseChart","datasets","dataset","textAlign","textBaseline","fillText","restore","prepareLastDaysBackupSizeDataSet","allTypes","Usage","hoverBackgroundColor","preparePieDataAndLabels","pieData","labelsCount","labelsSize","dataCount","ngFormatDate","createTreeFromDrives","createTreeFromSiteItem","BackupOn","createTreeFromTeamItem","getTreeElementById","tree","getTreeElementInChildren","getArrayParentsForTreeElement","treeElement","pathArray","getDriveIdOfTreeElement","DriveId","updateTotalChildren","treeElem","getAllUserSelectItem","normalizeWhitespace","getColumnMaxHeight","hasFormFilter","customFormFilterMaxHeight","hasUserSelect","customPadding","hasTableNavHeight","permanent","defaultText","odataError","getTermKey","isAlternativeSignIn","source$","scan","getMaxHeight","isNoLicensesAvailable","convertFirstChartObjectKeyToUpperCase","withoutSymbol","Intl","NumberFormat","useGrouping","startState","loads","getOdataOrderBy","isDisplayFile","TreeItemType","prepareParamsToString","re","addIdToUrl","partialRoutingDataByTitle","pageInfo","getPageTitle","names","notMatch","dateFromControl","dateToControl","greaterOrEqualToDate","modulePayments","planInfo_r3","handleRedirectToEditSubscription","tariffDateConfirmModal","ComparePlansModalComponent_ng_container_2_ng_container_1_ng_template_2_ng_container_0_Template","ComparePlansModalComponent_ng_container_2_ng_container_1_ng_template_2_ng_template_1_Template","ActivatedPlanId","ComparePlansModalComponent_ng_container_2_ng_container_1_ng_container_1_Template","ComparePlansModalComponent_ng_container_2_ng_container_1_ng_template_2_Template","hasUnsubscribedPlan","tariff_r27","Description","ComparePlansModalComponent_ng_container_2_ng_template_6_span_0_Template","ComparePlansModalComponent_ng_container_2_ng_template_6_ng_template_1_Template","ComparePlansModalComponent_ng_container_2_ng_template_6_span_3_Template","Subscribed","CentPriceUserPerMonth","ComparePlansModalComponent_ng_container_2_7_ng_template_0_Template","tariff_r38","CurrentActivatedUsers","ComparePlansModalComponent_ng_container_2_9_ng_template_0_ng_container_0_Template","ComparePlansModalComponent_ng_container_2_9_ng_template_0_ng_container_1_Template","isSelectMode","isEditMode","ComparePlansModalComponent_ng_container_2_9_ng_template_0_Template","_r55","tariff_r50","ServicePaidTransformed","isServicePurchased","ComparePlansModalComponent_ng_container_2_11_ng_template_0_ng_container_0_Template","ComparePlansModalComponent_ng_container_2_11_ng_template_0_ng_container_1_Template","ComparePlansModalComponent_ng_container_2_11_ng_template_0_Template","totalPrice","tariff_r61","totalPriceAdditionalPurchase","ComparePlansModalComponent_ng_container_2_ng_template_13_ng_container_0_Template","ComparePlansModalComponent_ng_container_2_ng_template_13_ng_container_1_Template","tariff_r67","ComparePlansModalComponent_ng_container_2_14_ng_template_0_ng_container_0_Template","ComparePlansModalComponent_ng_container_2_14_ng_template_0_ng_container_1_Template","ComparePlansModalComponent_ng_container_2_14_ng_template_0_Template","tariff_r72","ctx_r78","handleToggleSubscribe","ctx_r81","hasSubscribedPlan","tariffs$","ComparePlansModalComponent_ng_container_2_ng_template_17_ng_container_0_ng_container_1_Template","ComparePlansModalComponent_ng_container_2_ng_template_17_ng_container_0_ng_template_2_Template","_r87","handleAdditionalPurchase","disabledPurchaseButton","ComparePlansModalComponent_ng_container_2_ng_template_17_ng_container_0_Template","ComparePlansModalComponent_ng_container_2_ng_template_17_ng_container_1_Template","discount_r94","ComparePlansModalComponent_ng_container_2_p_20_ng_template_4_span_0_Template","ctx_r89","discount$","CloudBerryDiscountUrl","ctx_r90","ComparePlansModalComponent_ng_container_2_p_20_ng_template_4_Template","ComparePlansModalComponent_ng_container_2_p_20_ng_template_5_Template","ComparePlansModalComponent_ng_container_2_p_20_ng_template_6_Template","ComparePlansModalComponent_ng_container_2_p_20_ng_template_7_Template","UserLimit","ctx_r98","ComparePlansModalComponent_ng_container_2_p_23_ng_container_7_Template","totalPriceNextPeriod","ComparePlansModalComponent_ng_container_2_ng_container_1_Template","ComparePlansModalComponent_ng_container_2_ng_container_2_Template","ComparePlansModalComponent_ng_container_2_ng_template_6_Template","ComparePlansModalComponent_ng_container_2_7_Template","ComparePlansModalComponent_ng_container_2_9_Template","ComparePlansModalComponent_ng_container_2_11_Template","ComparePlansModalComponent_ng_container_2_ng_template_13_Template","ComparePlansModalComponent_ng_container_2_14_Template","ComparePlansModalComponent_ng_container_2_ng_template_17_Template","ComparePlansModalComponent_ng_container_2_p_20_Template","ComparePlansModalComponent_ng_container_2_p_22_Template","ComparePlansModalComponent_ng_container_2_p_23_Template","isHomeUser$","tariffNameConfirmModal","REDIRECT_TO_EDIT_SUBSCRIPTION_MODAL","ModePlansCompareEnum","edit","ComparePlansModalComponent","IsCanceled","unExpiredPlan","tariffsService","getPriceAvailableServices","tariff","CentPriceServicePerMonth","planInfo$","initCustomOrderBy","tariffs","CloudBerryDiscount","discountApproved","tariffTransformed","ServicePaid","handleUnsubscribe","handleSubscribe","unsubscribeConfirmTemplate","SubscriptionId","AdditionalUsersCnt","ServiceEnable","TotalPrice","PaidUsersCount","discount","unitPriceOfPurchasedService","userPrice","getPriceWithDiscount","userPricePerPeriod","getAdditionalPurchasePerPeriod","servicePrice","servicePricePerPeriod","DaysToEndPlan","AverageDaysInMonth","calcNextPeriod","PeriodInMonths","unitPriceServicePerMonth","textRightClasses","textCenterClasses","i18totalKey","defaultHomeUserHeaders","headerTotalDiscount","defaultAdminHeaders","totalColumnIndex","ComparePlansModalComponent_ng_container_2_Template","ComparePlansModalComponent_ng_template_4_Template","InvoicePlanComponent_div_3_ng_container_4_ng_container_3_Template","InvoicePlanComponent_div_3_ng_container_4_ng_template_8_Template","InvoicePlanComponent_div_3_ng_template_5_ng_container_2_Template","InvoicePlanComponent_div_3_ng_template_5_ng_template_3_Template","InvoicePlanComponent_div_3_ng_container_4_Template","InvoicePlanComponent_div_3_ng_template_5_Template","InvoicePlanComponent","InvoicePlanComponent_div_3_Template","handlePlan","tmp_0_0","SubscriptionUrl","invoices$","invoice_r17","OrderSubscriptionDetailsUrl","PaymentsComponent_mbs_table_grid_20_ng_template_6_ng_template_3_div_1_Template","Comment","PaymentsComponent_mbs_table_grid_20_ng_template_6_ng_template_3_Template","date_r28","PaymentsComponent_mbs_table_grid_20_ng_template_10_mbs_text_ellipsis_0_Template","invoice_r26","expireDate_r31","PaymentsComponent_mbs_table_grid_20_ng_template_11_mbs_text_ellipsis_0_Template","invoice_r29","invoice_r32","OrderUrl","PaymentsComponent_mbs_table_grid_20_ng_template_12_a_0_Template","invoice_r35","InvoicePaymentUrl","PaymentsComponent_mbs_table_grid_20_ng_template_13_ng_container_0_a_1_Template","PaymentsComponent_mbs_table_grid_20_ng_template_13_ng_container_0_Template","PaymentsComponent_mbs_table_grid_20_ng_template_5_Template","PaymentsComponent_mbs_table_grid_20_ng_template_6_Template","PaymentsComponent_mbs_table_grid_20_ng_template_7_Template","PaymentsComponent_mbs_table_grid_20_ng_template_8_Template","PaymentsComponent_mbs_table_grid_20_ng_template_9_Template","PaymentsComponent_mbs_table_grid_20_ng_template_10_Template","PaymentsComponent_mbs_table_grid_20_ng_template_11_Template","PaymentsComponent_mbs_table_grid_20_ng_template_12_Template","PaymentsComponent_mbs_table_grid_20_ng_template_13_Template","maxHeight$","invoiceAmount","tmp_3_0","invoiceNextPayment","PaymentsComponent","#isSmartSearchPersist","updateMaxHeight","invoicesService","contentAvailable$","isAvailableEditMode$","updatePaginationOptionsDataSize","handleUpdateFilter","resetPagePagination","mbsTableElRef","updateQueryParams","plan","handleSubscriptionUpdate","showConfirmSubscriptionUpdatedModal","messageBodyTemplate","PaymentsComponent_div_15_Template","PaymentsComponent_div_18_Template","PaymentsComponent_mbs_table_grid_20_Template","PaymentsComponent_ng_template_22_Template","tmp_5_0","tmp_6_0","routes","PaymentsRoutingModule","RouterModule","forChild","NgbPopoverModule","NgLetModule","PaymentsModule","CurrencyPipe","DatePipe","PolicyTypePipe","policyTypes","getPolicyTypes","someOneCustom","MailPolicyType","DrivePolicyType","ContactPolicyType","CalendarPolicyType","TeamDrivePolicyType","SharePointPolicyType","UsersPipesModule","filePolicyId","driveTitle","showClearButton","policies_r7","SitePolicies","getDriveItems","tmp_8_0","selectedPolicies","TeamsPolicies","UserRetentionPoliciesControlComponent_ng_container_0_ng_container_1_ng_container_13_mbs_form_group_18_Template","UserRetentionPoliciesControlComponent_ng_container_0_ng_container_1_ng_container_13_mbs_form_group_20_Template","EmailPolicies","DrivePolicies","ContactPolicies","CalendarPolicies","showSharedPointOrSharedDrivesSelect$","toggleRetentionListShown","UserRetentionPoliciesControlComponent_ng_container_0_ng_container_1_ng_container_13_Template","attachedPolicies$","policy_r24","handleShowEditCreateRetention","handleDeleteRetentionPolicy","UserRetentionPoliciesControlComponent_ng_container_0_ng_template_2_mbs_form_group_16_div_6_ng_template_2_Template","UserRetentionPoliciesControlComponent_ng_container_0_ng_template_2_mbs_form_group_16_div_6_Template","UserRetentionPoliciesControlComponent_ng_container_0_ng_template_2_mbs_form_group_16_tr_8_Template","UserRetentionPoliciesControlComponent_ng_container_0_ng_template_2_mbs_form_group_16_tr_9_Template","isLast_r25","policyIconCssClass","UserRetentionPoliciesControlComponent_ng_container_0_ng_template_2_mbs_form_group_16_Template","policies$","UserRetentionPoliciesControlComponent_ng_container_0_ng_container_1_Template","UserRetentionPoliciesControlComponent_ng_container_0_ng_template_2_Template","retentionListShown","UserRetentionPoliciesControlComponent","#userIds","fetchAttachedPolicies","policiesLoading$","attachedPoliciesLoading$","TeamDrivePolicies","getSelectedPolicyId","policiesChanged","initPolicies","fetchPolicies","getDriveTitle","getPopupPolicySettings","saveResult","handleFetchPolicies","bodyDeleted","isDeletedPolicy","policyTypeName","isUserAccountAdmin","police","UserRetentionPoliciesControlComponent_ng_container_0_Template","UserRetentionPoliciesControlComponent_ng_template_3_Template","disabledServicesWarningText","backupEnabled","service_r5","userIdForLink","service_r6","BackupConfigControlComponent","#disabledServices","warningTextArray","isOneServiceDisabled","servicesString","formInitValue","servicesInfo","addControl","BackupConfigControlComponent_mbs_alert_0_Template","BackupConfigControlComponent_ng_template_3_Template","BackupConfigControlComponent_ng_template_4_Template","BackupConfigControlComponent_ng_template_5_Template","BackupConfigControlComponent_ng_template_6_Template","tasks_r2","LastBackupDates","MailLastBackupDate","UserInformationControlComponent_section_53_ng_template_15_span_0_Template","getBackupPercentage","ServiceTypeEnum","DriveLastBackupDate","UserInformationControlComponent_section_53_ng_template_23_span_0_Template","ContactsLastBackupDate","UserInformationControlComponent_section_53_ng_template_31_span_0_Template","CalendarLastBackupDate","UserInformationControlComponent_section_53_ng_template_39_span_0_Template","UserInformationControlComponent_section_53_ng_container_14_Template","UserInformationControlComponent_section_53_ng_template_15_Template","UserInformationControlComponent_section_53_ng_container_22_Template","UserInformationControlComponent_section_53_ng_template_23_Template","UserInformationControlComponent_section_53_ng_container_30_Template","UserInformationControlComponent_section_53_ng_template_31_Template","UserInformationControlComponent_section_53_ng_container_38_Template","UserInformationControlComponent_section_53_ng_template_39_Template","UserInformationControlComponent","#user","tasksState","TasksStatistic","ItemsCountByStates","TotalItemsCount","operationTypeDisplayNames","UserInformationControlComponent_section_53_Template","UserInformationControlComponent_mbs_loader_54_Template","EmailSize","DriveSize","CalendarSize","addForm","twoStepQRURL","AlternateAccountSettingsComponent_ng_template_14_ng_container_29_qrcode_8_Template","secret","showTwoStepResponseCode","AlternateAccountSettingsComponent_ng_template_14_div_2_Template","openChangeEmailModal","AlternateAccountSettingsComponent_ng_template_14_span_9_Template","openChangePasswordModal","twoStepEnable","AlternateAccountSettingsComponent_ng_template_14_ng_container_29_Template","AlternateAccountSettingsComponent_ng_template_14_mbs_form_group_30_Template","alternateEmailInfo","twoFactorForm","twoStepPasswordShow","Panels","AddNew","TwoFactor","AlternateAccountSettingsComponent","#alternateEmailInfo","clearAll","password2faControl","enabled2faControl","responseCode2faControl","alternateSelectedChange","formsInvalid","newAlternateEmailModel","editAlternateEmailModel","invalidPanels","editAlternate","validEmit","panelName","invalidEmit","editTwoStep","deleteTwoStep","emitInvalidStatus","clearFormIfControlsEmpty","useAlternateSwitcherChange","AlternativeAccountExists","noSecret","alternateSelected","AlternateAccountSettingsComponent_td_13_Template","AlternateAccountSettingsComponent_ng_template_14_Template","AlternateAccountSettingsComponent_ng_template_16_Template","UserPermissionsControlComponent","forManyUsers","UserPermissionsControlComponent_app_alternate_account_settings_23_Template","UserGroupActionSidepanelComponent_ng_container_3_ng_container_2_Template","UserGroupActionSidepanelComponent_ng_container_3_span_3_Template","UserGroupActionSidepanelComponent_ng_container_3_span_4_Template","isUserDeleted","UserGroupActionSidepanelComponent_ng_template_4_ng_container_0_Template","userIcon","userIconCssClass","UserGroupActionSidepanelComponent_ng_template_9_mbs_text_ellipsis_3_Template","backupConfigChanged","userIdForLinks","backupConfigSettings","UserGroupActionSidepanelComponent_li_15_ng_template_4_Template","_r30","invalidForms","changeEditAlternateModel","changeNewAlternateEmailModel","UserGroupActionSidepanelComponent_li_16_ng_template_4_Template","_r36","handleUpdatePayloadForExportToPST","UserGroupActionSidepanelComponent_li_17_ng_template_4_Template","UserGroupActionSidepanelComponent_li_18_ng_template_4_Template","UserGroupActionSidepanelComponent_li_19_ng_template_4_Template","backupStatistics$","deleteBackupFormError","UserGroupActionSidepanelComponent_li_20_ng_template_4_Template","handleExportToPST","disabledExport","_r52","UserGroupActionSidepanelComponent_ng_template_22_div_0_Template","UserGroupActionSidepanelComponent_ng_template_22_div_1_Template","UserGroupActionSidepanelComponent_ng_template_22_div_2_Template","deleteMode","exportMode","GroupActionType","General","Permissions","Policies","DeleteBackup","ExportToPST","UserGroupActionSidepanelComponent","#type","statistic","exportToPSTService","serviceTypeUserPropMap","backupServices","singleUser","fetchAlternate","newAlternateEmail","Contact","openConfirmDeleteAlternate","emitSave","toPromise","textError","resetStateDeleteBackupTab","emitObject","attachedPolicies","userRetentionPolicies","resetSingleUserDataToPrevious","payloadForExportToPST","exportJobTransferredRef","UserGroupActionSidepanelComponent_ng_container_3_Template","UserGroupActionSidepanelComponent_ng_template_4_Template","UserGroupActionSidepanelComponent_ng_template_6_Template","UserGroupActionSidepanelComponent_div_8_Template","UserGroupActionSidepanelComponent_ng_template_9_Template","UserGroupActionSidepanelComponent_mbs_loader_12_Template","UserGroupActionSidepanelComponent_li_15_Template","UserGroupActionSidepanelComponent_li_16_Template","UserGroupActionSidepanelComponent_li_17_Template","UserGroupActionSidepanelComponent_li_18_Template","UserGroupActionSidepanelComponent_li_19_Template","UserGroupActionSidepanelComponent_li_20_Template","UserGroupActionSidepanelComponent_ng_template_22_Template","UserGroupActionSidepanelComponent_ng_template_24_Template","group_r24","stat_r32","AllCnt","UsersComponent_ng_container_54_1_ng_template_0_Template","handleGroupAction","ApplyToEnum","_r40","UsersComponent_ng_container_54_6_ng_template_0_Template","_r46","UsersComponent_ng_container_54_8_ng_template_0_Template","_r51","deleteSelectedUser","UsersComponent_ng_container_54_ng_template_10_ng_template_1_ng_container_0_Template","UsersComponent_ng_container_54_ng_template_10_ng_template_1_ng_template_1_Template","UsersComponent_ng_container_54_ng_template_10_mbs_button_0_Template","UsersComponent_ng_container_54_ng_template_10_ng_template_1_Template","showDeleteUser","UsersComponent_ng_container_54_1_Template","UsersComponent_ng_container_54_ng_template_3_Template","UsersComponent_ng_container_54_ng_template_4_Template","UsersComponent_ng_container_54_ng_template_5_Template","UsersComponent_ng_container_54_6_Template","UsersComponent_ng_container_54_8_Template","UsersComponent_ng_container_54_ng_template_10_Template","handleFiltering","TableFiltersEnum","stat_r56","_r66","ctx_r65","BackupCnt","_r69","NotInBackup","ctx_r59","NotInBackupCnt","_r72","InBackupNotInDomain","InBackupNotInDomainCnt","_r75","Suspended","SuspendedCnt","UsersComponent_ng_template_55_ng_container_0_ng_template_1_Template","UsersComponent_ng_template_55_ng_container_0_ng_template_2_Template","UsersComponent_ng_template_55_ng_container_0_ng_template_3_Template","UsersComponent_ng_template_55_ng_container_0_ng_template_4_Template","UsersComponent_ng_template_55_ng_container_0_ng_template_5_Template","UsersComponent_ng_template_55_ng_container_0_Template","UsersComponent_ng_template_57_ng_container_0_span_3_Template","user_r77","authUserId","isUserDeleted_r79","getUserClasses","getUserTooltip","UsersComponent_ng_template_57_ng_container_0_Template","getIsUserDeleted","user_r82","handleSelectUser","UsersComponent_ng_template_58_mbs_text_ellipsis_1_Template","UsersComponent_ng_template_58_ng_template_4_Template","IsMainUser","user_r88","user_r89","backupLicenseColorCssClass","user_r90","getBackupLicenseStatus","_r94","handleSortPolicyType","ctx_r96","UsersComponent_ng_template_63_ng_template_3_Template","_r100","dropDownFilter","ctx_r101","ctx_r102","BackupFilterText","UsersComponent_ng_template_64_ng_template_2_Template","status_r105","ctx_r104","user_r103","UsersComponent_ng_template_65_a_0_Template","_r109","ctx_r111","ctx_r107","UsersComponent_ng_template_66_ng_template_2_Template","status_r114","ctx_r113","user_r112","UsersComponent_ng_template_67_a_0_Template","_r118","ctx_r117","ctx_r119","UsersComponent_ng_template_68_ng_template_2_Template","status_r123","ctx_r122","user_r121","UsersComponent_ng_template_69_a_0_Template","_r127","ctx_r126","ctx_r128","ctx_r129","ctx_r125","UsersComponent_ng_template_70_ng_template_2_Template","status_r132","ctx_r131","user_r130","UsersComponent_ng_template_71_a_0_Template","TableFilters","ApplyTo","UsersComponent","#toastTitleInfo","panelWidth","groupActionsSidepanel","panelService","wideContentMode$","domainService","dashboardService","groupActionUserSettings","userGroups$","searchLoading$","typeahead$","getUserColorClass","getIsGlobalAdmin","users$","AutoAddUserToBackup","getPanel","handleGroupActionEvent","deleteJobTransferredRef","serviceStatistics","setFilterAll","handleSearchChange","mbsInputSearchRef","enableBackupForAll","handleCheckUsers","handleOpenSidepanelForSingleUser","setFilterInBackup","setFilterNotInBackup","setFilterInBackupNotInDomain","setFilterSuspended","handleSyncDomain","successMessage","addAlternate","twoStepData","permissions","expandSavingRequests","getUserIconClass","applyTo","inBackupCount","notInBackupCount","MailOn","DriveOn","ContactsOn","CalendarOn","btnText","role","getUserTooltipRole","servicesAvailable","handleSearchClear","handleChangeSelect","getRightAlignClass","UsersComponent_ng_template_17_Template","_r134","UsersComponent_ng_container_54_Template","UsersComponent_ng_template_55_Template","UsersComponent_ng_template_57_Template","UsersComponent_ng_template_58_Template","UsersComponent_ng_template_59_Template","UsersComponent_ng_template_60_Template","UsersComponent_ng_template_61_Template","UsersComponent_ng_template_62_Template","UsersComponent_ng_template_63_Template","UsersComponent_ng_template_64_Template","UsersComponent_ng_template_65_Template","UsersComponent_ng_template_66_Template","UsersComponent_ng_template_67_Template","UsersComponent_ng_template_68_Template","UsersComponent_ng_template_69_Template","UsersComponent_ng_template_70_Template","UsersComponent_ng_template_71_Template","UsersComponent_ng_template_72_Template","EditGroupSettingModalComponent","isGroupAction","autoActivationModeCtrl","autoActivationMode","isNotChanged","handleCancel","EditGroupSettingModalComponent_span_7_Template","NewGroupSettingsModalComponent","handleAutoActiveAction","loadingEnabledAllGroupMembers$","UserGroupsComponent_ng_container_33_ng_template_1_Template","UserGroupsComponent_ng_template_34_ng_template_0_Template","group_r11","group_r13","handleGroupChange","UserGroupsComponent","#allUsers","#newUsers","#disabled","loadingNewGroup$","loadingEnabledNewlyCreatedUsers$","constSortProp","filterModeModel","modes","defaultToastBodySuccessText","updateGroupProperty","handlePageChange","handlePageSizeChange","normalizeAutoActivation","autoActivation","autoActivateNewUsersOnlyTag","handleSearch","trackBy","mbsTableGridElRef","handleSelect","handleChangeMode","UserGroupsComponent_ng_container_33_Template","UserGroupsComponent_ng_template_34_Template","UserGroupsComponent_ng_template_36_Template","UserGroupsComponent_ng_template_37_Template","UserGroupsComponent_ng_template_38_Template","UserRoutingModule","UserModule","QRCodeModule","loadConfigurations","production","authUrl","proxyUrl","localePath","stage","spriteBase","AnimationBuilder","AnimationFactory","AUTO_STYLE","sequence","tokens","NoopAnimationPlayer","_onDoneFns","_onStartFns","_onDestroyFns","_originalOnDoneFns","_originalOnStartFns","_started","_destroyed","_finished","_position","parentPlayer","totalTime","_onFinish","onStart","onDone","onDestroy","hasStarted","play","_onStart","triggerMicrotask","restart","setPosition","getPosition","triggerCallback","phaseName","AnimationGroupPlayer","_players","players","doneCount","destroyCount","startCount","player","_onDestroy","timeAtPosition","longestPlayer","longestSoFar","beforeDestroy","invalidTimingValue","exp","ɵRuntimeError","ngDevMode","optimizeGroupPlayer","ɵAnimationGroupPlayer","normalizeKeyframes$1","normalizer","keyframes","preStyles","postStyles","normalizedKeyframes","previousOffset","previousKeyframe","kf","isSameOffset","normalizedKeyframe","normalizedProp","normalizePropertyName","normalizeStyleValue","animationFailed","listenOnPlayer","copyAnimationEvent","makeAnimationEvent","triggerName","fromState","toState","getOrSetDefaultValue","defaultValue","parseTimelineCommand","command","separatorPos","getParentElement","_CACHED_BODY","_IS_WEBKIT","containsElement","elm1","elm2","invokeQuery","NoopAnimationDriver","validateStyleProperty","getBodyNode","containsVendorPrefix","matchesElement","_element","_selector","computeStyle","animate","easing","previousPlayers","scrubberAccessRequested","ɵprov","AnimationDriver","ONE_SECOND","ENTER_CLASSNAME","LEAVE_CLASSNAME","NG_TRIGGER_CLASSNAME","NG_TRIGGER_SELECTOR","NG_ANIMATING_CLASSNAME","NG_ANIMATING_SELECTOR","resolveTimingValue","_convertTimeValueToMS","resolveTiming","timings","allowNegativeValues","parseTimeExpression","delayMatch","easingVal","containsErrors","startIndex","negativeStepValue","negativeDelayValue","copyObj","destination","convertToMap","styleMap","copyStyles","backfill","setStyles","formerStyles","camelProp","dashCaseToCamelCase","eraseStyles","normalizeAnimationEntry","PARAM_REGEX","extractStyleParams","lastIndex","interpolateParams","varName","localVal","invalidParamValue","iteratorToArray","DASH_CASE_REGEXP","visitDslNode","visitor","visitTrigger","visitState","visitTransition","visitSequence","visitGroup","visitAnimate","visitKeyframes","visitStyle","visitReference","visitAnimateChild","visitAnimateRef","visitQuery","visitStagger","invalidNodeType","ANY_STATE","parseTransitionExpr","transitionValue","expressions","parseInnerTransitionStr","eventStr","parseAnimationAlias","invalidTransitionAlias","invalidExpression","expr","makeLambdaFromStates","TRUE_BOOLEAN_VALUES","FALSE_BOOLEAN_VALUES","lhs","rhs","LHS_MATCH_BOOLEAN","RHS_MATCH_BOOLEAN","lhsMatch","rhsMatch","SELF_TOKEN_REGEX","buildAnimationAst","driver","warnings","AnimationAstBuilderVisitor","build","_driver","AnimationAstBuilderContext","_resetContextStyleTimingState","currentQuerySelector","collectedStyles","currentTime","queryCount","depCount","states","transitions","invalidTrigger","definitions","def","stateDef","transition","invalidDefinition","styleAst","astParams","containsDynamicStyles","missingSubs","sub","invalidState","metadataName","matchers","normalizeAnimationOptions","furthestTime","innerAst","timingAst","constructTimingAst","makeTimingAst","strValue","ast","dynamic","currentAnimateTimings","styleMetadata","newStyleData","_styleAst","isEmptyStep","_makeStyleAst","_validateStyleAst","metadataStyles","styleTuple","collectedEasing","styleData","endTime","tuple","collectedEntry","updateCollectedStyle","invalidParallelAnimation","firstStart","firstEnd","secondStart","secondEnd","validateStyleParams","invalidStyleParams","invalidKeyframes","totalKeyframesWithOffsets","offsets","offsetsOutOfOrder","keyframesOutOfRange","offsetVal","consumeOffset","invalidOffset","keyframeOffsetsOutOfOrder","generatedOffset","keyframesMissingOffsets","animateDuration","durationUpToThisFrame","parentSelector","currentQuery","includeSelf","normalizeSelector","hasAmpersand","optional","originalSelector","invalidStagger","currentTransition","unsupportedCSSPropertiesFound","normalizeParams","createTimelineInstruction","preStyleProps","postStyleProps","subTimeline","ElementInstructionMap","instructions","existingInstructions","ENTER_TOKEN_REGEX","LEAVE_TOKEN_REGEX","buildAnimationTimelines","rootElement","enterClassName","leaveClassName","startingStyles","finalStyles","subInstructions","AnimationTimelineBuilderVisitor","buildKeyframes","AnimationTimelineContext","currentTimeline","delayNextStep","timelines","timeline","containsAnimation","lastRootTimeline","allowOnlyTimelineStyles","elementInstructions","innerContext","createSubContext","_visitSubInstructions","transformIntoNewTimeline","previousNode","_applyAnimationRefDelays","animationsRefsOptions","animationRefOptions","animationDelay","animationDelayValue","instruction","instructionTimings","appendInstructionToTimeline","updateOptions","subContextCount","snapshotCurrentStyles","DEFAULT_NOOP_PREVIOUS_NODE","applyStylesToKeyframe","innerTimelines","mergeTimelineCollectedStyles","_visitTiming","incrementTime","hasCurrentStyleProperties","forwardFrame","applyEmptyStep","innerTimeline","forwardTime","elms","currentQueryTotal","sameElementTimeline","currentQueryIndex","parentContext","tl","maxTime","currentStaggerTime","startingTime","_enterClassName","_leaveClassName","initialTimeline","TimelineBuilder","skipIfExists","newOptions","optionsToUpdate","newParams","paramsToUpdate","_copyOptions","oldParams","fork","updatedTimings","builder","SubTimelineBuilder","stretchStartingKeyframe","invalidQuery","_elementTimelineStylesLookup","_previousKeyframe","_currentKeyframe","_keyframes","_styleSummary","_localTimelineStyles","_pendingStyles","_backFill","_currentEmptyStepKeyframe","_globalTimelineStyles","_loadKeyframe","hasPreStyleStep","_updateStyle","flattenStyles","allStyles","allProperties","getFinalKeyframe","details1","details0","finalKeyframes","keyframe","finalKeyframe","preProps","postProps","kf0","kf1","_stretchStartingKeyframe","newKeyframes","startingGap","newFirstKeyframe","oldFirstKeyframe","roundOffset","oldOffset","decimalPoints","mult","round","AnimationStyleNormalizer","DIMENSIONAL_PROP_SET","WebAnimationsStyleNormalizer","userProvidedProperty","normalizedProperty","strVal","valAndSuffixMatch","invalidCssUnitValue","createTransitionInstruction","isRemovalTransition","fromStyles","toStyles","queriedElements","EMPTY_OBJECT","AnimationTransitionFactory","_triggerName","_stateStyles","currentState","oneOrMoreTransitionsMatch","matchFns","buildStyles","stateName","styler","currentOptions","nextOptions","skipAstBuild","transitionAnimationParams","currentStateStyles","nextAnimationParams","nextStateStyles","preStyleMap","postStyleMap","isRemoval","animationOptions","applyParamDefaults","elm","queriedElementsList","userParams","defaults","AnimationStateStyles","defaultParams","combinedParams","AnimationTrigger","_normalizer","transitionFactories","balanceProperties","fallbackTransition","createFallbackTransition","containsQueries","matchTransition","matchStyles","stateMap","key1","key2","EMPTY_INSTRUCTION_MAP","TimelineAnimationEngine","bodyNode","_animations","_playersById","registerFailed","_buildPlayer","autoStylesMap","missingOrDestroyedAnimation","createAnimationFailed","_getPlayer","missingPlayer","baseEvent","QUEUED_CLASSNAME","DISABLED_CLASSNAME","EMPTY_PLAYER_ARRAY","NULL_REMOVAL_STATE","namespaceId","setForRemoval","setForMove","hasAnimation","removedBeforeQueried","NULL_REMOVED_QUERIED_STATE","REMOVAL_FLAG","StateValue","isObj","normalizeTriggerValue","absorbOptions","VOID_VALUE","DEFAULT_STATE_VALUE","AnimationTransitionNamespace","hostElement","_engine","_triggers","_queue","_elementListeners","_hostClassName","phase","missingTrigger","missingEvent","isTriggerEventValid","unsupportedTriggerEvent","listeners","triggersWithStates","statesByElement","afterFlush","_getTrigger","unregisteredTrigger","defaultToFallback","TransitionAnimationPlayer","objEquals","k1","k2","reportError","playersOnElement","playersByElement","queued","isFallbackTransition","totalQueuedPlayers","deregister","clearElementCache","elementPlayers","_signalRemovalForInnerTriggers","namespaces","fetchNamespacesByElement","ns","triggerLeaveAnimation","afterFlushAnimationsDone","destroyAfterComplete","triggerStates","previousTriggersValues","markElementAsRemoved","processLeaveNode","prepareLeaveAnimationListeners","elementStates","visitedTriggers","removeNode","engine","containsPotentialParentTransition","totalAnimations","currentPlayers","playersByQueriedElement","removalFlag","destroyInnerAnimations","_onRemovalComplete","insertNode","drainQueuedTransitions","microtaskId","markedForDestroy","d0","d1","TransitionAnimationEngine","onRemovalComplete","newHostElements","disabledNodes","_namespaceLookup","_namespaceList","_flushFns","_whenQuietFns","namespacesByHostElement","collectedEnterElements","collectedLeaveElements","queuedPlayers","createNamespace","_balanceNamespaceList","collectEnterElement","namespaceList","ancestor","ancestorNs","registerTrigger","_fetchNamespace","stateValue","details","markElementAsDisabled","hostNS","_buildInstruction","subTimelines","skipBuildAst","destroyActiveAnimationsForElement","finishActiveQueriedAnimationOnElement","whenRenderingDone","cleanupFns","_flushAnimations","quietFns","triggerTransitionsFailed","skippedPlayers","skippedPlayersMap","queuedInstructions","allPreStyleElements","allPostStyleElements","disabledElementsSet","nodesThatAreDisabled","allTriggerElements","enterNodeMap","buildRootMap","enterNodeMapIds","allLeaveNodes","mergedLeaveNodes","leaveNodesWithoutAnimations","leaveNodeMapIds","leaveNodeMap","allPlayers","erroneousTransitions","previousValue","nodeIsOrphaned","stringMap","setVal","transitionFailed","allPreviousPlayersMap","animationElementMap","_beforeAnimationBuild","_getPreviousPlayers","prevPlayer","replaceNodes","replacePostStylesAsPre","postStylesMap","cloakAndComputeStyles","preStylesMap","rootPlayers","subPlayers","NO_PARENT_ANIMATION_ELEMENT_DETECTED","overrideTotalTime","parentWithAnimation","parentsToAdd","detectedParent","innerPlayer","_buildAnimation","setRealPlayer","parentPlayers","playersForElement","syncPlayerEvents","queriedPlayerResults","queriedInnerElements","queriedPlayers","activePlayers","removeNodesAfterAnimationDone","isQueriedElement","toStateValue","queriedElementPlayers","isRemovalAnimation","targetNameSpaceId","targetTriggerName","timelineInstruction","realPlayer","getRealPlayer","allQueriedPlayers","allConsumedElements","allSubElements","allNewPlayers","flattenGroupPlayers","finalPlayers","_flattenGroupPlayersRecur","wrappedPlayer","deleteOrUnsetInMap","currentValues","_player","_containsRealPlayer","_queuedCallbacks","_queueEvent","cloakElement","valuesMap","elementPropsMap","defaultStyle","cloakVals","failedElements","roots","rootMap","nodeSet","localRootMap","getRoot","postEntry","preEntry","AnimationEngine","_triggerCache","_transitionEngine","_timelineEngine","componentId","cacheKey","triggerBuildFailed","buildTrigger","onInsert","onRemove","disableAnimations","process","eventPhase","SpecialCasedStyles","initialStylesByElement","_startStyles","_endStyles","initialStyles","_initialStyles","filterNonAnimatableStyles","isNonAnimatableStyle","WebAnimationsPlayer","_specialStyles","_initialized","currentSnapshot","_duration","_delay","_preparePlayerBeforeStart","domPlayer","_triggerWebAnimation","_finalKeyframe","_resetDomPlayerState","_convertKeyframesToObject","kfs","WebAnimationsDriver","validateAnimatableStyleProperty","playerOptions","previousStyles","previousWebAnimationPlayers","allowPreviousPlayerStylesMerge","normalizeKeyframes","balancePreviousStylesIntoKeyframes","startingKeyframe","missingStyleProps","specialStyles","packageNonAnimatableStyles","startStyles","endStyles","BrowserAnimationBuilder","rootRenderer","_nextAnimationId","_renderer","ViewEncapsulation","issueAnimationCommand","BrowserAnimationFactory","_id","RendererAnimationPlayer","_command","_listen","setProperty","DISABLE_ANIMATIONS_FLAG","AnimationRendererFactory","delegate","_zone","_currentId","_microtaskId","_animationCallbacksBuffer","_rendererCache","_cdRecurDepth","BaseAnimationRenderer","onRendererDestroy","animationTriggers","AnimationRenderer","begin","_scheduleCountTask","scheduleListenerCallback","destroyNode","createComment","isMove","isHostElement","selectRootElement","selectorOrNode","preserveContent","resolveElementFromTarget","parseTriggerCallbackName","dotIndex","SHARED_ANIMATION_PROVIDERS","ɵAnimationStyleNormalizer","instantiateDefaultStyleNormalizer","ɵWebAnimationsStyleNormalizer","ɵAnimationEngine","InjectableAnimationEngine","RendererFactory2","instantiateRendererFactory","ɵDomRendererFactory2","NgZone","BROWSER_ANIMATIONS_PROVIDERS","ɵWebAnimationsDriver","ANIMATION_MODULE_TYPE","BROWSER_NOOP_ANIMATIONS_PROVIDERS","ɵNoopAnimationDriver","BrowserAnimationsModule","withConfig","ngModule","providers","ɵmod","ɵinj","BrowserModule","SentryErrorHandler","extractedError","extractError","isErrorSkipped","ngOriginalError","ErrorEvent","ErrorHandlerModule","forRoot","ErrorHandler","DeleteAlternateAccountModalComponent","alternateAccount$","ResetPasswordModalComponent","alternateEmailCtrl","primaryEmail$","handleSend","setEmailErrorState","TwoFactorAuthenticationComponent","validateLoading$","handleValidate","TwoFactorAuthenticationComponent_qrcode_39_Template","TwoFactorDisableComponent","disableLoading$","handleDisable","MyAccountAlternateAccountTabComponent_ng_template_4_ng_container_4_Template","MyAccountAlternateAccountTabComponent_ng_template_4_ng_template_6_Template","handleChangeEmail","handleResetPassword","handleChangePassword","verifyEmail$","verifyEmailLoading$","alternateEmailControl","changePasswordLoading$","handleDisableTwoFA","twoFALoading$","handleEnableTwoFA","MyAccountAlternateAccountTabComponent_mbs_form_section_6_ng_container_5_Template","MyAccountAlternateAccountTabComponent_mbs_form_section_6_ng_container_7_Template","MyAccountAlternateAccountTabComponent_mbs_form_section_6_ng_template_9_Template","twoStepEnabled$","handleDeleteAlternateAccount","deleteEmailLoading$","MyAccountAlternateAccountTabComponent","initialAlternateEmail$","#settings","confirmPasswordControl","myAccountSidepanelService","tabService","tabsetItem","changeAlternateEmail","isAdminOrSingleUserRole$","checkExtraControls","resetFormGroup","hasAlternateEmail","updateFormValue","updateValidators","MyAccountAlternateAccountTabComponent_1","MyAccountAlternateAccountTabComponent_ng_container_2_Template","MyAccountAlternateAccountTabComponent_ng_template_4_Template","MyAccountAlternateAccountTabComponent_mbs_form_section_6_Template","MyAccountAlternateAccountTabComponent_mbs_form_section_8_Template","isAvailableEndpointSuffix","MyAccountBackupDestinationTabComponent","#toastTitleWarning","_settings","storageTypeControl","secretKeyControl","bucketNameLabelKey","accessKeyLabelKey","secretKeyLabelKey","isAvailableEndpoint","verifiedTooltip","secretKeyIconClasses","lock","unlock","disableDelete$","disabledSecretKey$","verified$","testLoading$","storageTypes","deleteConfirmTempRef","handleTest","convertedPayload","handleToggleDisabledSecretKey","MyAccountBackupDestinationTabComponent_1","MyAccountBackupDestinationTabComponent_ng_container_3_Template","MyAccountBackupDestinationTabComponent_ng_template_5_Template","MyAccountBackupDestinationTabComponent_mbs_form_group_27_Template","MyAccountBackupDestinationTabComponent_mbs_form_group_28_Template","MyAccountBackupDestinationTabComponent_ng_template_42_Template","AllowedModalComponent","handleApply","handleShowCreateRetention","policy_r11","policy_r12","policy_r13","policy_r14","policy_r16","AssignRetentionPolicyComponent_ng_container_3_div_50_ng_template_8_Template","policies_r1","policy_r21","_r23","AssignRetentionPolicyComponent_ng_container_3_div_52_ng_template_9_Template","AssignRetentionPolicyComponent_ng_container_3_mbs_button_4_Template","handleRefresh","AssignRetentionPolicyComponent_ng_container_3_ng_template_19_Template","AssignRetentionPolicyComponent_ng_container_3_ng_template_29_Template","AssignRetentionPolicyComponent_ng_container_3_ng_template_39_Template","AssignRetentionPolicyComponent_ng_container_3_ng_template_49_Template","AssignRetentionPolicyComponent_ng_container_3_div_50_Template","AssignRetentionPolicyComponent_ng_container_3_div_52_Template","isAvailableCreatePolicy$","AssignRetentionPolicyComponent","#initPolicies","#attachedPolicies$","assignLoading$","initSteams","handleAssign","bodyUpdated","AssignRetentionPolicyComponent_ng_container_3_Template","DeleteBackupModalComponent","#payloadForDeleteBackup","services$","DeleteBackupModalComponent_ng_template_17_Template","ExportToPstModalComponent","exportLoading$","handleExport","ExportToPstModalComponent_ng_template_15_Template","BrowserService","isSupportedBrowser","detectBrowser","isSafari","Offset","OffsetVersion","ix","browserAgent","appName","browserName","appVersion","handlePassword","isAvailableExportSettings$","keepAllowedControl","MyAccountGeneralTabComponent_ng_template_32_mbs_button_0_Template","periodFilter","MyAccountGeneralTabComponent_ng_template_38_div_0_Template","keepCntUnitsControl","handleDeleteBackup","handleAssignRetentionPolicy","MyAccountGeneralTabComponent","phoneControl","browserService","providerRoles$","$isDomainUser$","isAvailableExportToPST$","hasRestorePermission","phonePattern","initialSettings","handleBlurPhoneInput","MyAccountGeneralTabComponent_1","MyAccountGeneralTabComponent_mbs_alert_27_Template","MyAccountGeneralTabComponent_ng_template_32_Template","MyAccountGeneralTabComponent_ng_template_38_Template","MyAccountGeneralTabComponent_mbs_button_42_Template","MyAccountGeneralTabComponent_mbs_button_45_Template","MyAccountGeneralTabComponent_div_47_Template","MyAccountGeneralTabComponent_ng_template_49_Template","MyAccountModule","i10","i11","i12","i13","i14","AuthGuard","canActivate","DataChangeWatcherGuard","dcw","canDeactivate","errorTitle","ErrorHandlerInterceptor","excludedRoutes","intercept","handle","getForbiddenMessage","errorResponse","SentryInterceptor","HttpResponse","sendBreadcrumb","SessionInterceptor","isModalOpen","excludePaths","showModal","AppInitService","GlobalErrorHandler","reload","en","plural","PHRASAL_VERBS","PHRASAL_VERBS_JSON","ALL_EXCLUSIONS","EXCLUSIONS_TYPES_JSON","capitalize","transformEnTitle","accum","byPrev","isUndefined","isExclusion","capitalizeEnTitle","pv","dropDot","formatTitle","lng","FOMAT_TOKEN","each","hasXMLHttpRequest","fetchApi","XmlHttpRequestApi","ActiveXObjectApi","ActiveXObject","fetchNode","addQueryString","queryString","paramName","fetchIt","omitFetchOptions","esm_request","queryStringParams","customHeaders","reqOptions","requestWithFetch","crossDomain","overrideMimeType","requestWithXmlHttpRequest","Backend","allOptions","loadPath","addPath","allowMultiLoading","parsePayload","fallbackValue","reloadInterval","credentials","languages","_readAny","language","loadUrlLanguages","loadUrlNamespaces","makePromise","maybePromise","isPromise","resolvedLoadPath","interpolator","interpolate","loadUrl","parseErr","_this4","finished","dataArray","resArray","_this5","_this$services","backendConnector","languageUtils","currentLanguage","toLoad","toResolveHierarchy","preload","read","esm","LOCALE_DATA","localeEn","LANGUAGE_DETECTOR","detectorOptions","i18nextOptions","detect","documentLangObserver","mutationsList","_observer","mutation","lang","registerLocaleData","cacheUserLanguage","localeIdFactory","i18next","I18N_PROVIDERS","defaultNS","APP_INITIALIZER","i18NextInit","use","getI18nextOptions","whitelist","fallbackLng","returnEmptyString","interpolation","defaultInterpolationFormat","backend","I18NEXT_SERVICE","LOCALE_ID","HeaderItem","_linkFunction","needChangeDetectionHack","AppHeaderComponent_ng_container_5_ng_container_1_Template","AppHeaderComponent_ng_container_5_ng_template_2_Template","showShortSystemLogo","AppHeaderComponent_ng_template_6_ng_container_0_Template","AppHeaderComponent_ng_template_6_ng_template_1_Template","activeRoute_r31","AppHeaderComponent_div_34_ng_container_3_Template","emergencySignIn","showNavText","handleOpenMyAccountSidepanel","handleSignAsAdmin","showMargin","pageRouterUrl","AppHeaderComponent","getRouterUrl","statisticsService","servicesNeedChangeDetectionHack","isNavbarCollapsed","isBusinessOffice","systemInfo$","setUserId","initHeaderItemLinks","productMode","getServiceStatus$","showAlertStatus","NavigationEnd","accessEventByUrl","accountDropdown","isProvider","needOpenMyAccountSidepanel","availablePathsWithId","availablePaths","segments","stabled","getStabledSegments","lastSegmentEqual","paths","removeId","regexGUID","at","isNeedShowAlertStatus","pageServiceType","routerPathName","baseURI","alertBody","getAlertBody","customerProblem","getAlertCtrlOffice","getAlertCtrlGoogle","handleLogout","AppHeaderComponent_ng_container_5_Template","AppHeaderComponent_ng_template_6_Template","AppHeaderComponent_li_14_Template","AppHeaderComponent_ng_container_16_Template","AppHeaderComponent_ng_template_18_Template","AppHeaderComponent_li_21_Template","AppHeaderComponent_li_27_Template","AppHeaderComponent_li_28_Template","AppHeaderComponent_li_29_Template","AppHeaderComponent_li_31_Template","AppHeaderComponent_div_34_Template","AppHeaderComponent_div_35_Template","AppHeaderComponent_ng_container_38_Template","AppHeaderComponent_span_45_Template","AppHeaderComponent_ng_template_52_Template","AppHeaderComponent_div_57_Template","AppHeaderComponent_li_60_Template","AppHeaderComponent_li_62_Template","AppHeaderComponent_li_69_Template","AppHeaderComponent_ng_container_75_Template","AppHeaderComponent_ng_container_76_Template","systemInfo_r1","LogoUrl","AppFooterComponent_ng_container_1_img_1_Template","AppFooterComponent","AppFooterComponent_ng_container_1_Template","AppLayoutComponent","AuthCallbackComponent","localStorageService","checkAndRedirectToHost","sendAuthCallback","Code","stateProcessing","restoreToFrom","redirectUrl","updateRestoreToAnotherUserSessionStorage","navigateByUrl","redirectPage","urlBase64Decode","Model","JwtHelperService","errorText_r3","SignInAlternateEmailModalComponent","providerEmailCtrl","passwordCtrl","providerSignInCtrl","tfaCtrl","providerEmail","alternativeEmail","handleSignIn","AlternateEmail","AlternatePassword","ClientMinutesOffset","IsProviderSignIn","TwoStepAuthCode","validation","requiredTwoStepAuthCode","wrongTwoStepAuthCode","alternativeAccountNotVerified","tfa","SignInAlternateEmailModalComponent_mbs_alert_3_Template","SignInAlternateEmailModalComponent_mbs_form_group_14_Template","SignInAlternateEmailModalComponent_mbs_form_group_15_Template","handleOpenSignInAlternativeModal","LoginComponent","unloadHandler","beforeUnloadHandler","LoginComponent_div_0_Template","LoginComponent_ng_template_2_Template","AvailableServicesGuard","pageData","DomainUserGuard","handleLogOut","errorText_r6","ResetPasswordComponent_ng_template_5_mbs_alert_0_Template","ResetPasswordComponent","isSuccessChanged","ResetPasswordComponent_ng_container_4_Template","ResetPasswordComponent_ng_template_5_Template","description_r29","AccountComponent_ng_container_4_ng_container_6_ng_container_1_div_1_ng_container_1_Template","AccountComponent_ng_container_4_ng_container_6_ng_container_1_div_1_Template","SignInAsAdmin","domainName_r37","AccountComponent_ng_container_4_ng_container_6_ng_template_2_div_0_Template","AccountComponent_ng_container_4_ng_container_6_ng_container_1_Template","AccountComponent_ng_container_4_ng_container_6_ng_template_2_Template","provider_r30","AccountComponent_ng_container_4_ng_container_1_Template","AccountComponent_ng_container_4_ng_container_2_Template","AccountComponent_ng_container_4_div_5_Template","AccountComponent_ng_container_4_ng_container_6_Template","AccountComponent_ng_container_4_ng_container_8_Template","ErrorDescription","description_r43","AccountComponent_ng_container_5_div_6_mbs_button_1_Template","AccountComponent_ng_container_5_ng_container_1_Template","AccountComponent_ng_container_5_ng_container_2_Template","AccountComponent_ng_container_5_div_5_Template","AccountComponent_ng_container_5_div_6_Template","AccountComponent_ng_container_5_ng_container_8_Template","description_r52","handleAccessRequest","AccountComponent_ng_container_6_ng_container_1_Template","AccountComponent_ng_container_6_ng_container_2_Template","AccountComponent_ng_container_6_div_5_Template","AccountComponent_ng_container_6_div_6_Template","AccountComponent_ng_container_6_ng_container_8_Template","RequestAccess","description_r60","AccountComponent_ng_container_7_ng_container_1_Template","AccountComponent_ng_container_7_ng_container_2_Template","AccountComponent_ng_container_7_div_5_Template","AccountComponent_ng_container_7_div_6_Template","AccountComponent_ng_container_7_ng_container_8_Template","domainName_r67","url_r68","AccountComponent_ng_container_8_ng_container_1_Template","AccountComponent_ng_container_8_q_6_Template","AccountComponent_ng_container_8_div_8_Template","AccountComponent_ng_container_8_ng_container_10_Template","MarketPlaceUrl","AccountComponent_ng_container_9_ng_container_1_Template","AccountComponent_ng_container_9_ng_container_2_Template","AccountComponent_ng_container_9_ng_container_14_Template","ProviderEmail","domainName_r76","url_r77","AccountComponent_ng_container_10_ng_container_1_Template","AccountComponent_ng_container_10_q_6_Template","AccountComponent_ng_container_10_div_8_Template","AccountComponent_ng_container_10_ng_container_10_Template","AccountComponent_ng_container_11_ng_container_3_Template","handleReturnByRoute","AccountComponent_ng_container_11_ng_container_11_Template","email_r87","AccountComponent_ng_container_12_div_10_mbs_button_1_Template","AccountComponent_ng_container_12_ng_container_1_Template","AccountComponent_ng_container_12_ng_container_2_Template","AccountComponent_ng_container_12_h3_4_Template","AccountComponent_ng_container_12_div_10_Template","AccountComponent_ng_container_12_ng_container_12_Template","email_r96","description_r97","AccountComponent_ng_container_13_ng_container_1_Template","AccountComponent_ng_container_13_ng_container_2_Template","AccountComponent_ng_container_13_h3_4_Template","AccountComponent_ng_container_13_div_6_Template","AccountComponent_ng_container_13_ng_container_8_Template","AccountComponent_ng_container_14_ng_container_1_Template","AccountComponent_ng_container_14_ng_container_2_Template","AccountComponent_ng_container_15_ng_container_1_Template","AccountComponent_ng_container_15_ng_container_2_Template","AccountComponent_ng_container_15_ng_container_6_Template","title_r103","_r105","_r107","ctx_r106","AccountComponent","OwnerId","UserEmail","UserDomain","AccountComponent_ng_container_2_Template","AccountComponent_ng_container_3_Template","AccountComponent_ng_container_4_Template","AccountComponent_ng_container_5_Template","AccountComponent_ng_container_6_Template","AccountComponent_ng_container_7_Template","AccountComponent_ng_container_8_Template","AccountComponent_ng_container_9_Template","AccountComponent_ng_container_10_Template","AccountComponent_ng_container_11_Template","AccountComponent_ng_container_12_Template","AccountComponent_ng_container_13_Template","AccountComponent_ng_container_14_Template","AccountComponent_ng_container_15_Template","AccountComponent_ng_template_17_Template","AccountComponent_ng_template_19_Template","AccountComponent_ng_template_21_Template","AccountComponent_ng_template_23_Template","HttpClient","NotFoundComponent","defaultRoutes","pathMatch","redirectTo","loadChildren","__webpack_require__","AuditLogModule","i18nextNamespaces","I18NEXT_NAMESPACE_RESOLVER","DashboardModule","MailModule","DriveModule","HistoryModule","TeamDriveModule","SharePointModule","TeamsPageModule","ContactsModule","CalendarModule","RetentionPolicyModule","TaskManagerModule","ExportResultsModule","ReportsModule","BackupHistoryModule","SkipItemsModule","HelpModule","getSubsystemRoute","AppRoutingModule","AppComponent","activatedRoute","titleService","isUrlChanged","getRouteWithData","setTitle","updateTitle","eventParams","getUrlWithoutParams","urlTree","routeDataKeys","pageName","Title","AppModule","HTTP_INTERCEPTORS","appInitService","HttpClientModule","JwtModule","tokenGetter","enableProdMode","mountApp","__NgCli_bootstrap_1","bootstrapModule","module","appComponent","enableDebugTools","JWT_OPTIONS","b64DecodeUnicode","b64decode","bc","_decodeToken","decoded","getTokenExpirationDate","_getTokenExpirationDate","setUTCSeconds","offsetSeconds","_isTokenExpired","getAuthScheme","authScheme","fromPromiseOrValue","JwtInterceptor","jwtHelper","standardPorts","allowedDomains","disallowedRoutes","throwNoTokenError","skipWhenExpired","isAllowedDomain","requestUrl","hostName","isDisallowedRoute","requestedUrl","parsedRoute","handleInterception","tokenIsExpired","isExpired","setHeaders","innerRequest","asyncToken","parentModule","jwtOptionsProvider","addExtensionMethods","isNodeEnv","_autoloadDatabaseIntegrations","carrier","getMainCarrier","__SENTRY__","packageToIntegrationMapping","mongodb","dynamicRequire","mongoose","mysql","pg","mappedPackages","moduleName","isBrowserBundle","__SENTRY_BROWSER_BUNDLE__","mod","require","cwd","dateTimestampSource","nowSeconds","platformPerformance","getNodePerformance","getBrowserPerformance","timestampSource","_browserPerformanceTimeOriginMode","threshold","performanceNow","dateNow","timeOriginDelta","timeOriginIsReliable","navigationStartDelta","isGlobalObj","globalThis","creator","configureScope","API_VERSION","DEFAULT_BREADCRUMBS","Hub","_version","_stack","isOlderThan","getStackTop","pushScope","getStack","popScope","_lastEventId","_withClient","lastEventId","maxBreadcrumbs","mergedBreadcrumb","finalBreadcrumb","setTags","setExtras","extras","setExtra","setContext","oldHub","makeMain","customSamplingContext","_callExtensionMethod","traceHeaders","endSession","_sendSessionUpdate","closeSession","setSession","makeSession","getUser","currentSession","shouldSendDefaultPii","sendDefaultPii","extensions","registry","getHubFromCarrier","setHubOnCarrier","acs","getGlobalHub","hasHubOnCarrier","_notifyingListeners","_scopeListeners","_eventProcessors","_breadcrumbs","_attachments","_user","_tags","_extra","_contexts","_sdkProcessingMetadata","_propagationContext","generatePropagationContext","newScope","_level","_span","_session","_transactionName","_fingerprint","_requestSession","addScopeListener","_notifyScopeListeners","getRequestSession","setRequestSession","requestSession","z","setFingerprint","setLevel","setTransactionName","getTransaction","updatedScope","maxCrumbs","getLastBreadcrumb","clearBreadcrumbs","addAttachment","clearAttachments","getTraceContext","transactionName","_applyFingerprint","_notifyEventProcessors","getGlobalEventProcessors","setSDKProcessingMetadata","newData","processors","processor","final","timestampInSeconds","sid","sessionToJSON","did","attrs","ip_address","ipAddress","username","public_key","user_segment","errorsInstrumented","errorCallback","sample","samplingContext","setMetadata","tracesSampler","isValidSampleRate","rate","_startTransaction","transactionContext","configInstrumenter","transactionInstrumenter","Transaction","initSpanRecorder","maxSpans","onScope","IdleTransaction","registerErrorInstrumentation","IDLE_TRANSACTION_FINISH_REASONS","IdleTransactionSpanRecorder","SpanRecorder","_pushActivity","_popActivity","transactionSpanId","maxlen","_idleHub","_idleTimeout","_finalTimeout","_heartbeatInterval","_onScope","activities","_heartbeatCounter","_idleTimeoutCanceledPermanently","_beforeFinishCallbacks","_finishReason","_restartIdleTimeout","spanRecorder","spanStartedBeforeTransactionFinish","spanEndedBeforeFinalTimeout","stringifiedSpan","_pingHeartbeat","cancelIdleTimeout","restartOnChildSpanChange","_idleTimeoutID","_beat","heartbeatString","_prevHeartbeatString","_maxlen","Span","childSpan","logMessage","spanMetadata","R","httpStatus","spanStatus","spanStatusfromHttpCode","isSuccess","toContext","updateWithContext","_hub","_trimEnd","incomingDynamicSamplingContext","_frozenDynamicSamplingContext","newName","newMetadata","finishedSpans","measurements","maybeSampleRate","sample_rate","setHub","maybeHub","maybeOptions","enableTracing","_worldwide_js__WEBPACK_IMPORTED_MODULE_0__","__sentry_captured__","inputValue","_dropUndefinedKeys","memoizationMap","memoVal","__self__","DOMException","exports","support","viewClasses","isArrayBufferView","ArrayBuffer","isView","normalizeName","normalizeValue","iteratorFor","consumed","bodyUsed","fileReaderReady","reader","readBlobAsArrayBuffer","readAsArrayBuffer","bufferClone","view","byteLength","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","FormData","_bodyFormData","isDataView","DataView","_bodyArrayBuffer","rejected","arrayBuffer","readBlobAsText","readAsText","readArrayBufferAsText","chars","decode","json","signal","normalizeMethod","upcased","parseHeaders","rawHeaders","preProcessedHeaders","bodyInit","redirectStatuses","redirect","RangeError","aborted","abortXhr","abort","getAllResponseHeaders","responseURL","ontimeout","onabort","polyfill","ponyfill","dijkstra","single_source_shortest_paths","graph","predecessors","costs","cost_of_s_to_u","adjacent_nodes","cost_of_s_to_u_plus_cost_of_e","PriorityQueue","make","empty","cost","extract_shortest_path_from_predecessor_list","find_path","sorter","default_sorter","point","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_RESULT__","dispatchEvent","createEvent","initMouseEvent","HTMLAnchorElement","webkitURL","rel","revokeObjectURL","msSaveOrOpenBlob","autoBom","HTMLElement","safari","onloadend","_objectWithoutPropertiesLoose","excluded","sourceKeys","InputMask","ChangeDetails","inserted","rawInserted","tailShift","aggregate","escapeRegExp","normalizePrepare","prep","objectIncludes","arrA","arrB","dateA","dateB","regexpA","regexpB","ActionDetails","cursorPos","oldSelection","startChangePos","insertedCount","removedCount","removed","tail","removeDirection","ContinuousTailDetails","masked","_appendPlaceholder","beforePos","shiftChar","Masked","_update","DEFAULTS","isInitialized","withValueRefresh","doCommit","unmaskedValue","typedValue","doParse","doFormat","rawInputValue","extractInput","displayValue","isComplete","isFilled","nearestInputPos","totalInputPositions","extractTail","fromPos","appendTail","_appendCharRaw","_appendChar","checkTail","consistentState","doPrepare","consistentTail","appended","doValidate","beforeTailState","tailDetails","_appendEager","_beforeTailState","ci","doSkipInvalid","eager","toPos","_refreshing","rawInput","runIsolated","_isolated","skipInvalid","prepare","validate","commit","deleteCount","tailPos","eagerRemove","oldRawValue","forceDirection","valLength","maskEquals","typedValueEquals","tval","EMPTY_VALUES","maskedClass","MaskedRegExp","MaskedPattern","MaskedDate","MaskedNumber","MaskedDynamic","MaskedFunction","createMask","MaskedClass","_excluded","DEFAULT_INPUT_DEFINITIONS","PatternInputDefinition","isOptional","displayChar","maskOpts","maxPos","boundPos","PatternFixedDefinition","isFixed","isUnmasking","_isRawInput","isResolved","ChunksTailDetails","chunks","tailChunk","lastChunk","extendLast","firstTailChunk","blockIndex","chunk","lastBlockIter","_mapPosToBlock","chunkBlock","_stops","phDetails","_blocks","remainChars","cstate","chunkShiftPos","PatternCursor","_log","_blockStartPos","popState","bindBlock","_pushLeft","_this$block","_pushRight","pushLeftBeforeFilled","pushLeftBeforeInput","pushLeftBeforeRequired","pushRightBeforeFilled","pushRightBeforeInput","pushRightBeforeRequired","_rebuildMask","defs","_maskedBlocks","unmaskingBlock","optionalBlock","_defs$char","_defs$char2","bNames","bName","maskedBlock","isInput","STOP_CHAR","ESCAPE_CHAR","maskedState","bi","_this$_mapPosToBlock","startBlockIndex","blockIter","_flags$_beforeTailSta","_flags$_beforeTailSta2","blockDetails","chunkTail","_forEachBlocksInRange","bFromPos","bToPos","blockChunk","_findStopBefore","stopBefore","si","toBlockIndex","startBlockIter","bDetails","accVal","blockStartPos","fromBlockIter","toBlockIter","isSameBlock","removeDetails","maskedBlocks","indices","gi","InputDefinition","FixedDefinition","MaskedRange","_matchFrom","fromStr","toStr","sameCharsCount","repeat","boundaries","minstr","maxstr","padEnd","nextVal","GET_DEFAULT_BLOCKS","Y","bk","isDateExist","MaskElement","selectionStart","_unsafeSelectionStart","selectionEnd","_unsafeSelectionEnd","_unsafeSelect","bindEvents","unbindEvents","HTMLMaskElement","_this$input$getRootNo","_this$input$getRootNo2","_this$input","getRootNode","setSelectionRange","_toggleEventHandler","EVENTS_MAP","selectionChange","drop","HTMLContenteditableMaskElement","anchorOffset","focusOffset","_listeners","_unmaskedValue","_saveSelection","_onInput","_onChange","_onDrop","_onFocus","_onClick","alignCursor","alignCursorFriendly","_bindEvents","updateValue","_this$masked","updateControl","_unbindEvents","_fireEvent","_cursorChanging","_changingCursorPos","_selection","newUnmaskedValue","newDisplayValue","_fireChangeEvents","restOpts","updateMask","updateOpts","updateCursor","_delayUpdateCursor","_abortUpdateCursor","_inputEvent","hIndex","MaskedEnum","_updateRegExps","allowNegative","scale","radix","_numberRegExp","_mapToRadixRegExp","mapToRadix","_thousandsSeparatorRegExp","thousandsSeparator","_removeThousandsSeparators","_insertThousandsSeparators","prepCh","_separatorsCount","extendOnSeparators","_separatorsCountFromSlice","_adjustRangeWithSeparators","prevBeforeTailSeparatorsCount","appendDetails","beforeTailSeparatorsCount","_findSeparatorAround","separatorAroundFromPos","separatorAroundToPos","valueBeforePos","valueAfterPos","separatorAtLeftPos","separatorAtLeftEndPos","separatorAtRightPos","validnum","formatted","normalizeZeros","_normalizeZeros","padFractionalZeros","_padFractionalZeros","zeros","dropFractional","UNMASKED_RADIX","signed","toLocaleString","maximumFractionDigits","_excluded2","currentMask","compiledMasks","_applyDispatch","currentMaskFlags","prevValueBeforeTail","insertValue","_rawInputValue","tailValue","prevMask","prevMaskState","doDispatch","currentMaskRef","dispatch","currentDetails","_this$currentMask","_this$currentMask2","_this$currentMask3","_this$currentMask4","mi","_mask$mi","oldMask","_this$currentMask5","isCurrent","startInputPos","weight","PIPE_TYPE","MASKED","UNMASKED","TYPED","createPipe","pipeArgs","dbits","BigInteger","fromNumber","fromString","nbi","inBrowser","am","am2","xh","am1","am3","DB","DM","DV","FV","F1","F2","rr","vv","BI_RC","int2char","intAt","nbv","fromInt","nbits","Classic","Montgomery","mp","invDigit","mpl","mph","um","mt2","op_and","op_or","op_xor","op_andnot","lbit","cbit","NullExp","nNop","Barrett","q3","ONE","dlShiftTo","mu","divide","convert","cConvert","compareTo","revert","cRevert","cReduce","divRemTo","mulTo","cMulTo","multiplyTo","sqrTo","cSqrTo","squareTo","montConvert","ZERO","subTo","montRevert","copyTo","montReduce","u0","clamp","drShiftTo","montMulTo","montSqrTo","bnpCopyTo","bnpFromInt","bnpFromString","fromRadix","sh","bnpClamp","bnpDLShiftTo","bnpDRShiftTo","lShiftTo","bnpLShiftTo","cbs","bm","ds","rShiftTo","bnpRShiftTo","bnpSubTo","bnpMultiplyTo","bnpSquareTo","bnpDivRemTo","pm","pt","ts","nsh","ys","y0","yt","d2","qd","bnpInvDigit","isEven","bnpIsEven","bnpExp","bnToString","negate","toRadix","km","bnNegate","bnAbs","bnCompareTo","bitLength","bnBitLength","bnMod","modPowInt","bnModPowInt","nMulTo","nSqrTo","barrettConvert","barrettRevert","barrettReduce","multiplyUpperTo","multiplyLowerTo","dAddOffset","barrettMulTo","barrettSqrTo","rng_state","rng_pool","rng_pptr","lowprimes","lplim","rng_seed_time","rng_seed_int","rng_psize","chunkSize","bnpChunkSize","LN2","bnpToRadix","signum","cs","intValue","bnpFromRadix","dMultiply","bnpFromNumber","testBit","bitwiseTo","shiftLeft","isProbablePrime","nextBytes","bnpBitwiseTo","changeBit","bnpChangeBit","addTo","bnpAddTo","bnpDMultiply","bnpDAddOffset","bnpMultiplyLowerTo","bnpMultiplyUpperTo","modInt","bnpModInt","millerRabin","bnpMillerRabin","n1","subtract","getLowestSetBit","shiftRight","modPow","bnClone","bnIntValue","byteValue","bnByteValue","shortValue","bnShortValue","bnSigNum","toByteArray","bnToByteArray","bnEquals","bnMin","bnMax","bnAnd","bnOr","bnXor","andNot","bnAndNot","bnNot","bnShiftLeft","bnShiftRight","bnGetLowestSetBit","bitCount","bnBitCount","bnTestBit","setBit","bnSetBit","clearBit","bnClearBit","flipBit","bnFlipBit","bnAdd","bnSubtract","multiply","bnMultiply","bnDivide","remainder","bnRemainder","divideAndRemainder","bnDivideAndRemainder","bnModPow","g2","is1","modInverse","bnModInverse","bnPow","gcd","bnGCD","bnIsProbablePrime","bnSquare","rng_get_byte","prng_newstate","Arcfour","SecureRandom","S","rng_get_bytes","ba","ARC4init","ARC4next","extendStatics","__extends","__","Enumerables_1","Comparers_1","EnumerableCollection","toList","toDictionary","keySelector","valueSelector","fromArray","ReverseEnumerable","asEnumerable","other","others","where","ConditionalEnumerable","TransformEnumerable","selectMany","ie","ArrayEnumerable","ConcatEnumerable","Enumerable","elementAt","elementAtOrDefault","except","firstOrDefault","lastOrDefault","single","singleOrDefault","skipWhile","takeWhile","sequenceEqual","comparer","UniqueEnumerable","OrderedEnumerable","createComparer","orderByDescending","sum","RangeEnumerable","union","aggregator","initialValue","average","defaultIfEmpty","ArrayQueryable","asArray","records","strictEqualityComparer","thisArray","otherArray","asReadOnly","newSource","removeAt","pushRange","pushFront","popFront","insert","Stack","peek","keyValuePairs","fromJsObject","getKeys","getKeysFast","keyType","setOrUpdate","combineComparers","ascending","customComparer","Iterators_1","Collections_1","Utils_1","EnumerableBase","otherEnumerable","SkipWhileEnumerable","DefaultIfEmptyEnumerable","reversed","TakeWhileEnumerable","otherAsEnumerable","ZippedEnumerable","Cached","fromSource","isValid","invalidate","_predicate","_shouldContinueChecking","_shouldContinueTaking","_otherSource","_isFirstSourceFinished","_keySelector","_seen","primitive","boolean","complex","isUnique","_start","_count","_currentIndex","isValidIndex","performSkip","_transform","_currentValue","_elements","_comparer","thenBy","thenByDescending","ArrayIterator","_mustUseDefaultValue","_defaultValue","hasNextElement","otherSource","_isOneOfTheSourcesFinished","_index","_isValid","mapping","fallbackHolder","baseAry","cloneArray","wrapImmutable","cloner","baseConvert","util","isLib","cap","curry","fixed","immutable","rearg","defaultHolder","forceCurry","forceFixed","forceRearg","runInContext","helpers","ary","isFunction","isWeakMap","iteratee","toInteger","toPath","aryMethodKeys","aryMethod","wrappers","castArray","mixin","nthArg","indexes","castFixed","skipFixed","methodSpread","flatSpread","otherArgs","castRearg","skipRearg","methodRearg","aryRearg","cloneByPath","createConverter","realName","aliasToReal","remap","oldOptions","newUtil","newFunc","overArg","mutate","createCloner","aryKey","otherName","afterRearg","castCurry","castCap","iterateeRearg","baseArity","iterateeAry","convertLib","realToAlias","eachRight","entriesIn","extendAll","extendAllWith","extendWith","conforms","allPass","always","anyPass","assoc","assocPath","complement","dissoc","dissocPath","dropLast","dropLastWhile","identical","indexBy","invertObj","juxt","omitAll","nAry","pathEq","pathOr","pickAll","propEq","propOr","symmetricDifference","symmetricDifferenceBy","symmetricDifferenceWith","takeLast","takeLastWhile","unapply","unnest","useWith","whereEq","zipObj","dropRightWhile","dropWhile","findFrom","findIndexFrom","findLast","findLastFrom","findLastIndex","findLastIndexFrom","findLastKey","flatMap","flatMapDeep","flatMapDepth","forEachRight","forIn","forInRight","forOwn","forOwnRight","mapKeys","mapValues","partition","reduceRight","takeRightWhile","times","assignInAllWith","assignInWith","assignAllWith","assignWith","differenceBy","differenceWith","getOr","intersectionBy","intersectionWith","isEqualWith","isMatchWith","mergeAllWith","mergeWith","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","setWith","sortedIndexBy","sortedLastIndexBy","unionWith","updateWith","xorBy","xorWith","zipWith","assignAll","assignInAll","defaultsAll","defaultsDeepAll","invokeArgs","invokeArgsMap","mergeAll","partial","partialRight","without","pull","pullAll","pullAt","assignIn","defaultsDeep","unset","curryN","curryRightN","includesFrom","indexOfFrom","lastIndexOfFrom","propertyOf","restFrom","spreadFrom","trimChars","trimCharsEnd","trimCharsStart","flow","flowRight","bindKey","difference","gte","lte","matchesProperty","overArgs","rangeRight","zipObject","zipObjectDeep","FUNC_ERROR_TEXT","HASH_UNDEFINED","PLACEHOLDER","WRAP_PARTIAL_FLAG","WRAP_ARY_FLAG","INFINITY","MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsAstralRange","rsComboRange","rsComboMarksRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsVarRange","rsBreakRange","rsMathOpRange","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsModifier","rsOptVar","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","freeParseInt","freeGlobal","freeSelf","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","types","binding","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","isDate","nodeIsMap","isMap","nodeIsRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","arrayAggregator","setter","arrayEach","arrayEachRight","arrayEvery","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","arrayPush","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","eachFunc","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","baseTimes","baseTrim","trimmedEndIndex","baseUnary","baseValues","cacheHas","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","mapToArray","replaceHolders","setToArray","stringSize","unicodeSize","stringToArray","unicodeToArray","asciiToArray","unescapeHtmlChar","uid","pick","arrayProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","Buffer","allocUnsafe","getPrototype","objectCreate","propertyIsEnumerable","spreadableSymbol","isConcatSpreadable","symIterator","symToStringTag","toStringTag","getNative","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","nativeIsBuffer","isBuffer","nativeIsFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","symbolToString","lodash","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","isObject","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","ListCache","MapCache","SetCache","__data__","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","baseAssignValue","assignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","lower","upper","baseClone","bitmask","isDeep","isFlat","isFull","initCloneArray","getTag","isFunc","cloneBuffer","initCloneObject","copySymbolsIn","getSymbolsIn","baseAssignIn","keysIn","copySymbols","getSymbols","initCloneByTag","Ctor","cloneArrayBuffer","cloneDataView","dataView","byteOffset","cloneTypedArray","cloneRegExp","regexp","cloneSymbol","symbol","stacked","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","wait","baseDifference","isCommon","valuesLength","outer","computed","valuesIndex","templateSettings","escape","evaluate","variable","hashClear","hashDelete","hashGet","hashHas","hashSet","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","mapCacheClear","mapCacheDelete","getMapData","mapCacheGet","mapCacheHas","mapCacheSet","setCacheAdd","setCacheHas","stackClear","stackDelete","stackGet","stackHas","stackSet","LARGE_ARRAY_SIZE","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","isSymbol","baseFilter","baseFlatten","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","baseGet","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","getRawTag","isOwn","unmasked","baseGt","baseHas","baseHasIn","baseIntersection","arrays","othLength","othIndex","caches","seen","baseInvoke","baseIsArguments","baseIsEqual","baseIsEqualDeep","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","equalObjects","isPartial","objProps","objLength","objStacked","othStacked","skipCtor","othValue","compared","objCtor","othCtor","baseIsMatch","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","baseIsNative","isMasked","baseIteratee","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","baseMergeDeep","mergeFunc","safeGet","isTyped","isArrayLikeObject","toPlainObject","baseNth","baseOrderBy","iteratees","orders","getIteratee","baseSortBy","criteria","compareMultiple","objCriteria","othCriteria","ordersLength","compareAscending","basePickBy","baseSet","basePullAll","basePullAt","baseUnset","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","low","high","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","guard","isIterateeCall","iterable","createCaseFirst","trailing","createCompounder","deburr","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","getFuncName","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","countHolders","newHolders","createRecurry","reorder","arrLength","oldArray","createInverter","toIteratee","baseInverter","createMathOperation","createOver","arrayFunc","createPadding","charsLength","toFinite","baseRange","createRelationalOperation","toNumber","wrapFunc","isCurry","setWrapToString","createRound","precision","createToPairs","setToPairs","baseToPairs","createWrap","mergeData","srcBitmask","newBitmask","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrStacked","arrValue","flatten","otherFunc","isKeyable","stubArray","hasPath","hasFunc","isLength","ctorString","isMaskable","stubFalse","shortOut","reference","insertWrapDetails","updateWrapDetails","getWrapDetails","lastCalled","stamp","remaining","rand","memoizeCapped","quote","subString","intersection","mapped","unzip","unzipWith","chain","interceptor","wrapperAt","countBy","invokeMap","sortBy","WRAP_BIND_FLAG","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","remainingWait","timeWaiting","debounced","isInvoking","leadingEdge","resolver","memoized","Cache","transforms","funcsLength","baseIsArrayBuffer","baseIsDate","isInteger","baseIsMap","baseIsRegExp","baseIsSet","baseIsTypedArray","toLength","isBinary","propsIndex","propsLength","invert","invertBy","invoke","baseKeysIn","nativeKeysIn","isProto","omit","CLONE_DEEP_FLAG","basePick","pickBy","toPairs","toPairsIn","upperFirst","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","methodNames","methodOf","over","overEvery","overSome","basePropertyDeep","augend","addend","dividend","divisor","multiplier","multiplicand","minuend","subtrahend","compact","cond","baseConforms","curryRight","dropRight","baseFill","flattenDeep","flattenDepth","flip","fromPairs","functionsIn","initial","omitBy","sampleSize","shuffle","sortedUniq","sortedUniqBy","spread","takeRight","throttle","isArrLike","unary","uniq","uniqBy","uniqWith","valuesIn","cloneDeepWith","cloneWith","conformsTo","defaultTo","inRange","baseInRange","isBoolean","isMatch","isNative","isNull","isSafeInteger","isWeakSet","strictLastIndexOf","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","strLength","floating","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sumBy","isEscaping","isEvaluating","importsKeys","importsValues","reDelimiters","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","toLower","toSafeInteger","toUpper","trimStart","omission","newEnd","unescape","uniqueId","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isUnwrapped","onlyLazy","chainName","lazyClone","lazyReverse","lazyValue","dir","isRight","getView","iterLength","takeCount","iterIndex","wrapperChain","wrapperCommit","wrapperNext","wrapperPlant","wrapperReverse","wrapperValue","wrapperToIterator","define","Z","Cn","X","O","H","Lt","E","W","L","U","Yr","Nr","M","N","cn","P","V","J","Mr","G","Ct","Sn","Wn","Un","$n","Dn","Mn","Nn","Pn","Zn","Kn","Vn","Gn","Hn","Yn","Qn","nt","tt","rt","ft","ct","ht","_t","vt","bt","wt","mt","xt","jt","At","kt","Ot","It","Rt","zt","Et","St","Wt","Ut","Bt","Tt","$t","Dt","Mt","Ft","Nt","Pt","Zt","Kt","Vt","Gt","Ht","Jt","Yt","Qt","lr","ur","hr","_r","vr","gr","yr","dr","br","mr","xr","jr","Ar","Or","Ir","Rr","zr","Er","wr","Sr","Ur","Br","Tr","$r","Dr","Fr","Pr","qr","Zr","Kr","Vr","Qr","Xr","te","ee","ue","oe","ce","ae","he","pe","ve","ye","be","cc","bh","eo","ir","sr","dh","mh","Oh","hl","Ci","tu","Xi","Tu","Gf","Wr","Lr","Cr","$u","Pc","Tl","il","Mc","fc","zi","zs","Iu","Ei","Mu","Rs","qc","Du","Is","Si","Ru","zu","Wu","Eu","Su","kh","jh","di","yi","Gr","pl","Ws","Hr","Jr","Li","ws","uc","ku","no","de","we","Bl","ki","Ki","me","xe","je","ke","Hl","Ie","Gi","jo","Re","Se","We","pi","Rl","vi","Ce","hn","Ue","Di","kl","De","La","Ze","qe","Fa","Me","Mi","Vl","Ne","Pe","Hf","ji","Ni","Bi","Fi","Nc","Ke","Ve","Ji","Jf","gc","Rc","Ge","He","Cu","Lu","Ye","fu","Xe","Ll","nu","yu","Nl","Ql","eu","uu","Ls","Vi","iu","ra","ou","cu","au","lu","su","hu","pu","_u","vu","vs","gu","ks","du","bu","wu","xu","ju","Au","Cs","Ec","Ou","zl","Uu","Gl","Bu","Fu","Nu","Ui","Pu","qu","Ku","Vu","Ra","Gu","gs","Ju","Yu","Os","$i","Qu","C","oi","Hi","Xu","Oe","ni","ri","Fl","ui","Ac","ru","Ic","Ss","Yi","fi","al","kc","Zl","I","qi","Hu","ei","Zu","gl","hi","_o","fs","Ca","xi","Ti","Ai","B","Ri","oc","El","Cl","Wi","ro","Ii","Qi","Jl","ho","bo","Oo","Eo","Xl","Go","Ho","Qo","nf","vf","yf","Rf","zf","Wf","fh","As","Cf","Uf","rc","ic","jl","dc","jc","Ul","D","Oc","Fe","Zi","Gc","fa","Qh","Q","Sa","Ta","Da","Qe","Pa","qa","ol","fl","sl","_l","yl","wl","Al","Ol","Il","Sl","Wl","$l","Dl","Ml","Pl","ql","Kl","Yl","rs","es","us","is","ls","ss","hs","ps","nr","fr","kr","tn","js","Es","Pi","Us","Bs","Ts","$s","Ds","Ms","Fs","Ns","Ps","qs","Zs","Ks","Vs","Gs","Hs","Js","Ys","Qs","Xs","nh","th","rh","eh","uh","ih","oh","ah","lh","ph","_h","vh","gh","yh","wh","ze","Ee","Le","Ah","Be","Te","$e","Ih","Rh","zh","Eh","Sh","Wh","Lh","Ch","Uh","Mh","Bh","Th","$h","Dh","Fh","an","Nh","Je","Ph","qh","Zh","Kh","Vh","Gh","Hh","Jh","Yh","Xh","np","tp","rp","ep","up","cp","ap","lp","sp","hp","pp","_p","vp","gp","If","Nf","uo","io","oo","za","Ea","Sc","Ef","Sf","fo","ao","lo","so","sf","hf","pf","vo","Lf","yo","$c","Dc","mo","Zc","Kc","Ua","Ba","Ma","Vc","Bf","Na","Io","Ro","mf","zo","Tf","jf","Jc","Yc","Af","So","$o","Do","da","$f","Mo","Fo","No","Po","qo","Xo","Df","Ha","Qc","Mf","Zo","Ko","Vo","Xc","na","ta","ea","Ff","Jo","Yo","Pf","Zf","Kf","qf","Vf","Wa","aa","la","sa","af","Wc","Lc","Cc","Uc","Bc","Tc","Fc","gf","wo","ia","Ae","Yf","Qf","Xf","nc","tc","ec","sc","hc","pc","yc","wc","mc","xc","xo","Ao","K","Ya","Qa","Xa","rl","Za","Ka","Va","ko","$a","ha","pa","va","oa","bf","wf","ga","ya","Hc","xf","Of","Wo","Lo","Co","Uo","Bo","ul","wa","Ga","ma","zc","xa","ja","Aa","ka","Oa","Ia","Ja","Oi","tf","ef","ff","uf","monthsShortDot","monthsShort","monthsParse","monthsRegex","defineLocale","monthsShortRegex","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","weekdays","weekdaysShort","weekdaysMin","weekdaysParseExact","longDateFormat","LT","LTS","LL","LLL","LLLL","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","dd","ww","MM","yy","dayOfMonthOrdinalParse","ordinal","week","dow","doy","hookCallback","hooks","hasOwnProp","isObjectEmpty","arrLen","createUTC","locale","strict","createLocalOrUTC","utc","getParsingFlags","_pf","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","parsedParts","isNowValid","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","fun","momentProperties","updateInProgress","copyConfig","momentPropertiesLen","_isAMomentObject","_tzm","_isUTC","_offset","_locale","Moment","updateOffset","isMoment","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","argLen","deprecations","deprecateSimple","mergeConfigs","parentConfig","childConfig","Locale","zeroFill","targetLength","forceSign","absNumber","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","localeData","removeFormattingTokens","formatMoment","expandFormat","makeFormatFunction","mom","invalidDate","replaceLongDateFormatTokens","aliases","addUnitAlias","shorthand","normalizeUnits","normalizeObjectUnits","inputObject","normalizedInput","priorities","addUnitPriority","priority","isLeapYear","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","daysInMonth","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","addRegexToken","strictRegex","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","modMonth","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","handleStrictParse","monthName","llc","_monthsParse","_longMonthsParse","_shortMonthsParse","dayOfMonth","getSetMonth","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","daysInYear","parseTwoDigitYear","getSetYear","createDate","setFullYear","createUTCDate","UTC","setUTCFullYear","firstWeekOffset","fwd","getUTCDay","dayOfYearFromWeeks","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","lowercase","matchMeridiem","_meridiemParse","kFormat","kInput","_isPm","isPM","_meridiem","pos1","pos2","getSetHour","globalLocale","baseConfig","meridiemParse","locales","localeFamilies","commonPrefix","arr1","minl","normalizeLocale","loadLocale","oldLocale","isLocaleNameSane","_abbr","aliasedRequire","getSetGlobalLocale","getLocale","abbr","_config","parentLocale","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","untruncateYear","yearStr","configFromRFC2822","parsedArray","preprocessRFC2822","extractFromRFC2822Strings","monthStr","dayStr","hourStr","minuteStr","secondStr","checkWeekday","weekdayStr","parsedInput","getDay","calculateOffset","obsOffset","militaryOffset","numOffset","hm","setUTCMinutes","configFromArray","expectedWeekday","yearToUse","currentDateArray","nowValue","_useUTC","dayOfYearFromWeekInfo","weekYear","weekdayOverflow","curWeek","GG","createLocal","_week","gg","_dayOfYear","_nextDay","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","isPm","meridiemHour","erasConvertYear","prepareConfig","preparse","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromInput","configFromString","createFromInputFallback","configFromObject","millisecond","isUTC","createFromConfig","prototypeMin","prototypeMax","moments","ordering","Duration","quarters","quarter","isoWeek","milliseconds","isDurationValid","unitHasDecimal","orderLen","_milliseconds","_days","_months","_bubble","isDuration","absRound","utcOffset","offsetFromString","chunkOffset","matcher","cloneWithOffset","diff","local","getDateOffset","isUtc","aspNetRegex","isoRegex","createDuration","diffRes","parseIso","momentsDifference","isBefore","positiveMomentsDifference","inp","isAfter","createAdder","addSubtract","isAdding","createInvalid$1","isMomentInput","isNumberOrStringArray","arrayTest","dataTypeTest","isMomentInputObject","objectTest","propertyTest","propertyLen","monthDiff","wholeMonthDiff","anchor","newLocaleData","defaultFormat","defaultFormatUtc","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","abbrPieces","namePieces","narrowPieces","eras","narrow","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getter","getSetWeekYearHelper","weeksTarget","setWeekAll","dayOfYearData","matchEraName","erasNameRegex","matchEraNarrow","erasNarrowRegex","erasParse","matchEraYearOrdinal","_eraYearOrdinalRegex","eraYearOrdinalParse","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetMillisecond","getSetSecond","parseMs","preParsePostFormat","calendar$1","formats","isCalendarSpec","sod","startOf","calendarFormat","asFloat","that","zoneDelta","endOf","startOfDate","isoWeekday","inputString","postformat","withoutSuffix","humanize","fromNow","toNow","stringGet","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","isValid$2","parsingFlags","stringSet","prioritized","getPrioritizedUnits","unitsObj","prioritizedLen","toObject","keepOffset","inspect","isLocal","for","unix","creationData","eraName","getEraName","since","until","eraNarrow","getEraNarrow","eraAbbr","getEraAbbr","eraYear","getEraYear","getIsLeapYear","getSetWeekYear","getSetISOWeekYear","getSetQuarter","getDaysInMonth","getSetWeek","isoWeeks","getSetISOWeek","getWeeksInYear","weekInfo","weeksInWeekYear","getWeeksInWeekYear","isoWeeksInYear","getISOWeeksInYear","isoWeeksInISOWeekYear","getISOWeeksInISOWeekYear","getSetDayOfWeek","parseWeekday","getSetLocaleDayOfWeek","getSetISODayOfWeek","parseIsoWeekday","getSetDayOfYear","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","setOffsetToUTC","setOffsetToLocal","parseZone","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDST","isDaylightSavingTime","isUtcOffset","zoneAbbr","getZoneAbbr","zoneName","getZoneName","dates","getSetZone","isDSTShifted","isDaylightSavingTimeShifted","_isDSTShifted","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","proto$1","get$1","listMonthsImpl","listWeekdaysImpl","localeSorted","_calendar","_longDateFormat","formatUpper","tok","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","localeEras","_eras","localeErasParse","localeErasConvertYear","localeMonths","isFormat","localeMonthsShort","_monthsShort","localeMonthsParse","_monthsParseExact","localeWeek","firstDayOfYear","localeFirstDayOfYear","localeFirstDayOfWeek","localeWeekdays","_weekdays","localeWeekdaysMin","_weekdaysMin","localeWeekdaysShort","_weekdaysShort","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","localeIsPM","localeMeridiem","isLower","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","substituteTimeAgo","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","proto$2","isValid$1","add$1","subtract$1","valueOf$1","bubble","monthsFromDays","clone$1","get$2","argWithSuffix","argThresholds","withSuffix","relativeTime$1","posNegDuration","toIsoString","setHookCallback","createUnix","listMonths","listWeekdays","createInZone","listMonthsShort","listWeekdaysMin","updateLocale","tmpLocale","listLocales","listWeekdaysShort","relativeTimeRounding","getSetRelativeTimeRounding","roundingFunction","relativeTimeThreshold","getSetRelativeTimeThreshold","getCalendarFormat","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","canPromise","QRCode","CanvasRenderer","SvgRenderer","renderCanvas","renderFunc","canvas","argsNum","isLastArgCb","getContext","render","renderToDataURL","getSymbolSize","posCount","intervals","positions","coords","getRowColCoords","posLength","ALPHA_NUM_CHARS","AlphanumericData","ALPHANUMERIC","getBitsLength","getLength","write","bitBuffer","BitBuffer","bufIndex","putBit","getLengthInBits","bit","BitMatrix","reservedBit","reserved","isReserved","encodeUtf8","ByteData","BYTE","ECLevel","EC_BLOCKS_TABLE","EC_CODEWORDS_TABLE","errorCorrectionLevel","Utils","G15_BCH","getBCHDigit","EXP_TABLE","LOG_TABLE","KanjiData","KANJI","toSJIS","PATTERN000","PATTERN001","PATTERN010","PATTERN011","PATTERN100","PATTERN101","PATTERN110","PATTERN111","getMaskAt","maskPattern","Patterns","points","sameCountCol","sameCountRow","lastCol","lastRow","bitsCol","bitsRow","darkCount","modulesCount","setupFormatFunc","numPatterns","bestPattern","lowerPenalty","applyMask","penalty","getPenaltyN1","getPenaltyN2","getPenaltyN3","getPenaltyN4","VersionCheck","Regex","ccBits","dataStr","testNumeric","NUMERIC","testAlphanumeric","testKanji","NumericData","remainingNum","GF","coeff","mul","divident","degree","poly","AlignmentPattern","FinderPattern","MaskPattern","ECCode","ReedSolomonEncoder","Version","FormatInfo","Segments","setupFormatInfo","matrix","getEncodedBits","createSymbol","estimatedVersion","rawSegments","rawSplit","getBestVersionForData","bestVersion","dataBits","createData","getCharCountIndicator","dataTotalCodewordsBits","getSymbolTotalCodewords","getTotalCodewordsCount","remainingByte","createCodewords","totalCodewords","dataTotalCodewords","ecTotalBlocks","getBlocksCount","blocksInGroup1","totalCodewordsInGroup1","dataCodewordsInGroup1","dataCodewordsInGroup2","ecCount","dcData","ecData","maxDataSize","moduleCount","setupFinderPattern","getPositions","setupTimingPattern","setupAlignmentPattern","setupVersionInfo","setupData","inc","bitIndex","byteIndex","getBestMask","toSJISFunc","setToSJISFunction","Polynomial","genPoly","generateECPolynomial","paddedData","buff","numeric","kanji","byte","TEST_KANJI","TEST_NUMERIC","TEST_ALPHANUMERIC","getStringByteLength","getSegments","getSegmentsFromString","numSegs","alphaNumSegs","byteSegs","kanjiSegs","isKanjiModeEnabled","BYTE_KANJI","s1","s2","getSegmentBitsLength","buildSingleSegment","modesHint","bestMode","getBestModeForData","seg","buildNodes","segs","buildGraph","prevNodeIds","nodeGroup","currentNodeIds","lastCount","prevNodeId","optimizedSegs","mergeSegments","prevSeg","toSJISFunction","CODEWORDS_COUNT","digit","G18_BCH","getReservedBitsCount","getTotalBitsFromDataArray","totalBits","reservedBits","MIXED","usableBits","ecl","getBestVersionForMixedData","currentVersion","getCapacity","getBestVersionForDataLength","qrData","canvasEl","getCanvasElement","getImageWidth","createImageData","qrToImageData","clearCanvas","clearRect","putImageData","toDataURL","rendererOpts","quality","getColorAttrib","attrib","alpha","hex","svgCmd","cmd","qrcodesize","margin","bg","qrToPath","moveBy","newRow","lineLength","svgTag","hex2rgba","hexCode","hexValue","qrSize","getScale","imgData","symbolSize","scaledMargin","palette","posDst","pxColor","_subscribe","hasError","thrownError","_throwIfClosed","Observable","lift","observable","observerOrNext","isSubscriber","Subscriber","isObserver","isSubscription","SafeSubscriber","errorContext","_trySubscribe","sink","promiseCtor","getPromiseCtor","Symbol_observable","pipeFromArray","_bufferSize","_windowTime","_timestampProvider","dateTimestampProvider","_buffer","_infiniteTimeWindow","isStopped","_trimBuffer","_innerSubscribe","_checkFinalizedStatuses","adjustedBufferSize","ObjectUnsubscribedError","createErrorClass","currentObservers","observers","AnonymousSubject","observed","EMPTY_SUBSCRIPTION","arrRemove","COMPLETE_NOTIFICATION","createNotification","kind","EMPTY_OBSERVER","handleStoppedNotification","nextNotification","_next","errorNotification","_error","_complete","_bind","ConsumerObserver","partialObserver","handleUnhandledError","useDeprecatedNextContext","useDeprecatedSynchronousErrorHandling","captureError","reportUnhandledError","notification","onStoppedNotification","timeoutProvider","defaultErrorHandler","UnsubscriptionError","initialTeardown","_parentage","_finalizers","initialFinalizer","finalizer","execFinalizer","teardown","_hasParent","_addParent","_removeParent","onUnhandledError","ConnectableObservable","subjectFactory","_subject","_refCount","_connection","hasLift","getSubject","_teardown","higherOrderRefCount","popScheduler","resultSelector","popResultSelector","observables","argsArgArrayOrObject","combineLatestInit","valueTransform","maybeSchedule","remainingFirstValues","hasFirstValue","createObject","executeSchedule","concatAll","observableFactory","remainingCompletions","remainingEmissions","sourceIndex","nodeEventEmitterMethods","eventTargetMethods","jqueryMethods","isEventTarget","isNodeStyleEventEmitter","addListener","removeListener","toCommonHandlerRegistry","isJQueryStyleEventEmitter","subTarget","isInteropObservable","fromInteropObservable","obs","fromArrayLike","fromPromise","isAsyncIterable","fromAsyncIterable","isIterable","fromIterable","isReadableStreamLike","fromReadableStreamLike","readableStream","readableStreamLikeToAsyncGenerator","createInvalidObservableTypeError","asyncIterable","asyncIterable_1","asyncIterable_1_1","e_1","__awaiter","__asyncValues","e_1_1","concurrent","popNumber","errorOrErrorFactory","errorFactory","timer","dueTime","intervalOrScheduler","intervalDuration","isScheduler","due","argsOrArgArray","onComplete","onFinalize","OperatorSubscriber","shouldUnsubscribe","auditTime","endDuration","cleanupDuration","handledResult","innerSub","syncUnsub","concatMap","activeTask","lastTime","emitWhenIdle","targetTime","delayWhen","delayDurationSelector","subscriptionDelay","ignoreElements","defaultCompare","previousKey","currentKey","hasDefaultValue","throwIfEmpty","EmptyError","mergeInternals","onBeforeNext","innerSubScheduler","additionalFinalizer","checkComplete","outerNext","doInnerSub","innerComplete","bufferedValue","hasPrev","refCounter","sharedConnection","conn","hasSeed","emitOnNext","emitBeforeComplete","hasState","connector","resetOnError","resetOnComplete","resetOnRefCountZero","wrapperSource","resetConnection","hasCompleted","hasErrored","cancelReset","resetAndUnsubscribe","dest","handleReset","onSubscriber","configOrBufferSize","windowTime","innerSubscriber","innerIndex","outerIndex","notifier","inclusive","tapObserver","isUnsub","defaultErrorFactory","observeOn","subscribeOn","scheduleAsyncIterable","asyncIterator","scheduleObservable","scheduleArray","schedulePromise","scheduleIterable","Symbol_iterator","scheduleReadableStreamLike","Action","intervalProvider","recycleAsyncId","_scheduler","errorValue","Scheduler","schedulerActionCtor","SchedulerAction","_active","animationFrameProvider","cancelAnimationFrame","animationFrameScheduler","AnimationFrameScheduler","flushId","_scheduled","AnimationFrameAction","resolved","nextHandle","activeHandles","findAndClearHandle","Immediate","setImmediate","clearImmediate","immediateProvider","AsapScheduler","AsapAction","getSymbolIterator","isPOJO","createImpl","ctorFunc","isRoot","errorThrown","parentSubscription","scheduleSubscription","isObservable","__asyncGenerator","getReader","__await","releaseLock","liftedSource","callOrApply","fns","not_string","not_bool","not_type","not_primitive","numeric_arg","not_json","modulo","key_access","index_access","sprintf_format","parse_tree","argv","pad_character","pad_length","is_positive","tree_length","param_no","toExponential","toPrecision","pad_char","sprintf_parse","fmt","sprintf_cache","_fmt","arg_names","SyntaxError","field_list","replacement_field","field_match","vsprintf","webpackContext","webpackContextResolve","DIR_DOCUMENT","DIR_DOCUMENT_FACTORY","RTL_LOCALE_PATTERN","Directionality","_document","_resolveDirectionality","rawValue","BidiModule","coerceBooleanProperty","coerceNumberProperty","_isNumberValue","elementOrRef","isDataSource","ArrayDataSource","_RecycleViewRepeaterStrategy","viewCacheSize","_viewCache","applyChanges","viewContainerRef","itemContextFactory","itemValueResolver","itemViewChanged","forEachOperation","adjustedPreviousIndex","previousIndex","_insertView","viewArgsFactory","_detachAndCacheView","_moveView","cachedView","_insertViewFromCache","viewArgs","createEmbeddedView","detachedView","_maybeCacheView","move","SelectionModel","_selected","_multiple","initiallySelectedValues","_emitChanges","_deselectedToEmit","_selectedToEmit","_markSelected","_verifyValueAssignment","_hasQueuedChanges","_emitChangeEvent","deselect","_unmarkSelected","setSelection","oldValues","newSelectedSet","flushEvent","_unmarkAll","_getConcreteValue","isMultipleSelection","added","selectedValue","_VIEW_REPEATER_STRATEGY","MutationObserverFactory","ContentObserver","_mutationObserverFactory","_observedElements","_cleanupObserver","_observeElement","_unobserveElement","stream","mutations","characterData","CdkObserveContent","_unsubscribe","_debounce","_contentObserver","_currentSubscription","ɵdir","hasV8BreakIterator","v8BreakIterator","supportsPassiveEvents","rtlScrollAxisType","scrollBehaviorSupported","Platform","_platformId","isPlatformBrowser","EDGE","TRIDENT","BLINK","CSS","WEBKIT","IOS","FIREFOX","ANDROID","SAFARI","PLATFORM_ID","supportsPassiveEventListeners","supportsScrollBehavior","scrollToFunction","scrollTo","getRtlScrollAxisType","scrollContainer","containerStyle","visibility","pointerEvents","contentStyle","scrollLeft","VIRTUAL_SCROLL_STRATEGY","FixedSizeVirtualScrollStrategy","itemSize","_scrolledIndexChange","_viewport","_itemSize","_minBufferPx","_maxBufferPx","attach","viewport","_updateTotalContentSize","_updateRenderedRange","updateItemAndBufferSize","onContentScrolled","onDataLengthChanged","onContentRendered","onRenderedOffsetChanged","scrollToOffset","setTotalContentSize","getDataLength","renderedRange","getRenderedRange","newRange","viewportSize","getViewportSize","dataLength","scrollOffset","measureScrollOffset","firstVisibleIndex","maxVisibleItems","newVisibleIndex","startBuffer","expandStart","endBuffer","expandEnd","setRenderedRange","setRenderedContentOffset","_fixedSizeVirtualScrollStrategyFactory","fixedSizeDir","_scrollStrategy","CdkFixedSizeVirtualScroll","ScrollDispatcher","_scrolled","_globalSubscription","_scrolledCount","scrollContainers","scrollable","elementScrolled","scrollableReference","auditTimeInMs","_addGlobalListener","_removeGlobalListener","ancestorScrolled","ancestors","getAncestorScrollContainers","scrollingContainers","_subscription","_scrollableContainsElement","_getWindow","scrollableElement","getElementRef","CdkScrollable","scrollDispatcher","_elementScrolled","isRtl","_applyScrollToOptions","LEFT","ViewportRuler","_change","_changeListener","_viewportSize","_updateViewportSize","getViewportRect","scrollPosition","getViewportScrollPosition","documentRect","scrollY","scrollX","throttleTime","VIRTUAL_SCROLLABLE","CdkVirtualScrollable","measureViewportSize","orientation","viewportEl","SCROLL_SCHEDULER","_orientation","_calculateSpacerSize","appendOnly","_appendOnly","_changeDetectorRef","viewportRuler","_detachedSubject","_renderedRangeSubject","renderedRangeStream","_totalContentSize","_totalContentWidth","_totalContentHeight","_renderedRange","_dataLength","_renderedContentOffset","_renderedContentOffsetNeedsRewrite","_isChangeDetectionPending","_runAfterChangeDetection","_viewportChanges","checkViewportSize","_measureViewportSize","_markChangeDetectionNeeded","forOf","_forOf","dataStream","newLength","_doChangeDetection","measureBoundingClientRectWithScrollOffset","rangesEqual","r1","getOffsetToRenderedContentStart","isHorizontal","axis","_renderedContentTransform","measureRenderedContentSize","_from","measureViewportOffset","fromRect","scrollerClientRect","contentEl","_contentWrapper","offsetHeight","measureRangeSize","runAfter","runAfterChangeDetection","ɵcmp","virtualScrollable","Optional","getOffset","CdkVirtualForOf","cdkVirtualForOf","_cdkVirtualForOf","_dataSourceChanges","cdkVirtualForTrackBy","_cdkVirtualForTrackBy","_needsUpdate","cdkVirtualForTemplate","_template","cdkVirtualForTemplateCacheSize","_viewRepeater","_viewContainerRef","_differs","cur","_changeDataSource","_differ","_onRenderedDataChange","renderedStartIndex","rangeLen","firstNode","lastNode","rootNodes","ngDoCheck","_renderedItems","_applyChanges","_updateContext","oldDs","newDs","_updateComputedContextProperties","_adjustedPreviousIndex","_getEmbeddedViewArgs","forEachIdentityChange","even","odd","CdkScrollableModule","BaseTreeControl","dataNode","_trackByValue","toggleDescendants","collapseDescendants","expandDescendants","toBeProcessed","CDK_TREE_NODE_OUTLET_NODE","CdkTreeNodeOutlet","viewContainer","_node","CdkTreeNodeOutletContext","CdkTreeNodeDef","when","CdkTree","_dataSource","_switchDataSource","_levels","MAX_VALUE","_dataDiffer","_nodeOutlet","_dataSubscription","defaultNodeDefs","_nodeDefs","_defaultNodeDef","_observeRenderChanges","renderNodeChanges","dataDiffer","parentData","_getNodeDef","nodeData","CdkTreeNode","mostRecentTreeNode","dependencies","_role","_setRoleFromData","_dataChanges","_tree","_parentNodeAriaLevel","getParentNodeAriaLevel","nodeElement","isNodeElement","CdkNestedTreeNode","updateChildrenNodes","nodeOutlet","_clear","outlet","_getNodeOutlet","_children","outlets","tabIndex","cssUnitPattern","CdkTreeNodePadding","_setLevelInput","indent","_indent","_setIndentInput","_treeNode","_dir","indentUnits","_setPadding","_paddingIndent","nodeLevel","forceChange","padding","_currentPadding","paddingProp","resetProp","CdkTreeNodeToggle","recursive","_recursive","_toggle","_DOM","getDOM","setRootDomAdapter","adapter","DomAdapter","PlatformLocation","historyGo","relativePosition","BrowserPlatformLocation","LOCATION_INITIALIZED","_doc","_location","_history","getBaseHrefFromDOM","getBaseHref","onPopState","getGlobalEventTarget","onHashChange","newPath","forward","getState","joinWithSlash","slashes","stripTrailingSlash","pathEndIdx","normalizeQueryParams","LocationStrategy","PathLocationStrategy","APP_BASE_HREF","_platformLocation","_removeListenerFns","_baseHref","prepareExternalUrl","includeHash","externalUrl","HashLocationStrategy","locationStrategy","_urlChangeListeners","_urlChangeSubscription","_locationStrategy","baseHref","_basePath","_stripOrigin","_stripIndexHtml","isCurrentPathEqualTo","_stripBasePath","basePath","strippedUrl","_notifyUrlChangeListeners","onUrlChange","fnIndex","onThrow","onReturn","createLocation","ɵɵinject","CURRENCIES_EN","ADP","AFN","ALL","AMD","AOA","ARS","AUD","AZN","BAM","BBD","BDT","BHD","BIF","BMD","BND","BOB","BRL","BSD","BWP","BYN","BYR","BZD","CAD","CHF","CLF","CLP","CNY","COP","CRC","CUC","CUP","CZK","DJF","DKK","DOP","EGP","ESP","EUR","FJD","FKP","GBP","GEL","GHS","GIP","GNF","GTQ","GYD","HKD","HNL","HRK","HUF","IDR","ILS","INR","IQD","IRR","ISK","ITL","JMD","JOD","JPY","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LTL","LUF","LVL","LYD","MGA","MGF","MMK","MNT","MRO","MUR","MXN","MYR","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PHP","PKR","PLN","PYG","RON","RSD","RUB","RWF","SBD","SEK","SGD","SHP","SLE","SLL","SOS","SRD","SSP","STD","STN","SYP","THB","TMM","TND","TOP","TRL","TRY","TTD","TWD","TZS","UAH","UGX","USD","UYI","UYU","UYW","UZS","VEF","VND","VUV","XAF","XCD","XOF","XPF","XXX","YER","ZAR","ZMK","ZMW","ZWD","NumberFormatStyle","Decimal","Percent","Currency","Scientific","Plural","Zero","One","Two","Few","Many","FormStyle","Format","Standalone","TranslationWidth","Narrow","Abbreviated","Wide","Short","FormatWidth","Medium","Long","Full","NumberSymbol","Group","PercentSign","PlusSign","MinusSign","Exponential","SuperscriptingExponent","PerMille","TimeSeparator","CurrencyDecimal","CurrencyGroup","getLocaleDayPeriods","formStyle","ɵfindLocaleData","amPm","getLastDefinedValue","ɵLocaleDataIndex","DayPeriodsFormat","DayPeriodsStandalone","getLocaleDayNames","DaysFormat","DaysStandalone","getLocaleMonthNames","MonthsFormat","MonthsStandalone","getLocaleDateFormat","getLocaleTimeFormat","TimeFormat","getLocaleDateTimeFormat","dateTimeFormatData","DateTimeFormat","getLocaleNumberSymbol","NumberSymbols","getLocalePluralCase","ɵgetLocalePluralCase","checkFullData","ExtraData","LocaleId","extractTime","ISO8601_DATE_REGEX","NAMED_FORMATS","DATE_FORMATS_SPLIT","ZoneWidth","ShortGMT","Extended","DateType","FullYear","Hours","Minutes","Seconds","FractionalSeconds","Day","TranslationType","DayPeriods","Eras","timezone","parsedNb","isoStringToDate","tzHour","tzMin","dateSetter","timeSetter","setUTCHours","getNamedFormat","part","dateTimezoneOffset","timezoneToOffset","convertTimezoneToLocal","reverseValue","addDateMinutes","setMinutes","getMinutes","dateFormatter","getDateFormatter","DATE_FORMATS","dateStrGetter","dateGetter","weekNumberingYearGetter","weekGetter","timeZoneGetter","newDate","localeId","getLocaleId","formatValue","formatDateTime","longTime","longDate","fullTime","fullDate","opt_values","padNumber","digits","minusSign","negWrap","neg","strNum","getDatePart","getHours","getSeconds","getMilliseconds","formatFractionalSeconds","localeMinus","extended","getDateTranslation","currentHours","currentMinutes","rules","getLocaleExtraDayPeriodRules","rule","dayPeriods","getLocaleExtraDayPeriods","afterFrom","beforeTo","getLocaleEraNames","erasData","JANUARY","THURSDAY","getThursdayThisWeek","datetime","monthBased","nbDaysBefore1stDayOfMonth","thisThurs","firstThurs","getFirstThursdayOfYear","fallback","requestedTimezoneOffset","NUMBER_FORMAT_REGEXP","MAX_DIGITS","DECIMAL_SEP","ZERO_CHAR","PATTERN_SEP","GROUP_SEP","DIGIT_CHAR","formatCurrency","currency","currencyCode","digitsInfo","parseNumberFormat","minInt","minFrac","maxFrac","posPre","posSuf","negPre","negSuf","gSize","lgSize","patternParts","positive","negative","positiveParts","integer","fraction","trunkLen","getLocaleNumberFormat","NumberFormats","getNumberOfCurrencyDigits","formatNumberToLocaleString","groupSymbol","decimalSymbol","isPercent","formattedText","isZero","parsedNumber","parseNumber","integerLen","numStr","exponent","toPercent","fractionLen","minFraction","maxFraction","minIntPart","minFractionPart","maxFractionPart","parseIntAutoRadix","roundNumber","fractionSize","roundAt","dropTrailingZeros","carry","NgLocalization","NgLocaleLocalization","getPluralCategory","extraData","ɵregisterLocaleData","parseCookieValue","cookieStr","eqIndex","cookieName","cookieValue","WS_REGEXP","EMPTY_ARRAY","NgClass","_iterableDiffers","_keyValueDiffers","_ngEl","initialClasses","ngClass","rawClass","_updateState","_applyStateDiff","nextEnabled","stateEntry","_toggleClass","NgForOfContext","ngForOf","NgForOf","_ngForOf","_ngForOfDirty","ngForTrackBy","_trackByFn","_viewContainer","ngForTemplate","applyViewChange","ilen","ngTemplateContextGuard","_context","NgIfContext","_thenTemplateRef","_elseTemplateRef","_thenViewRef","_elseViewRef","ngIf","_updateView","ngIfThen","assertTemplate","ngIfElse","ɵstringify","SwitchView","_templateRef","_created","enforceState","created","NgSwitch","_defaultViews","_defaultUsed","_caseCount","_lastCaseCheckIndex","_lastCasesMatched","ngSwitch","_ngSwitch","_updateDefaultCases","_addCase","_addDefault","_matchCase","useDefault","NgSwitchCase","_view","ngSwitchCase","NgSwitchDefault","NgStyle","_ngStyle","ngStyle","_setStyle","nameAndUnit","RendererStyleFlags2","DashCase","forEachRemovedItem","forEachAddedItem","forEachChangedItem","NgTemplateOutlet","_viewRef","ngTemplateOutletContext","ngTemplateOutlet","ngTemplateOutletInjector","invalidPipeArgumentError","SubscribableStrategy","createSubscription","updateLatestValue","untracked","dispose","PromiseStrategy","_promiseStrategy","_subscribableStrategy","ref","_latestValue","_obj","_strategy","_dispose","_selectStrategy","_updateLatestValue","ɵisPromise","ɵisSubscribable","ɵpipe","unicodeWordMatch","TitleCasePipe","txt","DATE_PIPE_DEFAULT_TIMEZONE","DATE_PIPE_DEFAULT_OPTIONS","defaultTimezone","_INTERPOLATION_REGEXP","I18nPluralPipe","_localization","pluralMap","cases","ngLocalization","JsonPipe","_defaultCurrencyCode","isValue","getCurrencySymbol","getLocaleCurrencies","Currencies","symbolNarrow","strToNumber","DEFAULT_CURRENCY_CODE","SlicePipe","supports","PLATFORM_BROWSER_ID","PLATFORM_SERVER_ID","platformId","isPlatformServer","ViewportScroller","ɵɵdefineInjectable","BrowserViewportScroller","setOffset","getScrollPosition","supportsScrolling","pageXOffset","scrollToPosition","scrollToAnchor","elSelected","findAnchorFromDocument","documentResult","getElementById","getElementsByName","createTreeWalker","attachShadow","treeWalker","NodeFilter","SHOW_ELEMENT","currentNode","nextNode","scrollToElement","setHistoryScrollRestoration","scrollRestoration","XhrFactory","HttpHandler","HttpBackend","normalizedNames","lazyUpdate","lazyInit","maybeSetNormalizedName","setHeaderEntries","getAll","lcName","copyFrom","applyUpdate","toDelete","existing","headerValues","HttpUrlEncodingCodec","encodeKey","standardEncoding","encodeValue","decodeKey","decodeValue","STANDARD_ENCODING_REGEX","STANDARD_ENCODING_REPLACEMENTS","valueToString","updates","cloneFrom","encoder","fromObject","paramParser","rawParams","codec","eqIdx","appendAll","eKey","isBlob","isFormData","HttpRequest","third","fourth","reportProgress","mightHaveBody","urlWithParams","qIdx","serializeBody","isUrlSearchParams","detectContentTypeHeader","setParams","HttpEventType","Sent","UploadProgress","ResponseHeader","DownloadProgress","User","HttpResponseBase","defaultStatus","defaultStatusText","HttpHeaderResponse","addBody","events$","res$","jsonp","callbackParam","interceptorChainEndFn","finalHandlerFn","adaptLegacyInterceptorToChain","chainTailFn","initialRequest","downstreamRequest","HTTP_INTERCEPTOR_FNS","HTTP_ROOT_INTERCEPTOR_FNS","legacyInterceptorFnFactory","pendingTasks","ɵInitialRenderPendingTasks","taskId","HttpInterceptorHandler","dedupedInterceptorFns","nextSequencedFn","interceptorFn","chainedInterceptorFn","XSSI_PREFIX","HttpXhrBackend","xhrFactory","ɵloadImpl","detectedType","reqBody","headerResponse","partialFromXhr","getResponseUrl","onLoad","originalBody","sentHeaders","onDownProgress","progressEvent","lengthComputable","partialText","onUpProgress","progress","upload","DONE","XSRF_ENABLED","XSRF_COOKIE_NAME","XSRF_HEADER_NAME","HttpXsrfTokenExtractor","HttpXsrfCookieExtractor","lastCookieString","lastToken","parseCount","cookieString","ɵparseCookieValue","xsrfInterceptorFn","lcUrl","HttpFeatureKind","Interceptors","LegacyInterceptors","CustomXsrfConfiguration","NoXsrfProtection","JsonpSupport","RequestsMadeViaParent","Fetch","makeHttpFeature","ɵkind","ɵproviders","provideHttpClient","feature","makeEnvironmentProviders","LEGACY_INTERCEPTOR_FN","getClosureSafeProperty","objWithPropertyToExtract","fillProperties","overriddenName","newLineIndex","concatStringsWithSpace","__forward_ref__","forwardRefFn","resolveForwardRef","isForwardRef","isEnvironmentProviders","XSS_SECURITY_URL","RuntimeError","formatRuntimeError","renderStringify","throwProviderNotFoundError","injectorName","expected","comparison","ɵɵdefineInjector","getInjectableDef","getOwnDefinition","NG_PROV_DEF","NG_INJECTABLE_DEF","isInjectable","getInjectorDef","NG_INJ_DEF","NG_INJECTOR_DEF","ngInjectableDef","ngInjectorDef","InjectFlags","Default","Host","Self","SkipSelf","_injectImplementation","setInjectImplementation","impl","injectRootLimpMode","notFoundValue","injectableDef","_global","_desc","ngMetadataName","__NG_ELEMENT_ID__","THROW_IF_NOT_FOUND","DI_DECORATOR_FLAG","NG_TEMP_TOKEN_PATH","NEW_LINE","SOURCE","_currentInjector","setCurrentInjector","former","injectInjectorOnly","getInjectImplementation","convertToBitFlags","skipSelf","injectArgs","meta","getInjectFlag","attachInjectFlag","decorator","noSideEffects","ChangeDetectionStrategy","OnPush","ViewEncapsulation$1","Emulated","ShadowDom","EMPTY_OBJ","NG_COMP_DEF","NG_DIR_DEF","NG_PIPE_DEF","NG_MOD_DEF","NG_FACTORY_DEF","NG_ELEMENT_ID","NG_ENV_ID","__NG_ENV_ID__","classIndexOf","classToSearch","startingIndex","foundIndex","setUpAttributes","namespaceURI","attrName","attrVal","isAnimationProp","isNameOnlyAttributeMarker","marker","mergeHostAttrs","srcMarker","mergeHostAttribute","markerInsertPosition","dstValue","NG_TEMPLATE_SELECTOR","isCssClassMatching","cssClassToMatch","isProjectionMode","isImplicitAttrsSection","isInlineTemplate","tNode","hasTagAndTypeMatch","currentSelector","isNodeMatchingSelector","nodeAttrs","nameOnlyMarkerIdx","getNameOnlyMarkerIndex","skipToNextSelector","isPositive","selectorAttrValue","attrIndexInNode","findAttrIndexInNode","nodeAttrValue","compareAgainstClassName","bindingsMode","maybeAttrName","matchTemplateAttribute","isNodeMatchingSelectorList","isSelectorInSelectorList","selectorListLoop","currentSelectorInList","maybeWrapInNotSelector","isNegativeMode","stringifyCSSSelector","currentChunk","valueOrMarker","attrValue","ɵɵdefineComponent","componentDefinition","baseDef","getNgDirectiveDef","onPush","directiveDefs","pipeDefs","getStandaloneInjector","signals","schemas","tView","initFeatures","extractDefListOrFactory","getComponentId","componentDef","hashSelectors","imul","ɵɵsetComponentScope","directives","pipes","extractDirectiveDef","getComponentDef","getDirectiveDef","nonNull","ɵɵdefineNgModule","declarations","transitiveCompileScopes","invertObject","newLookup","minifiedKey","publicName","declaredName","ɵɵdefineDirective","directiveDefinition","ɵɵdefinePipe","pipeDef","getPipeDef$1","isStandalone","getNgModuleDef","throwNotFound","ngModuleDef","declaredInputs","providersResolver","inputTransforms","inputConfig","setInput","findHostDirectiveDefs","hostDirectives","definition","defExtractor","dep","HOST","TVIEW","FLAGS","PARENT","NEXT","DESCENDANT_VIEWS_TO_REFRESH","T_HOST","CLEANUP","CONTEXT","INJECTOR$1","ENVIRONMENT","RENDERER","CHILD_HEAD","CHILD_TAIL","DECLARATION_VIEW","DECLARATION_COMPONENT_VIEW","DECLARATION_LCONTAINER","PREORDER_HOOK_FLAGS","QUERIES","ID","EMBEDDED_VIEW_INJECTOR","ON_DESTROY_HOOKS","HYDRATION","REACTIVE_TEMPLATE_CONSUMER","REACTIVE_HOST_BINDING_CONSUMER","HEADER_OFFSET","TYPE","HAS_TRANSPLANTED_VIEWS","NATIVE","MOVED_VIEWS","CONTAINER_HEADER_OFFSET","isLView","isLContainer","isContentQueryHost","isComponentHost","componentOffset","isDirectiveHost","isComponentDef","isRootView","getFactoryDef","activeConsumer","inNotificationPhase","setActiveConsumer","consumer","REACTIVE_NODE","producerNode","producerLastReadVersion","producerIndexOfThis","nextProducerIndex","liveConsumerNode","liveConsumerIndexOfThis","consumerAllowSignalWrites","consumerIsAlwaysLive","producerMustRecompute","producerRecomputeValue","consumerMarkedDirty","producerUpdateValueVersion","consumerIsLive","consumerPollProducersForChange","consumerMarkDirty","producerNotifyConsumers","consumerBeforeComputation","consumerAfterComputation","prevConsumer","producerRemoveLiveConsumerAtIndex","assertConsumerNode","producer","seenVersion","consumerDestroy","assertProducerNode","lastIdx","idxProducer","throwInvalidWriteToSignalErrorFn","nonReactiveReadsFn","NOOP_CLEANUP_FN","WATCH_NODE","hasRun","cleanupFn","SimpleChange","isFirstChange","ɵɵNgOnChangesFeature","NgOnChangesFeatureImpl","ngOnChangesSetInput","rememberChangeHistoryAndInvokeOnChangesHook","simpleChangesStore","getSimpleChangesStore","privateName","setSimpleChangesStore","store","SIMPLE_CHANGES_STORE","previousChange","ngInherit","profiler","hookOrListener","SVG_NAMESPACE","unwrapRNode","getNativeByIndex","lView","getNativeByTNode","getTNode","getComponentLViewByIndex","slotValue","getConstant","resetPreOrderHookFlags","markViewForRefresh","updateViewsToRefresh","clearViewRefreshFlag","viewOrContainer","instructionState","lFrame","createLFrame","bindingsEnabled","skipHydrationRootTNode","getBindingsEnabled","isInSkipHydrationBlock$1","getLView","getTView","ɵɵrestoreView","viewToRestore","contextLView","ɵɵresetView","getCurrentTNode","currentTNode","getCurrentTNodePlaceholderOk","getCurrentParentTNode","setCurrentTNode","isCurrentTNodeParent","setCurrentTNodeAsNotParent","getBindingRoot","bindingRootIndex","bindingStartIndex","getBindingIndex","bindingIndex","nextBindingIndex","incrementBindingIndex","setInI18nBlock","isInI18nBlock","inI18n","setBindingRootForHostBindings","currentDirectiveIndex","setCurrentDirectiveIndex","getCurrentQueryIndex","setCurrentQueryIndex","getDeclarationTNode","declTNode","enterDI","parentTNode","parentLView","allocLFrame","enterView","newView","newLFrame","currentLFrame","childLFrame","selectedIndex","elementDepthCount","currentNamespace","leaveViewLight","oldLFrame","leaveDI","leaveView","getSelectedIndex","setSelectedIndex","getSelectedTNode","ɵɵnamespaceSVG","ɵɵnamespaceHTML","namespaceHTMLInternal","_wasLastNodeCreated","wasLastNodeCreated","lastNodeWasCreated","registerPostOrderHooks","directiveStart","directiveEnd","lifecycleHooks","contentHooks","contentCheckHooks","viewHooks","viewCheckHooks","destroyHooks","executeCheckHooks","callHooks","executeInitAndCheckHooks","initPhase","incrementInitPhaseFlags","currentView","currentNodeIndex","nodeIndexLimit","lastNodeIndexFound","callHook","callHookInternal","directive","isInitHook","NO_PARENT_INJECTOR","NodeInjectorFactory","isViewProvider","injectImplementation","resolving","canSeeViewProviders","injectImpl","hasParentInjector","parentLocation","getParentInjectorIndex","getParentInjectorView","startView","viewOffset","getParentInjectorViewOffset","parentView","includeViewProviders","setIncludeViewProviders","BLOOM_MASK","BLOOM_BUCKET_BITS","nextNgElementId","NOT_FOUND","getOrCreateNodeInjectorForNode","existingInjectorIndex","getInjectorIndex","firstCreatePass","injectorIndex","insertBloom","blueprint","parentLoc","getParentInjectorLocation","parentIndex","declarationViewOffset","lViewCursor","getTNodeFromLView","diPublicInInjector","bloomAdd","bloomHash","notFoundValueOrThrow","lookupTokenUsingModuleInjector","moduleInjector","previousInjectImplementation","getOrCreateInjectable","embeddedInjectorValue","lookupTokenUsingEmbeddedInjector","currentLView","nodeInjectorValue","lookupTokenUsingNodeInjector","embeddedViewInjector","embeddedViewInjectorValue","bloomHashBitOrFactory","tokenId","createNodeInjector","previousTView","hostTElementNode","shouldSearchParent","bloomHasToken","searchTokensOnInjector","currentTView","injectableIdx","locateDirectiveOrProvider","getNodeInjectable","canAccessViewProviders","isHostSpecialCase","nodeProviderIndexes","providerIndexes","tInjectables","injectablesStart","directivesStart","cptViewProvidersCount","endIndex","providerTokenOrDef","dirDef","tData","isFactory","throwCyclicDependencyError","depPath","stringifyForError","previousIncludeViewProviders","registerPreOrderHooks","directiveIndex","directiveDef","wrappedOnChanges","preOrderHooks","preOrderCheckHooks","injectorView","isFirstHostTNode","NodeInjector","_tNode","_lView","ɵɵgetInheritedFactory","ownConstructor","ownFactory","getFactoryOf","objectPrototype","tViewType","ɵɵinjectAttribute","attrNameToInject","injectAttributeImpl","attrsLength","PARAMETERS","makeParamDecorator","parentClass","metaCtor","makeMetadataCtor","propName","ParamDecoratorFactory","annotationInstance","ParamDecorator","annotation","unusedKey","annotationCls","deepForEach","addToArray","removeFromArray","newArray","keyValueArraySet","keyValueArray","keyValueArrayIndexOf","arrayInsert2","value1","value2","keyValueArrayGet","_arrayIndexOfSorted","middle","hasInSkipHydrationBlockFlag","Important","COMMENT_DISALLOWED","COMMENT_DELIMITER","COMMENT_DELIMITER_ESCAPED","TRACKED_LVIEWS","uniqueIdCounter","getLViewById","LContext","lViewId","getLContext","mpValue","readPatchedData","isComponentInstance","findViaComponent","componentIndices","elementComponentIndex","isDirectiveInstance","findViaDirective","directiveInstance","directiveIndexEnd","traverseNextElement","getDirectivesAtNodeIndex","findViaNativeElement","existingCtx","createLContext","attachPatchData","rElement","MONKEY_PATCH_KEY_NAME","registerLView","_icuContainerIterate","icuContainerIterate","tIcuContainerNode","getLViewParent","getFirstLContainer","getNearestLContainer","getNextLContainer","applyToElementOrContainer","lNodeToHandle","beforeNode","lContainer","isComponent","rNode","nativeAppendChild","nativeInsertBefore","nativeRemoveNode","applyContainer","parentRElement","applyView","createTextNode","updateTextNode","createCommentNode","escapeCommentText","createElementNode","detachMovedView","declarationContainer","movedViews","declarationViewIndex","detachView","removeIndex","indexInContainer","viewToDetach","declarationLContainer","removedLView","removeViewFromDOM","lQueries","destroyLView","destroyViewTree","rootView","lViewOrLContainer","cleanUpView","firstView","executeOnDestroys","toCall","callContext","processCleanups","tCleanup","cleanup","lCleanup","targetIdx","destroyHooksFn","unregisterLView","getParentRElement","getClosestRElement","nativeAppendOrInsertBefore","nativeParentNode","getInsertInFrontOfRNode","_getInsertInFrontOfRNodeWithI18n","getInsertInFrontOfRNodeWithNoI18n","_processI18nInsertBefore","policy$1","setI18nHandling","getInsertInFrontOfRNodeWithI18n","processI18nInsertBefore","childRNode","childTNode","parentRNode","anchorNode","getFirstNativeNode","tNodeType","getBeforeNodeForView","elIcuContainerChild","rNodeOrLContainer","projectionNodes","getProjectionNodes","projection","viewIndexInContainer","nextViewIndex","firstTNodeOfView","nativeParent","nativeRemoveChild","applyNodes","isProjection","rawSlotValue","nextRNode","applyProjectionRecursive","projectionNext","tProjectionNode","componentLView","nodeToProjectOrRNodes","nodeToProject","projectedComponentLView","writeDirectClass","setupStaticAttributes","mergedAttrs","writeDirectStyle","trustedHTMLFromString","html","getPolicy$1","trustedTypes","createHTML","createScript","createScriptURL","setDocument","getDocument","getPolicy","trustedHTMLFromStringBypass","trustedScriptURLFromStringBypass","SafeValueImpl","changingThisBreaksApplicationSecurity","SafeHtmlImpl","getTypeName","SafeStyleImpl","SafeScriptImpl","SafeUrlImpl","SafeResourceUrlImpl","unwrapSafeValue","allowSanitizationBypassAndThrow","actualType","getSanitizationBypassType","bypassSanitizationTrustHtml","trustedHtml","bypassSanitizationTrustStyle","trustedStyle","bypassSanitizationTrustScript","trustedScript","bypassSanitizationTrustUrl","trustedUrl","bypassSanitizationTrustResourceUrl","trustedResourceUrl","getInertBodyHelper","defaultDoc","inertDocumentHelper","InertDocumentHelper","isDOMParserAvailable","DOMParser","parseFromString","DOMParserHelper","getInertBodyElement","inertDocument","implementation","createHTMLDocument","templateEl","SAFE_URL_PATTERN","_sanitizeUrl","tagSet","sets","VOID_ELEMENTS","OPTIONAL_END_TAG_BLOCK_ELEMENTS","OPTIONAL_END_TAG_INLINE_ELEMENTS","VALID_ELEMENTS","URI_ATTRS","VALID_ATTRS","SKIP_TRAVERSING_CONTENT_IF_INVALID_ELEMENTS","SanitizingHtmlSerializer","sanitizedSomething","sanitizeChildren","traverseContent","Node","ELEMENT_NODE","startElement","TEXT_NODE","nodeValue","checkClobberedElement","elAttrs","elAttr","encodeEntities","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","outerHTML","SURROGATE_PAIR_REGEXP","NON_ALPHANUMERIC_REGEXP","inertBodyHelper","_sanitizeHtml","unsafeHtmlInput","inertBodyElement","unsafeHtml","mXSSAttempts","parsedHtml","getTemplateContent","isTemplateElement","SecurityContext","HTML","STYLE","SCRIPT","RESOURCE_URL","ɵɵsanitizeHtml","getSanitizer","sanitize","ɵɵsanitizeUrl","unsafeUrl","ɵɵsanitizeResourceUrl","unsafeResourceUrl","ɵɵsanitizeUrlOrResourceUrl","getUrlSanitizer","ENVIRONMENT_INITIALIZER","INJECTOR","INJECTOR_DEF_TYPES","NullInjector","importProvidersFrom","internalImportProvidersFrom","ɵfromNgModule","checkForStandaloneCmp","providersOut","dedup","injectorTypesWithProviders","collectProviders","internalSource","walkProviderTree","processInjectorTypesWithProviders","typesWithProviders","deepForEachProvider","parents","defType","injDef","cmpDef","isDuplicate","importTypesWithProviders","imported","defProviders","injectorType","USE_VALUE$1","isValueProvider","isTypeProvider","INJECTOR_SCOPE","NOT_YET","CIRCULAR","NULL_INJECTOR","getNullInjector","EnvironmentInjector","R3Injector","scopes","_ngOnDestroyHooks","_onDestroyHooks","forEachSingleProvider","processProvider","makeRecord","injectorDefTypes","assertNotDestroyed","onDestroyHooks","removeOnDestroy","previousInjector","couldBeInjectableType","injectableDefInScope","injectableDefOrInjectorDefFactory","hydrate","catchInjectorError","injectorErrorName","tokenPath","formatError","resolveInjectorInitializers","initializers","providerToRecord","providerToFactory","multiRecord","hasOnDestroy","destroyCBIdx","getUndecoratedInjectableFactory","paramLength","inheritedInjectableDef","getInheritedInjectableDef","ngModuleType","unwrappedProvider","isFactoryProvider","isExistingProvider","classRef","hasDeps","APP_ID","DEFAULT_APP_ID","PLATFORM_INITIALIZER","CSP_NONCE","_retrieveHydrationInfoImpl","retrieveHydrationInfo","ComponentRef$1","ComponentFactory$1","_NullComponentFactoryResolver","noComponentFactoryError","ComponentFactoryResolver$1","NULL","injectElementRef","createElementRef","unwrapElementRef","injectRenderer2","nodeAtIndex","Sanitizer","full","major","minor","NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR","createInjector","additionalProviders","createInjectorWithoutInjectorInstances","getOriginalError","_console","originalError","_findOriginalError","_wrapInTimeout","EventEmitter_","isAsync","__isAsync","nextFn","errorFn","completeFn","enableLongStackTrace","shouldCoalesceEventChangeDetection","shouldCoalesceRunChangeDetection","hasPendingMacrotasks","hasPendingMicrotasks","isStable","onUnstable","onMicrotaskEmpty","onStable","Zone","assertZonePatched","_nesting","_outer","_inner","TaskTrackingZoneSpec","longStackTraceZoneSpec","lastRequestAnimationFrameId","nativeRequestAnimationFrame","getNativeRequestAnimationFrame","nativeCancelAnimationFrame","unpatchedRequestAnimationFrame","__symbol__","unpatchedCancelAnimationFrame","forkInnerZoneWithAngularBehavior","delayChangeDetectionForEventsDelegate","delayChangeDetectionForEvents","isCheckStableRunning","fakeTopEventTask","scheduleEventTask","updateMicroTaskStatus","checkStable","isAngularZone","onInvokeTask","applyThis","applyArgs","shouldBeIgnoredByZone","__ignore_ng_zone__","invokeTask","onLeave","onInvoke","onHasTask","hasTaskState","hasTask","_hasPendingMicrotasks","microTask","macroTask","onHandleError","isInAngularZone","assertInAngularZone","assertNotInAngularZone","runTask","EMPTY_PAYLOAD","cancelTask","runGuarded","NoopNgZone","ZONE_IS_STABLE_OBSERVABLE","isStableFactory","_stable","isCurrentlyStable","stableSub","unstableSub","merge$1","ɵɵresolveWindow","ownerDocument","ɵɵresolveDocument","maybeUnwrapFn","AfterRenderEventManager","renderDepth","validateBegin","markViewDirty","PRESERVE_HOST_CONTENT","currentConsumer","getReactiveLViewConsumer","slot","getOrCreateCurrentLViewConsumer","commitLViewConsumerIfHasProducers","createLViewConsumer","REACTIVE_LVIEW_CONSUMER_NODE","NO_CHANGE","ɵɵadvance","selectIndexInternal","checkNoChangesMode","ɵɵdirectiveInject","ɵɵinvalidFactory","createLView","tHostNode","hydrationInfo","getUniqueLViewId","getOrCreateTNode","createTNodeAtIndex","createTNode","tParent","insertBeforeIndex","directiveStylingLast","propertyBindings","localNames","initialInputs","stylesWithoutHost","residualStyles","classesWithoutHost","residualClasses","classBindings","styleBindings","allocExpando","numSlotsToAlloc","allocIdx","executeTemplate","templateFn","prevSelectedIndex","isUpdatePhase","effectiveConsumer","executeContentQueries","createDirectivesInstances","instantiateAllDirectives","addComponentLogic","hostTNode","getOrCreateComponentTView","lViewFlags","componentView","addToViewTree","setInputsFromAttrs","invokeDirectivesHostBindings","saveResolvedLocalsInData","viewData","localRefExtractor","localIndex","incompleteFirstPass","createTView","constsOrFactory","ssrId","initialViewLength","createViewBlueprint","queries","expandoStartIndex","hostBindingOpCodes","firstUpdatePass","staticViewQueries","staticContentQueries","directiveRegistry","pipeRegistry","_applyRootElementTransformImpl","generatePropertyAliases","aliasMap","propertyAliases","hostDirectiveAliasMap","internalName","addPropertyAlias","elementPropertyInternal","nativeOnly","dataValue","inputData","setInputsForProperty","markDirtyIfOnPush","viewIndex","childComponentLView","mapPropName","resolveDirectives","localRefs","exportsMap","matchResult","findDirectiveDefMatches","hostDirectiveDefs","hostDirectiveMatches","markAsComponentHost","initializeDirectives","cacheMatchingLocalNames","initTNodeFlags","numberOfDirectives","preOrderHooksFound","preOrderCheckHooksFound","directiveIdx","configureViewWithDirective","saveNameToExportMap","lifeCycleHooks","initializeInputAndOutputAliases","hostDirectiveDefinitionMap","tViewData","tNodeAttrs","inputsFromAttrs","inputsStore","outputsStore","aliasData","aliasedOutputs","generateInitialInputs","elementIndex","getCurrentDirectiveIndex","invokeHostBindingsInCreationMode","directiveFactory","nodeInjectorFactory","registerHostBindingOpCodes","directiveVarsIdx","elementIndx","lastSelectedElementIdx","setElementAttribute","initialInputData","writeToDirectiveInput","inputsToStore","createLContainer","hostNative","refreshContentQueries","directiveDefIdx","executeViewQueryFn","viewQueryFn","getOrCreateLViewCleanup","getOrCreateTViewCleanup","errorHandler","textBindingInternal","renderComponent","hostLView","componentHostIdx","componentTView","syncViewWithBlueprint","hostRNode","renderView","renderChildComponents","EffectManager","effectFn","destroyRef","allowSignalWrites","watch","registerOnCleanup","notify","unregisterOnDestroy","isQueueEmpty","computeStaticStyling","writeToHost","collectNativeNodes","lNode","collectNativeNodesInLContainer","nodesInSlot","lViewInAContainer","lViewFirstChildTNode","detectChangesInternal","notifyErrorHandler","afterRenderEventManager","refreshView","effectManager","setBindingIndex","hooksInitPhaseCompleted","markTransplantedViewsForRefresh","detectChangesInEmbeddedViews","processHostBindingOpCodes","opCode","bindingRootIndx","hostBindingFn","detectChangesInChildComponents","detectChangesInView","detectChangesInComponent","viewAttachedToChangeDetector","ViewRef$1","_cdRefInjectingView","_appRef","_attachedToViewContainer","viewRefs","storeLViewOnDestroy","onDestroyCallback","reattach","checkNoChanges","attachToViewContainerRef","detachFromAppRef","detachViewFromDOM","attachToAppRef","RootViewRef","ComponentFactory","toRefArray","nonMinified","templateName","ChainedInjector","parentInjector","refArray","stringifyCSSSelectorList","selectorList","isBoundToModule","projectableNodes","rootSelectorOrNode","environmentInjector","realEnvironmentInjector","rootViewInjector","hostRenderer","elementName","locateHostElement","elementOrSelector","applyRootElementTransform","getNamespace","rootFlags","rootTView","rootLView","tElementNode","rootComponentDef","rootDirectives","createRootComponentTNode","createRootComponentView","applyRootComponentStyling","viewRenderer","setRootNodeAttributes","extractAttrsAndClassesFromSelector","projectNodes","nodesforSlot","createRootComponent","hostFeatures","rootTNode","LifecycleHooksFeature","ComponentRef","_rootLView","previousInputValues","ɵɵInheritDefinitionFeature","superType","getSuperType","shouldInheritFields","inheritanceChain","superDef","writeableDef","maybeUnwrapEmpty","superHostBindings","inheritHostBindings","superViewQuery","superContentQueries","inheritViewQuery","inheritContentQueries","defData","mergeHostAttrsAcrossInheritance","prevViewQuery","prevContentQueries","prevHostBindings","ɵɵInputTransformsFeature","isListLikeIterable","isJsObject","updateBinding","getBinding","bindingUpdated","bindingUpdated2","exp1","exp2","different","bindingUpdated3","exp3","bindingUpdated4","exp4","ɵɵattribute","elementAttributeInternal","interpolation1","v0","suffix","interpolation2","v1","ɵɵtemplate","attrsIndex","localRefsIndex","adjustedIndex","templateFirstCreatePass","tViewConsts","embeddedTView","comment","_locateOrCreateContainerAnchor","createContainerAnchorImpl","ɵɵreference","getContextLView","ɵɵproperty","setDirectiveInputsWhichShadowsStyling","isClassBased","ɵɵelementStart","elementStartFirstCreatePass","elementStart","_locateOrCreateElementNode","hasDirectives","getElementDepthCount","increaseElementDepthCount","ɵɵelementEnd","isSkipHydrationRootTNode","leaveSkipHydrationBlock","decreaseElementDepthCount","elementEnd","hasClassInput","hasStyleInput","ɵɵelement","getNamespace$1","ɵɵelementContainerStart","elementContainerStartFirstCreatePass","_locateOrCreateElementContainerNode","ɵɵelementContainerEnd","ɵɵelementContainer","ɵɵgetCurrentView","isSubscribable","ɵɵlistener","listenerFn","eventTargetResolver","listenerInternal","isTNodeDirectiveHost","processOutputs","lCleanupIndex","idxOrTargetGetter","existingListener","findExistingListener","tNodeIdx","cleanupEventName","listenerIdxInLCleanup","__ngLastListenerFn__","__ngNextListenerFn__","wrapListener","executeListenerWithErrorHandling","wrapWithPreventDefault","wrapListenerIn_markDirtyAndPreventDefault","nextListenerFn","ɵɵnextContext","nextContextImpl","walkUpViews","nestingLevel","matchingProjectionSlotIndex","projectionSlots","wildcardNgContentIndex","ngProjectAsAttrVal","getProjectAsAttrValue","ngProjectAsAttrIdx","ɵɵprojectionDef","componentNode","projectionHeads","tails","componentChild","slotIndex","ɵɵprojection","selectorIndex","applyProjection","ɵɵpropertyInterpolate","ɵɵpropertyInterpolate1","interpolatedValue","toTStylingRange","getTStylingRangePrev","tStylingRange","setTStylingRangePrevDuplicate","getTStylingRangeNext","setTStylingRangeNext","setTStylingRangeNextDuplicate","markDuplicates","tStylingKey","isPrevDir","isClassBinding","tStylingAtIndex","foundDuplicate","tStyleRangeAtCursor","isStylingMatch","tStylingKeyCursor","parserState","textEnd","keyEnd","valueEnd","getLastParsedKey","getLastParsedValue","parseClassNameNext","consumeClassToken","consumeWhitespace","parseStyleNext","consumeStyleKey","consumeSeparator","consumeStyleValue","ch1","ch2","ch3","lastChIndex","consumeQuotedText","resetParserState","quoteCharCode","ɵɵstyleProp","checkStylingProperty","ɵɵclassProp","ɵɵstyleMap","checkStylingMap","styleKeyValueArraySet","styleStringParser","parseStyle","ɵɵclassMap","classKeyValueArraySet","classStringParser","parseClassName","stylingFirstUpdatePass","updateStyling","normalizeSuffix","stringParser","hasStylingInputShadow","isInHostBindings","staticPrefix","updateStylingMap","oldKeyValueArray","newKeyValueArray","oldIndex","newIndex","oldKey","newKey","setKey","toStylingKeyValueArray","styleKeyValueArray","unwrappedValue","isHostBindings","wrapInStaticStylingKey","stylingKey","hostDirectiveDef","getCurrentDirectiveDef","residual","collectStylingFromTAttrs","collectStylingFromDirectives","templateStylingKey","getTemplateHeadTStylingKey","bindings","setTemplateHeadTStylingKey","collectResidual","insertTStylingBinding","tStylingKeyWithStatic","isHostBinding","tBindings","tmplHead","tmplTail","isKeyDuplicateOfStatic","setTStylingRangePrev","markDuplicateOfResidualStyling","currentDirective","desiredMarker","currentMarker","stringKey","tRange","higherPriorityValue","getTStylingRangeNextDuplicate","findStylingValue","isStylingValuePresent","getTStylingRangePrevDuplicate","applyStyling","isPrevDirection","rawKey","containsStatics","isStylingMap","valueAtLViewIndex","ɵɵtext","textNative","_locateOrCreateTextNode","ɵɵtextInterpolate","ɵɵtextInterpolate1","interpolated","ɵɵtextInterpolate2","ɵɵtextInterpolate3","v2","interpolation3","ɵɵclassMapInterpolate1","ɵɵclassMapInterpolate2","ɵɵhostProperty","LocaleDataIndex","findLocaleData","normalizedLocale","getLocaleData","PluralCase","ng","common","FirstDayOfWeek","WeekendRange","CurrencyCode","CurrencySymbol","CurrencyName","pluralMapping","DEFAULT_LOCALE_ID","ELEMENT_MARKER","ICU_MARKER","I18nCreateOpCode","SHIFT","APPEND_EAGERLY","COMMENT","LOCALE_ID$1","setLocaleId","assertDefined","tNodeInsertBeforeIndex","i18nParent","anchorRNode","addTNodeAndUpdateInsertBeforeIndex","previousTNodes","newTNode","existingTNode","isI18nText","isNewTNodeCreatedBefore","getInsertBeforeIndex","setInsertBeforeIndex","getTIcu","createTNodePlaceholder","getCurrentICUCaseIndex","tIcu","currentCase","currentCaseLViewIndex","getParentFromIcuCreateOpCode","mergedCode","getRefFromIcuCreateOpCode","changeMask","changeMaskCounter","applyMutableOpCodes","mutableOpCodes","rootRNode","rootIdx","textNodeIndex","parentIdx","insertInFrontOf","refIdx","caseIndex","anchorIdx","commentValue","commentNodeIndex","elementNodeIndex","applyUpdateOpCodes","updateOpCodes","bindingsStartIndex","checkBit","skipCodes","sanitizeFn","tNodeOrTagName","rText","applyIcuSwitchCase","applyIcuUpdateCase","activeCaseIndex","getCaseIndex","icuExpression","bindingValue","resolvedCase","getPluralCase","applyIcuSwitchCaseRemove","removeCodes","nodeOrIcuIndex","loadIcuContainerVisitor","_removes","enterIcu","icuContainerIteratorNext","removeOpCode","icuContainerIteratorStart","BINDING_REGEXP","NESTED_ICU","ICU_BLOCK_REGEXP","MARKER","SUBTEMPLATE_REGEXP","PH_REGEXP","NGSP_UNICODE_REGEXP","createTNodeAndAddOpCode","existingTNodes","createOpCodes","isICU","i18nNodeIdx","ensureIcuContainerVisitorLoaded","loader","setTNodeInsertBeforeIndex","assertEqual","i18nStartFirstCreatePassProcessTextNode","hasBinding","generateBindingUpdateOpCodes","destinationNode","bindingStart","maskIndex","sizeIndex","textParts","textValue","toMaskBit","removeInnerTemplateTranslation","tagMatched","inTemplate","icuStart","bindingMask","addUpdateIcuSwitch","mainBinding","setTIcu","valueArr","nestedIcus","icuIndex","parseIcuCase","addUpdateIcuUpdate","parseICUBlock","icuType","i18nParseTextIntoPartsAndICU","prevPos","braceStack","braces","caseName","unsafeCaseHtml","inertRootNode","walkIcuTree","sharedUpdateOpCodes","addCreateNodeAndAppend","lowerAttrName","addCreateAttribute","addRemoveNode","COMMENT_NODE","isNestedIcu","addRemoveNestedIcu","appendToParentIdx","createAtIdx","icuCreateOpCode","ɵɵi18nStart","messageIndex","subTemplateIndex","i18nStartFirstCreatePass","parentTNodeIndex","existingTNodeStack","getTranslationForTemplate","isRootTemplateMessage","msgParts","replaceNgsp","isClosing","tI18n","applyCreateOpCodes","appendNow","ɵɵi18n","ɵɵi18nEnd","ɵɵi18nExp","setMaskBit","hasChange","ɵɵi18nApply","applyI18n","resolveProvider","lInjectablesBlueprint","providerFactory","beginIndex","existingFactoryIndex","registerDestroyHooksIfSupported","existingProvidersFactoryIndex","existingViewProvidersFactoryIndex","doesViewProvidersFactoryExist","multiFactory","factoryFn","componentProviders","multiFactoryAdd","multiViewProvidersFactoryResolver","multiProvidersFactoryResolver","contextIndex","indexInFactory","providerIsTypeProvider","providerIsClassProvider","isClassProvider","existingCallbacksIndex","isComponentProvider","lData","multiResolve","factories","componentCount","multiProviders","ɵɵProvidersFeature","viewProviders","processProvidersFn","NgModuleRef$1","NgModuleFactory$1","createNgModule","NgModuleRef","_parent","_bootstrapComponents","destroyCbs","_r3Injector","NgModuleFactory","moduleType","EnvironmentNgModuleRefAdapter","debugName","runEnvironmentInitializers","createEnvironmentInjector","StandaloneService","_injector","cachedInjectors","getOrCreateStandaloneInjector","standaloneInjector","ɵɵStandaloneFeature","ɵɵpureFunction0","slotOffset","pureFn","ɵɵpureFunction1","pureFunction1Internal","ɵɵpureFunction2","pureFunction2Internal","ɵɵpureFunction3","pureFunction3Internal","ɵɵpureFunction4","pureFunction4Internal","ɵɵpureFunction6","exp5","exp6","ɵɵpureFunction8","exp7","exp8","getPureFunctionReturnValue","returnValueIndex","lastReturnValue","bindingRoot","ɵɵpipe","pipeName","getPipeDef","pipeFactory","pipeInstance","ɵɵpipeBind1","isPure","ɵɵpipeBind2","ɵɵpipeBind3","v3","ɵɵpipeBind4","v4","symbolIterator","_results","QueryList","_changes","_emitDistinctChangesOnly","_changesDetected","resultsTree","identityAccessor","newResultFlat","POSITIVE_INFINITY","arrayEquals","valueA","valueB","notifyOnChanges","setDirty","addLViewToLContainer","addToDOM","insertView","containerLength","trackMovedView","addViewToDOM","parentNativeNode","injectTemplateRef","ViewEngineTemplateRef","R3TemplateRef","_declarationLView","_declarationTContainer","createEmbeddedViewImpl","embeddedLView","createAndRenderEmbeddedLView","declarationLView","templateTNode","declarationViewLQueries","createTemplateRef","ViewContainerRef","injectViewContainerRef","createContainerRef","VE_ViewContainerRef","R3ViewContainerRef","_lContainer","_hostTNode","_hostLView","getViewRefs","indexOrOptions","viewRef","insertImpl","componentFactoryOrType","isComponentFactory","ngModuleRef","contextInjector","skipDomInsertion","viewAttachedToContainer","prevIdx","prevLContainer","prevVCRef","adjustedIdx","_adjustIndex","getOrCreateViewRefs","viewRefsArr","_locateOrCreateAnchorNode","createAnchorNode","commentNode","insertAnchorNode","nativeNextSibling","LQuery_","queryList","LQueries_","tQueries","noOfInheritedQueries","viewLQueries","tQuery","getByIndex","indexInDeclarationView","dirtyQueriesWithMatches","getTQuery","TQueryMetadata_","TQueries_","queriesForTemplateRef","childQueryIndex","tqueryClone","track","tquery","TQuery_","crossesNgTemplate","_appliesToNextNode","_declarationNodeIndex","isApplyingToNode","matchTNode","addMatch","declarationNodeIdx","matchTNodeWithReadOption","getIdxOfMatchingSelector","nodeMatchIdx","directiveOrProviderIdx","matchIdx","createResultForNode","matchingIdx","createResultByTNodeType","createSpecialToken","materializeViewResults","queryIndex","lQuery","tQueryMatches","matchedNodeIdx","collectQueryResults","lViewResults","embeddedLViews","ɵɵqueryRefresh","isCreationMode","ɵɵviewQuery","createTQuery","createLQuery","ɵɵcontentQuery","saveContentQueryAndDirectiveIndex","tViewContentQueries","ɵɵloadQuery","loadQueryInternal","storeCleanupWithContext","ɵɵtemplateRefExtractor","isNgModule","ApplicationInitStatus","initialized","donePromise","rej","appInits","runInitializers","asyncInitPromises","initResult","observableAsPromise","Console","getGlobalLocale","$localize","InitialRenderPendingTasks","hasPendingTasks","ModuleWithComponentFactories","ngModuleFactory","componentFactories","Compiler","compileModuleSync","compileModuleAsync","compileModuleAndAllComponentsSync","declaration","compileModuleAndAllComponentsAsync","clearCacheFor","getModuleId","TESTABILITY","TESTABILITY_GETTER","_testabilityGetter","Testability","testabilityGetter","_pendingCount","_isZoneStable","_didWork","_callbacks","taskTrackingZone","setTestabilityGetter","addToWindow","_watchAngularEvents","_runCallbacksIfReady","increasePendingRequestCount","decreasePendingRequestCount","timeoutId","doneCb","getPendingTasks","updateCb","macroTasks","creationLocation","addCallback","whenStable","getPendingRequestCount","registerApplication","unregisterApplication","findProviders","using","exactMatch","TestabilityRegistry","_applications","testability","unregisterAllApplications","getTestability","getAllTestabilities","getAllRootElements","findTestabilityInTree","findInAncestors","_platformInjector","ALLOW_MULTIPLE_PLATFORMS","PLATFORM_DESTROY_LISTENERS","APP_BOOTSTRAP_LISTENER","NgProbeToken","createPlatformFactory","parentPlatformFactory","extraProviders","getPlatform","platformProviders","createPlatform","publishSignalConfiguration","setThrowInvalidWriteToSignalError","PlatformRef","runPlatformInitializers","createPlatformInjector","assertPlatform","requiredToken","_modules","_destroyListeners","bootstrapModuleFactory","moduleFactory","getNgZone","ngZoneToUse","getNgZoneOptions","eventCoalescing","runCoalescing","ngZoneEventCoalescing","ngZoneRunCoalescing","moduleRef","createNgModuleRefWithProviders","internalProvideZoneChangeDetection","ngZoneFactory","ngZoneChangeDetectionScheduler","NgZoneChangeDetectionScheduler","INTERNAL_APPLICATION_ERROR_HANDLER","ngZoneApplicationErrorHandlerFactory","exceptionHandler","_callAndReportToErrorHandler","initStatus","_moduleDoBootstrap","compilerOptions","optionsReducer","compileNgModuleFactory","ngDoBootstrap","destroyListeners","objs","_bootstrapListeners","_runningTick","_views","internalErrorHandler","zoneIsStable","componentTypes","componentOrFactory","compRef","_loadComponent","tick","viewCount","warnIfDestroyed","userErrorHandler","applicationRef","_onMicrotaskEmptySubscription","isDevMode","injectChangeDetectorRef","createViewRef","isPipe","DefaultIterableDifferFactory","DefaultIterableDiffer","trackByIdentity","_linkedRecords","_unlinkedRecords","_previousItHead","_itHead","_itTail","_additionsHead","_additionsTail","_movesHead","_movesTail","_removalsHead","_removalsTail","_identityChangesHead","_identityChangesTail","forEachItem","nextIt","nextRemove","addRemoveOffset","moveOffsets","getPreviousIndex","adjPreviousIndex","_nextRemoved","localMovePreviousIndex","localCurrentIndex","forEachPreviousItem","_nextPrevious","_nextAdded","forEachMovedItem","_nextMoved","_nextIdentityChange","_reset","itemTrackBy","mayBeDirty","trackById","_verifyReinsertion","_addIdentityChange","_mismatch","iterateListLike","_truncate","isDirty","previousRecord","_prev","_remove","_reinsertAfter","_moveAfter","_addAfter","IterableChangeRecord_","reinsertRecord","_addToMoves","nextRecord","_addToRemovals","_unlink","prevRecord","_prevRemoved","_insertAfter","_DuplicateMap","toIndex","_prevDup","_nextDup","_DuplicateItemRecordList","_head","_tail","atOrAfterIndex","duplicates","recordList","moveOffset","DefaultKeyValueDifferFactory","DefaultKeyValueDiffer","_records","_mapHead","_appendAfter","_previousMapHead","_changesHead","_changesTail","_nextChanged","_forEach","_maybeAddToChanges","_getOrCreateRecordForKey","_insertBeforeOrAppend","KeyValueChangeRecord_","_addToAdditions","_addToChanges","defaultIterableDiffersFactory","IterableDiffers","copied","defaultKeyValueDiffersFactory","KeyValueDiffers","kv","platformCore","ApplicationModule","booleanAttribute","reflectComponentType","isSignal","BaseControlValueAccessor","BuiltInControlValueAccessor","ɵBuiltInControlValueAccessor_BaseFactory","DEFAULT_VALUE_ACCESSOR","DefaultValueAccessor","COMPOSITION_BUFFER_MODE","_compositionMode","_composing","_isAndroid","ɵgetDOM","getUserAgent","_handleInput","_compositionStart","_compositionEnd","isEmptyInputValue","hasValidLength","NG_VALIDATORS","NG_ASYNC_VALIDATORS","minValidator","maxValidator","requiredValidator","requiredTrue","requiredTrueValidator","minLengthValidator","actualLength","maxLengthValidator","patternValidator","nullValidator","regexStr","requiredPattern","actualValue","composeAsync","isPresent","toObservable","mergeErrors","arrayOfErrors","executeValidators","normalizeValidators","isValidatorFn","presentValidators","composeValidators","composeAsyncValidators","mergeValidators","controlValidators","dirValidator","getControlValidators","_rawValidators","getControlAsyncValidators","_rawAsyncValidators","makeValidatorsArray","hasValidator","addValidators","currentValidators","validatorsToAdd","removeValidators","AbstractControlDirective","_onDestroyCallbacks","_setValidators","_composedValidatorFn","_setAsyncValidators","_composedAsyncValidatorFn","_registerOnDestroy","_invokeOnDestroyCallbacks","errorCode","getError","formDirective","AbstractControlStatus","_cd","isTouched","isUntouched","isPristine","isInvalid","isPending","isSubmitted","submitted","NgControlStatus","NgControlStatusGroup","VALID","INVALID","DISABLED","pickValidators","validatorOrOpts","isOptionsObj","pickAsyncValidators","asyncValidators","assertControlPresent","isGroup","assertAllValuesPresent","_forEachChild","AbstractControl","_pendingDirty","_hasOwnPendingAsyncValidator","_pendingTouched","_onCollectionChange","_onDisabledChange","_assignValidators","_assignAsyncValidators","validatorFn","asyncValidatorFn","_updateOn","setAsyncValidators","addAsyncValidators","removeAsyncValidators","hasAsyncValidator","clearAsyncValidators","markAllAsTouched","_updateTouched","_updatePristine","markAsPending","skipPristineCheck","_parentMarkedDirty","_updateValue","_updateAncestors","setParent","getRawValue","_setInitialStatus","_cancelExistingSubscription","_runValidator","_calculateStatus","_runAsyncValidator","_updateTreeValidity","_allControlsDisabled","_asyncValidationSubscription","_updateControlsErrors","currPath","_find","_initObservables","_anyControlsHaveStatus","_anyControls","_anyControlsDirty","_anyControlsTouched","_registerOnCollectionChange","_setUpdateStrategy","coerceToValidator","coerceToAsyncValidator","_setUpControls","registerControl","removeControl","setControl","_reduceChildren","_syncPendingControls","subtreeUpdated","updated","_reduceValue","initValue","FormRecord","CALL_SET_DISABLED_STATE","setDisabledStateDefault","controlPath","setUpControl","callSetDisabledState","setUpValidators","setUpViewChangePipeline","_pendingValue","_pendingChange","setUpModelChangePipeline","emitModelEvent","viewToModelUpdate","_unregisterOnChange","setUpBlurPipeline","setUpDisabledChangeHandler","onDisabledChange","registerOnDisabledChange","_unregisterOnDisabledChange","cleanUpControl","validateControlPresenceOnChange","cleanUpValidators","registerOnValidatorChange","onValidatorChange","isControlUpdated","updatedValidators","updatedAsyncValidators","emitModelToViewChange","setUpFormContainer","isPropertyUpdated","viewModel","syncPendingControls","selectValueAccessor","valueAccessors","defaultAccessor","builtinAccessor","customAccessor","isBuiltInAccessor","formDirectiveProvider$1","resolvedPromise$1","_directives","ngSubmit","_findContainer","getControl","addFormGroup","removeFormGroup","getFormGroup","updateModel","onSubmit","onReset","removeListItem","isFormControlState","formState","_applyFormState","nonNullable","initialValueIsDefault","emitViewToModelChange","AbstractFormGroupDirective","_checkParentType","ɵAbstractFormGroupDirective_BaseFactory","formControlBinding$1","resolvedPromise","_registered","_checkForErrors","_checkName","oldName","_getPath","_setUpControl","_updateDisabled","_isStandalone","_setUpStandalone","disabledValue","ɵNgNoValidate","RadioControlRegistryModule","NG_MODEL_WITH_FORM_CONTROL_WARNING","formControlBinding","_ngModelWarningSentOnce","_ngModelWarningConfig","_ngModelWarningSent","_isControlChanged","previousForm","formDirectiveProvider","_updateDomValue","_checkFormPresent","_updateValidators","_updateRegistrations","_oldForm","removeListItem$1","_setUpFormContainer","_cleanUpFormContainer","addFormArray","removeFormArray","getFormArray","oldCtrl","newCtrl","isFormControl","cleanUpFormContainer","formGroupNameProvider","_hasInvalidParent","formArrayNameProvider","FormArrayName","controlNameBinding","_added","SELECT_VALUE_ACCESSOR","SelectControlValueAccessor","_buildValueString$1","_optionMap","_idCounter","_compareWith","valueString","_getOptionId","_getOptionValue","_registerOption","_extractId$1","ɵSelectControlValueAccessor_BaseFactory","NgSelectOption","_select","ngValue","_setElementValue","SELECT_MULTIPLE_VALUE_ACCESSOR","SelectMultipleControlValueAccessor","_buildValueString","optionSelectedStateSetter","_setSelected","selectedOptions","_extractId","ɵSelectMultipleControlValueAccessor_BaseFactory","ɵNgSelectMultipleOption","AbstractValidatorDirective","_validator","inputName","normalizeInput","_enabled","createValidator","REQUIRED_VALIDATOR","RequiredValidator","ɵRequiredValidator_BaseFactory","ɵInternalFormsSharedModule","_registerControl","isAbstractControlOptions","useNonNullable","nnfb","reducedControls","_reduceControls","createdControls","_createControl","warnOnNgModelWithFormControl","GenericBrowserDomAdapter","ɵDomAdapter","supportsDOMEvents","BrowserDomAdapter","makeCurrent","ɵsetRootDomAdapter","onAndCancel","getDefaultDocument","createHtmlDocument","isShadowRoot","getBaseElementHref","baseElement","relativePath","urlParsingNode","pathName","resetBaseElement","getCookie","BrowserXhr","EVENT_MANAGER_PLUGINS","EventManager","_eventNameToPlugin","manager","_plugins","_findPluginFor","getZone","EventManagerPlugin","APP_ID_ATTRIBUTE_NAME","SharedStylesHost","appId","nonce","styleRef","hostNodes","styleNodesInDOM","collectServerRenderedStyles","platformIsServer","resetHostNodes","addStyles","changeUsageCount","onStyleAdded","removeStyles","onStyleRemoved","getAllStyles","addHost","hostNode","addStyleToHost","removeHost","styleRefValue","usage","getStyleElement","styleEl","styleElRef","NAMESPACE_URIS","svg","xhtml","xlink","xml","xmlns","math","COMPONENT_REGEX","REMOVE_STYLES_ON_COMPONENT_DESTROY","shimStylesContent","compId","DomRendererFactory2","eventManager","sharedStylesHost","removeStylesOnCompDestroy","rendererByCompId","defaultRenderer","DefaultDomRenderer2","getOrCreateRenderer","EmulatedEncapsulationDomRenderer2","applyToHost","NoneEncapsulationDomRenderer","applyStyles","ShadowDomRenderer","createElementNS","isTemplateNode","namespaceUri","setAttributeNS","removeAttributeNS","removeProperty","decoratePreventDefault","eventHandler","hostEl","nodeOrShadowRoot","contentAttr","shimContentAttribute","componentShortId","hostAttr","shimHostAttribute","DomEventsPlugin","MODIFIER_KEYS","_keyMap","Del","Left","Right","Up","Down","Menu","Scroll","Win","MODIFIER_KEY_GETTERS","alt","KeyEventsPlugin","parseEventName","parsedEvent","outsideHandler","eventCallback","fullKey","domEventName","_normalizeKey","codeIX","modifierName","matchEventFullKeyCode","fullKeyCode","keycode","modifierGetter","keyName","platformBrowser","ɵPLATFORM_BROWSER_ID","initDomAdapter","ɵsetDocument","BROWSER_MODULE_PROVIDERS_MARKER","TESTABILITY_PROVIDERS","ɵTESTABILITY_GETTER","BrowserGetTestability","ɵglobal","getAngularTestability","getAllAngularTestabilities","getAllAngularRootElements","frameworkStabilizers","testabilities","didWork","decrement","didWork_","ɵTESTABILITY","BROWSER_MODULE_PROVIDERS","ɵINJECTOR_SCOPE","providersAlreadyPresent","withServerTransition","getTitle","newTitle","createTitle","ChangeDetectionPerfRecord","msPerTick","numTicks","AngularProfiler","timeChangeDetection","profileName","isProfilerAvailable","profileEnd","PROFILER_GLOBAL_NAME","exportNgVar","COMPILED","DomSanitizerImpl","ɵallowSanitizationBypassAndThrow","ɵunwrapSafeValue","ɵ_sanitizeHtml","ɵ_sanitizeUrl","ɵbypassSanitizationTrustHtml","ɵbypassSanitizationTrustStyle","ɵbypassSanitizationTrustScript","ɵbypassSanitizationTrustUrl","ɵbypassSanitizationTrustResourceUrl","domSanitizerImplFactory","PRIMARY_OUTLET","RouteTitleKey","ParamsAsMap","convertToParamMap","defaultUrlMatcher","segmentGroup","hasChildren","posParams","shallowEqual","equalArraysOrString","aSorted","bSorted","wrapIntoObservable","pathCompareMap","exact","equalSegmentGroups","containee","matrixParams","equalPath","matrixParamsMatch","numberOfChildren","subset","containsSegmentGroup","paramCompareMap","equalParams","containsParams","ignored","containsTree","containsSegmentGroupHelper","containeePaths","containerPaths","containeeSegment","UrlTree","UrlSegmentGroup","_queryParamMap","DEFAULT_SERIALIZER","serialize","serializePaths","UrlSegment","parameterMap","_parameterMap","serializePath","UrlSerializer","DefaultUrlSerializer","UrlParser","parseRootSegment","parseQueryParams","parseFragment","serializeSegment","serializeQueryParams","strParams","encodeUriQuery","encodeUriFragment","mapChildrenIntoArray","childOutlet","encodeUriString","encodeUriSegment","decodeQuery","serializeMatrixParams","SEGMENT_RE","matchSegments","MATRIX_PARAM_SEGMENT_RE","QUERY_PARAM_RE","QUERY_PARAM_VALUE_RE","consumeOptional","peekStartsWith","parseChildren","parseQueryParam","parseSegment","parseParens","parseMatrixParams","parseParam","matchMatrixKeySegments","matchQueryParams","matchUrlQueryParamValue","decodedKey","decodedVal","currentVal","allowPrimary","outletName","createRoot","rootCandidate","squashSegmentGroup","newChildren","childCandidate","grandChildOutlet","grandChild","mergeTrivialChildren","isUrlTree","createSegmentGroupFromRoute","targetGroup","rootSegmentGroup","createSegmentGroupFromRouteRecursive","childOutlets","childSnapshot","createUrlTreeFromSegmentGroup","commands","computeNavigation","Navigation","numberOfDoubleDots","isAbsolute","cmdIdx","segmentPath","urlPart","partIndex","toRoot","findStartingPositionForTargetGroup","Position","modifier","isMatrixParams","createPositionApplyingDoubleDots","newSegmentGroup","processChildren","updateSegmentGroupChildren","updateSegmentGroup","isCommandWithOutlets","oldRoot","oldSegmentGroup","qp","replaceSegment","newRoot","oldSegment","newSegment","cmdWithOutlet","prefixedWith","currentCommandIndex","currentPathIndex","noMatch","pathIndex","commandIndex","compare","slicedCommands","createNewSegmentGroup","getOutlets","childrenOfEmptyChild","createNewSegmentChildren","IMPERATIVE_NAVIGATION","RouterEvent","navigationTrigger","restoredState","urlAfterRedirects","NavigationCancel","NavigationSkipped","NavigationError","RoutesRecognized","GuardsCheckStart","GuardsCheckEnd","shouldActivate","ResolveStart","ResolveEnd","RouteConfigLoadStart","RouteConfigLoadEnd","ChildActivationStart","routeConfig","ChildActivationEnd","ActivationStart","ActivationEnd","routerEvent","BeforeActivateRoutes","RedirectRequest","OutletContext","ChildrenOutletContexts","attachRef","onChildOutletCreated","childName","getOrCreateContext","onChildOutletDestroyed","onOutletDeactivated","onOutletReAttached","Tree","_root","pathFromRoot","findNode","siblings","findPath","TreeNode","nodeChildrenAsMap","RouterState","setRouterState","createEmptyState","rootComponent","createEmptyStateSnapshot","ActivatedRouteSnapshot","RouterStateSnapshot","emptyUrl","emptyParams","emptyData","emptyQueryParams","urlSubject","paramsSubject","queryParamsSubject","fragmentSubject","dataSubject","futureSnapshot","_futureSnapshot","_routerState","paramMap","_paramMap","inheritedParamsDataResolve","paramsInheritanceStrategy","inheritingStartingFrom","flattenInherited","_resolvedData","serializeNode","advanceActivatedRoute","nextSnapshot","shallowEqualArrays","equalParamsAndUrlSegments","equalUrlParams","equalSegments","RouterOutlet","_activatedRoute","activateEvents","deactivateEvents","attachEvents","detachEvents","parentContexts","inputBinder","INPUT_BINDER","supportsBindingToComponentInputs","activatedComponentRef","isTrackedInParentContexts","deactivate","initializeOutletWithName","unsubscribeFromRouteData","activateWith","isActivated","activatedRouteData","cmp","bindActivatedRouteToOutletComponent","childContexts","OutletInjector","RoutedComponentInputBinder","outletDataSubscriptions","subscribeToRouteData","dataSubscription","mirror","createNode","routeReuseStrategy","prevState","shouldReuseRoute","createOrReuseChildren","shouldAttach","detachedRouteHandle","retrieve","createActivatedRoute","NAVIGATION_CANCELING_ERROR","redirectingNavigationError","urlSerializer","navigationBehaviorOptions","navigationCancelingError","cancellationCode","isNavigationCancelingError$1","ɵEmptyOutletComponent","standardizeConfig","loadComponent","getOutlet","getClosestRouteInjector","_loadedInjector","ActivateRoutes","futureState","currState","forwardEvent","inputBindingEnabled","futureRoot","currRoot","deactivateChildRoutes","activateChildRoutes","futureNode","currNode","futureChild","childOutletName","deactivateRoutes","deactivateRouteAndItsChildren","shouldDetach","detachAndStoreRouteSubtree","deactivateRouteAndOutlet","activateRoutes","stored","CanActivate","CanDeactivate","getAllRouteGuards","getChildRouteGuards","getTokenOrFunctionIdentity","tokenOrFunction","ɵisInjectable","futurePath","checks","canDeactivateChecks","canActivateChecks","prevChildren","getRouteGuards","shouldRun","shouldRunGuardsAndResolvers","runGuardsAndResolvers","isEmptyError","INITIAL_VALUE","prioritizedGuardValue","redirectIfUrlTree","NoMatch","AbsoluteRedirect","noMatch$1","absoluteRedirect","newTree","ApplyRedirects","noMatchError","lineralizeSegments","applyRedirectCommands","applyRedirectCreateUrlTree","createSegmentGroup","createQueryParams","redirectToParams","actualParams","sourceName","updatedSegments","createSegments","redirectToSegments","actualSegments","findPosParam","findOrReturn","redirectToUrlSegment","consumedSegments","remainingSegments","positionalParamSegments","matchWithChecks","getOrCreateRouteInjectorIfNeeded","currentInjector","runCanMatchGuards","canMatch","canMatchObservables","injectionToken","isCanMatch","slicedSegments","containsEmptyPathMatchesWithNamedOutlets","emptyPathMatch","createChildrenForEmptyPaths","containsEmptyPathMatches","addEmptyPathsToChildrenIfNeeded","primarySegment","Recognizer","configLoader","rootComponentType","allowRedirects","applyRedirects","recognize","processSegmentGroup","freeze","rootNode","routeState","createUrlTreeFromSnapshot","inheritParamsAndData","routeNode","processSegment","sortedConfig","sortByMatchingOutlets","outletChildren","last$1","mergedChildren","mergeEmptyPathMatches","sortActivatedRouteSnapshots","processSegmentAgainstRoute","noLeftoversInUrl","rawSegment","isImmediateMatch","matchSegmentAgainstRoute","expandSegmentAgainstRouteUsingRedirect","expandWildCardWithParamsAgainstRouteUsingRedirect","expandRegularSegmentAgainstRouteUsingRedirect","newSegments","_loadedComponent","getResolve","getChildConfig","childInjector","matchedOnOutlet","_loadedRoutes","runCanLoadGuards","canLoad","canLoadObservables","isCanLoad","shouldLoadResult","cfg","canLoadFails","hasEmptyPathConfig","mergedNodes","duplicateEmptyPathNode","resultNode","mergedNode","hasStaticTitle","switchTap","nextResult","ROUTES","RouterConfigLoader","componentLoaders","childrenLoaders","compiler","onLoadStartListener","loadRunner","maybeUnwrapDefaultExport","onLoadEndListener","factoryOrRoutes","rawRoutes","requireStandaloneComponents","isWrappedDefaultExport","NavigationTransitions","hasRequestedNavigation","navigationId","currentNavigation","lastSuccessfulNavigation","transitionAbortSubject","rootContexts","afterPreactivation","handleNavigationRequest","setupNavigations","initialUrlTree","initialRouterState","currentUrlTree","currentRawUrl","currentBrowserUrl","extractedUrl","urlHandlingStrategy","extract","targetSnapshot","currentRouterState","targetRouterState","guards","guardsResult","overallTransitionState","initialUrl","previousNavigation","browserUrlTree","urlTransition","navigated","onSameUrlNavigation","shouldProcessUrl","serializer","recognize$1","finalUrl","routesRecognized","navStart","skipLocationChange","replaceUrl","guardsStart","checkGuards","runCanDeactivateChecks","futureRSS","currRSS","runCanDeactivate","currARS","canDeactivateObservables","closestInjector","isCanDeactivate","runCanActivateChecks","fireChildActivationStart","fireActivationStart","runCanActivateChild","futureARS","canActivateChildGuardsMapped","getCanActivateChild","canActivateChild","guardsMapped","isCanActivateChild","runCanActivate","canActivateObservables","isCanActivate","guardsEnd","cancelNavigationTransition","resolveStart","dataResolved","resolveData","canActivateChecksResolved","runResolve","resolveNode","getDataKeys","getResolver","resolvedData","resolveEnd","loadComponents","loaders","loadedComponent","createRouterState","titleStrategy","isRedirectingNavigationCancelingError$1","navCancel","isBrowserTriggeredNavigation","TitleStrategy","buildTitle","pageTitle","getResolvedTitleForRoute","DefaultTitleStrategy","RouteReuseStrategy","DefaultRouteReuseStrategy","BaseRouteReuseStrategy","detachedTree","ɵDefaultRouteReuseStrategy_BaseFactory","ROUTER_CONFIGURATION","UrlHandlingStrategy","DefaultUrlHandlingStrategy","newUrlPart","wholeUrl","NavigationResult","COMPLETE","FAILED","REDIRECTING","afterNextNavigation","defaultMalformedUriErrorHandler","exactMatchOptions","subsetMatchOptions","navigationTransitions","browserPageId","canceledNavigationResolution","currentPageId","ɵrouterPageId","disposed","ɵConsole","isNgZoneEnabled","malformedUriErrorHandler","lastSuccessfulId","urlUpdateStrategy","componentInputBindingEnabled","eventsSubscription","resetConfig","rawUrlTree","routerState","subscribeToNavigationEvents","isPublicRouterEvent","setBrowserUrl","restoreHistory","mergedTree","scheduleNavigation","resetRootComponentType","initialNavigation","setUpLocationChangeListener","navigateToSyncWithBrowser","locationSubscription","stateCopy","serializeUrl","getCurrentNavigation","navigationExtras","preserveFragment","relativeToUrlSegmentGroup","removeEmptyProps","validateCommands","matchOptions","priorPromise","generateNgRouterState","restoringFromCaughtError","targetPagePosition","resetState","resetUrlToCurrentUrlTree","routerPageId","tabIndexAttribute","onChanges","isAnchorElement","updateHref","setTabIndexIfNotOnNativeEl","newTabIndex","applyAttributeValue","routerLink","onClick","sanitizedValue","RouterLinkActive","_isActive","routerLinkActiveOptions","isActiveChange","routerEventsSubscription","links","subscribeToEachLinkOnChanges","linkInputChangesSubscription","allLinkChanges","isLinkActive","routerLinkActive","hasActiveLinks","ariaCurrentWhenActive","isActiveMatchOptions","isActiveCheckFn","PreloadingStrategy","RouterPreloader","preloadingStrategy","setUpPreloading","processRoutes","injectorForCurrentRoute","injectorForChildren","preloadConfig","loadedChildren$","recursiveLoadChildren$","loadComponent$","ROUTER_SCROLLER","RouterScroller","viewportScroller","lastId","lastSource","restoredId","scrollPositionRestoration","anchorScrolling","createScrollEvents","scrollEventsSubscription","consumeScrollEvents","scheduleScrollEvent","routerFeature","getBootstrapListener","bootstrappedComponentRef","bootstrapDone","BOOTSTRAP_DONE","INITIAL_NAVIGATION","ROUTER_PRELOADER","withPreloading","ROUTER_FORROOT_GUARD","ROUTER_PROVIDERS","rootRoute","routerNgProbeToken","provideForRootGuard","useHash","provideInitialNavigation","bindToComponentInputs","ROUTER_INITIALIZER","locationInitialized","race","raceInit","withLatestFrom","otherValues","ready","NgbAccordion_ng_template_0_ng_template_2_Template","NgbAccordion_ng_template_0_Template","panel_r3","titleTpl","NgbAccordion_ng_template_2_ng_template_2_Template","NgbAccordion_ng_template_2_div_3_ng_template_2_Template","NgbAccordion_ng_template_2_div_3_Template","panel_r5","panelDiv","contentTpl","a0","NgbAccordion_ng_template_2_Template","cardClass","headerTpl","transitionRunning","NgbDatepickerNavigationSelect_option_2_Template","m_r4","getMonthFullName","NgbDatepickerNavigationSelect_option_5_Template","y_r5","getYearNumerals","NgbDatepickerNavigation_ngb_datepicker_navigation_select_3_Template","selectBoxes","NgbDatepickerNavigation_4_ng_template_0_div_0_Template","NgbDatepickerNavigation_4_ng_template_0_div_3_Template","NgbDatepickerNavigation_4_ng_template_0_Template","month_r5","i_r6","getMonthLabel","firstDate","NgbDatepickerNavigation_4_Template","_c29","_c30","NgbDatepicker_ng_template_0_Template","currentMonth_r9","currentMonth","selected_r10","disabled_r11","focused_r12","focused","NgbDatepicker_ng_template_2_div_0_div_1_Template","month_r14","NgbDatepicker_ng_template_2_div_0_Template","NgbDatepicker_ng_template_2_Template","NgbDatepicker_ngb_datepicker_navigation_5_Template","onNavigateEvent","onNavigateDateSelect","prevDisabled","nextDisabled","NgbDatepicker_ng_template_8_Template","NgbDatepicker_ng_template_9_Template","NgbDatepickerMonth_div_0_div_1_Template","getWeekLabel","NgbDatepickerMonth_div_0_div_2_Template","weekday_r4","NgbDatepickerMonth_div_0_Template","NgbDatepickerMonth_ng_template_1_div_0_div_1_Template","week_r5","getWeekNumerals","NgbDatepickerMonth_ng_template_1_div_0_div_2_ng_template_1_ng_template_0_Template","NgbDatepickerMonth_ng_template_1_div_0_div_2_ng_template_1_Template","day_r10","NgbDatepickerMonth_ng_template_1_div_0_div_2_Template","ariaLabel","NgbDatepickerMonth_ng_template_1_div_0_Template","NgbDatepickerMonth_ng_template_1_Template","collapsed","_c31","NgbPagination_ng_template_0_Template","NgbPagination_ng_template_2_Template","NgbPagination_ng_template_4_Template","NgbPagination_ng_template_6_Template","NgbPagination_ng_template_8_Template","NgbPagination_ng_template_10_span_1_Template","NgbPagination_ng_template_10_Template","page_r19","currentPage_r20","currentPage","NgbPagination_ng_template_12_li_0_a_1_ng_template_1_Template","_c42","NgbPagination_ng_template_12_li_0_a_1_Template","page_r22","tplEllipsis","NgbPagination_ng_template_12_li_0_a_2_ng_template_1_Template","_c43","a2","NgbPagination_ng_template_12_li_0_a_2_Template","pageNumber_r26","selectPage","disabled_r24","tplNumber","NgbPagination_ng_template_12_li_0_Template","isEllipsis","NgbPagination_ng_template_12_Template","pages","NgbPagination_li_15_ng_template_2_Template","_c46","NgbPagination_li_15_Template","previousDisabled","tplFirst","NgbPagination_li_16_ng_template_2_Template","_c49","NgbPagination_li_16_Template","tplPrevious","NgbPagination_ng_template_17_Template","NgbPagination_li_18_ng_template_2_Template","NgbPagination_li_18_Template","tplNext","NgbPagination_li_19_ng_template_2_Template","NgbPagination_li_19_Template","_r49","ctx_r48","pageCount","tplLast","_c54","NgbPopoverWindow_h3_1_ng_template_1_Template","NgbPopoverWindow_h3_1_ng_template_3_Template","NgbPopoverWindow_h3_1_Template","isTitleTemplate","NgbTimepicker_button_3_Template","changeHour","isSmallSize","isLargeSize","NgbTimepicker_button_5_Template","NgbTimepicker_button_9_Template","changeMinute","NgbTimepicker_button_11_Template","NgbTimepicker_div_12_Template","NgbTimepicker_div_13_button_1_Template","changeSecond","NgbTimepicker_div_13_button_3_Template","NgbTimepicker_div_13_Template","updateSecond","formatInput","formatMinSec","readonlyInputs","NgbTimepicker_div_14_Template","NgbTimepicker_div_15_ng_container_2_Template","getAfternoonPeriod","NgbTimepicker_div_15_ng_template_3_Template","getMorningPeriod","NgbTimepicker_div_15_Template","toggleMeridian","NgbToast_ng_template_0_Template","NgbToast_ng_template_2_ng_template_1_Template","NgbToast_ng_template_2_Template","contentHeaderTpl","NgbHighlight_ng_template_0_span_0_Template","part_r1","highlightClass","NgbHighlight_ng_template_0_ng_template_1_Template","NgbHighlight_ng_template_0_Template","isOdd_r2","NgbTypeaheadWindow_ng_template_0_Template","term_r4","formatter_r5","NgbTypeaheadWindow_ng_template_2_ng_template_1_Template","_c87","NgbTypeaheadWindow_ng_template_2_Template","idx_r7","markActive","result_r6","activeIdx","resultTemplate","isDefined","hasClassName","reflow","removeAccents","transitionTimerDelayMs","noopFn","runningTransitions","ngbRunTransition","startFn","running","runningTransition","transition$","endFn","runInZone","finishTransition$","stop$","endWith","transitionDurationMs","getTransitionDurationMs","transitionDelay","transitionEnd$","timer$","ngbCollapsingTransition","setInitialClasses","measureCollapsingElementHeightPx","hasShownClass","NgbConfig","NgbAccordionConfig","_ngbConfig","_animation","nextId$4","NgbPanelHeader","NgbPanelTitle","NgbPanelContent","NgbPanel","initClassDone","titleTpls","headerTpls","contentTpls","NgbRefDirective","_El","ngbRef","NgbAccordion","_changeDetector","closeOtherPanels","_changeOpenState","_findPanelById","_closeOthers","_updateActiveIds","panelElement","_runTransitions","enableTransition","NgbPanelToggle","accordion","ngbPanelToggle","NgbAlertModule","NgbButtonsModule","NgbCarouselModule","NgbCollapseConfig","NgbCollapse","ngbCollapseChange","_runTransition","_runTransitionWithEvents","NgbCollapseModule","isChangedDate","dateComparator","isChangedMonth","checkDateInRange","isDateSelectable","fromJSDate","jsDate","toJSDate","NGB_DATEPICKER_CALENDAR_FACTORY","NgbCalendarGregorian","getDaysPerWeek","getMonths","getWeeksPerMonth","getNext","checkMonth","expectedMonth","getPrev","getWeekNumber","getToday","ɵNgbCalendarGregorian_BaseFactory","getDayNumerals","weekNumber","NGB_DATEPICKER_18N_FACTORY","NgbDatepickerI18nDefault","_monthsFull","getWeekdayLabel","weekdaysStartingOnSunday","getDayAriaLabel","NgbDatepickerService","_i18n","_VALIDATORS","dayTemplateData","focusVisible","toValidDate","weekdayWidth","weekdaysVisible","_model$","_dateSelect$","lastDate","focusDate","model$","dateSelect$","_nextState","focusedDate","focusSelect","struct","newState","_patchContexts","checkMinBeforeMax","buildMonths","force","monthsToReuse","firstDates","reusedIndex","buildMonth","calendarToday","getFirstViewDate","daysPerWeek","firstMonthDate","dayOfWeek","weekObject","nextDate","contextUserData","dayObject","currentYear","yearChanged","monthChanged","generateSelectBoxYears","numbers","generateSelectBoxMonths","prevMonthDisabled","prevDate","nextMonthDisabled","NavigationEvent","PREV","NgbDatepickerConfig","NGB_DATEPICKER_DATE_ADAPTER_FACTORY","NgbDateStructAdapter","ɵNgbDateStructAdapter_BaseFactory","NgbDatepickerDayView","isMuted","NgbDatepickerNavigationSelect","_month","_year","changeMonth","changeYear","monthSelect","yearSelect","i18n_13","i18n_15","i18n_17","i18n_19","NgbDatepickerNavigation","onClickPrev","onClickNext","showSelect","i18n_21","i18n_23","i18n_25","i18n_27","Key","Tab","Escape","PageUp","PageDown","End","Home","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","NgbDatepickerKeyboardService","processKey","which","NgbDatepickerContent","_service","_ngbDateAdapter","_controlValue","_destroyed$","_publicState","dateSelect","oldDate","navigationPrevented","newSelectedDate","newFocusedDate","oldFocusedDate","elementToFocus","focusIns$","_contentEl","focusOuts$","relatedTarget","_defaultDayTemplate","onDateSelect","NgbDatepickerMonth","_keyboardService","onKeyDown","isContainedIn","matchesSelectorIfAny","isMobile","maxTouchPoints","ngbAutoClose","closed$","insideElements","insideSelector","wrapAsyncForMobile","escapes$","mouseDowns$","closeableClicks$","shouldClose","FOCUSABLE_ELEMENTS_SELECTOR","getFocusableBoundaryElements","placementSeparator","positionService","Positioning","getStyle","isStaticPositioned","offsetParent","offsetParentEl","elPosition","parentOffset","clientTop","clientLeft","elBcr","viewportOffset","elOffset","positionElements","targetElement","appendToBody","placementPrimary","placementSecondary","hostElPosition","targetElStyles","marginTop","marginBottom","marginLeft","marginRight","topPosition","leftPosition","targetElBCR","windowHeight","windowWidth","baseClass","placementVals","allowedPlacements","addClassesToTarget","targetPlacement","placementToRemove","hasAuto","testPlacement","isInViewport","addedClasses","NGB_DATEPICKER_PARSER_FORMATTER_FACTORY","NgbDateISOParserFormatter","dateParts","ɵNgbDateISOParserFormatter_BaseFactory","_fromNativeDate","_toNativeDate","ɵNgbDateNativeAdapter_BaseFactory","NgbDropdownConfig","NgbNavbar","NgbDropdownItem","menuItems","NgbDropdownAnchor","NgbDropdownToggle","ngbNavbar","_closed$","_bodyContainer","openChange","_zoneSubscription","_positionMenu","_applyPlacementClasses","_setCloseHandlers","_applyContainer","_applyCustomDropdownClass","_anchor","_menu","_resetContainer","itemElements","_getMenuElements","itemElement","isEventFromToggle","_isEventFromToggle","_isDropup","focusableElements","_getFirstPlacement","dropdownMenuElement","bodyContainer","oldClass","ContentRef","PopupService","_type","_applicationRef","_windowRef","_contentRef","_getContentRef","windowRef","NgbModalBackdrop","NgbModalRef","_windowCmptRef","_backdropCmptRef","_beforeDismiss","_closed","_dismissed","_hidden","dismissEvent","dismissed","_removeModalElements","_dismiss","windowTransition$","backdropTransition$","ModalDismissReasons","BACKDROP_CLICK","ESC","NgbModalWindow","_elRef","_elWithFocus","_show","_disableEventHandling","dialogTransition$","_dialogEl","transitions$","_restoreFocus","_enableEventHandling","_setFocus","_bumpBackdrop","autoFocusable","firstFocusable","elWithFocus","ariaLabelledBy","ariaDescribedBy","modalDialogClass","ScrollBar","scrollbarWidth","bodyStyle","paddingRight","actualPadding","NgbModalStack","_scrollBar","_rendererFactory","_activeWindowCmptHasChanged","_ariaHiddenValues","_scrollBarRestoreFn","_backdropAttributes","_modalRefs","_windowAttributes","_windowCmpts","_activeInstances","activeWindowCmpt","ngbFocusTrap","stopFocusTrap$","refocusOnClick","lastFocusedElement$","tabEvent","focusedElement","lastFocusedElement","_revertAriaHidden","_setAriaHidden","_restoreScrollBar","scrollBarRestoreFn","_hideScrollBar","moduleCFR","contentInjector","containerEl","contentRef","backdropCmptRef","_attachBackdrop","windowCmptRef","_attachWindowComponent","ngbModalRef","_registerModalRef","_registerWindowCmpt","_applyWindowOptions","_applyBackdropOptions","activeInstances","windowInstance","optionName","backdropInstance","_createFromTemplateRef","_createFromString","_createFromComponent","contentCmptFactory","modalContentInjector","componentNativeEl","sibling","unregisterModalRef","ngbWindowCmpt","NgbModalConfig","NgbModal","_moduleCFR","_modalStack","combinedOptions","NgbNavModule","NgbPaginationConfig","boundaryLinks","directionLinks","ellipses","NgbPaginationEllipsis","NgbPaginationFirst","NgbPaginationLast","NgbPaginationNext","NgbPaginationNumber","NgbPaginationPrevious","NgbPaginationPages","NgbPagination","hasPrevious","hasNext","pageNumber","_updatePages","_applyEllipses","_applyRotation","leftOffset","_applyPagination","_setPageInRange","newPageNo","prevPageNo","getValueInRange","collectionSize","newPage","tplPages","i18n_34","i18n_36","i18n_38","i18n_40","i18n_44","i18n_47","i18n_50","i18n_52","NgbPaginationModule","Trigger","isManual","DEFAULT_ALIASES","delayOrNoop","listenToTriggers","isOpenedFn","openFn","closeFn","parsedTriggers","parseTriggers","trimmedTriggers","triggerPair","manualTriggers","observeTriggers","toggleFn","unsubscribeFn","triggerDelay","filteredInput$","currentlyOpen","delayedOpen$","delayedClose$","NgbPopoverConfig","disablePopover","nextId$1","NgbPopoverWindow","popoverClass","NgbPopover","_ngbPopoverWindowId","_popupService","_isDisabled","ngbPopover","popoverTitle","_unregisterListenersFn","NgbProgressbarModule","NgbRatingModule","NgbTime","updateHour","updateMinute","checkSecs","NgbTimepickerConfig","NGB_DATEPICKER_TIME_ADAPTER_FACTORY","NgbTimeStructAdapter","ɵNgbTimeStructAdapter_BaseFactory","NgbTimepickerI18n","NGB_TIMEPICKER_I18N_FACTORY","NgbTimepickerI18nDefault","_periods","FILTER_REGEX","NgbTimepicker","_ngbTimeAdapter","_hourStep","_minuteStep","_secondStep","structValue","propagateModelChange","newVal","enteredHour","formatHour","i18n_57","i18n_59","i18n_61","i18n_63","i18n_65","i18n_67","i18n_69","i18n_71","i18n_73","i18n_75","i18n_77","i18n_79","i18n_81","i18n_83","ngbToastFadeInTransition","ngbToastFadeOutTransition","NgbToastConfig","ariaLive","NgbToastHeader","NgbToast","_clearTimeout","_timeoutID","i18n_85","NgbTooltipConfig","NgbTooltipWindow","NgbTooltip","_ngbTooltipWindowId","ngbTooltip","_ngbTooltip","NgbHighlight","accentSensitive","terms","prepareTerm","escapedTerms","regExpEscape","toSplit","NgbTypeaheadWindow","focusFirst","selectEvent","activeChangeEvent","hasActive","getActive","_activeChanged","resetActive","popupClass","NgbTypeaheadConfig","editable","showHint","ARIA_LIVE_DELAY","ARIA_LIVE_DELAY_FACTORY","getLiveElement","lazyCreate","Live","say","setText","nextWindowId","NgbTypeahead","_live","_inputValueBackup","selectItem","activeDescendant","popupId","_onTouched","_valueChanges","_resubscribeTypeahead","isPopupOpen","_subscribeToUserInput","ngbTypeahead","_unsubscribeFromUserInput","_closePopup","_writeInputValue","_formatItemForInput","dismissPopup","_showHint","_selectResult","_openPopup","_selectResultClosePopup","userInputLowerCase","formattedVal","inputFormatter","results$","resultFormatter","NGB_MODULES","NgDropdownPanelComponent_div_0_Template","filterValue","NgDropdownPanelComponent_div_8_Template","NgSelectComponent_ng_container_4_div_1_ng_template_1_Template","escapeHTML","NgSelectComponent_ng_container_4_div_1_ng_template_3_Template","NgSelectComponent_ng_container_4_div_1_Template","clearItem","NgSelectComponent_ng_container_4_Template","trackByOption","NgSelectComponent_5_ng_template_0_Template","NgSelectComponent_5_Template","selectedValues","NgSelectComponent_ng_container_9_ng_template_1_Template","NgSelectComponent_ng_container_9_ng_template_3_Template","NgSelectComponent_ng_container_9_Template","NgSelectComponent_span_10_Template","NgSelectComponent_ng_dropdown_panel_13_div_2_ng_template_1_Template","item_r24","NgSelectComponent_ng_dropdown_panel_13_div_2_ng_template_3_Template","a3","item$","NgSelectComponent_ng_dropdown_panel_13_div_2_Template","toggleItem","onItemHover","itemsList","markedItem","htmlId","NgSelectComponent_ng_dropdown_panel_13_div_3_ng_template_1_Template","NgSelectComponent_ng_dropdown_panel_13_div_3_ng_template_3_Template","NgSelectComponent_ng_dropdown_panel_13_div_3_Template","unmarkItem","selectTag","NgSelectComponent_ng_dropdown_panel_13_ng_container_4_ng_template_1_Template","NgSelectComponent_ng_dropdown_panel_13_ng_container_4_ng_template_3_Template","NgSelectComponent_ng_dropdown_panel_13_ng_container_4_Template","NgSelectComponent_ng_dropdown_panel_13_ng_container_5_ng_template_1_Template","NgSelectComponent_ng_dropdown_panel_13_ng_container_5_ng_template_3_Template","NgSelectComponent_ng_dropdown_panel_13_ng_container_5_Template","NgSelectComponent_ng_dropdown_panel_13_ng_container_6_ng_template_1_Template","NgSelectComponent_ng_dropdown_panel_13_ng_container_6_ng_template_3_Template","NgSelectComponent_ng_dropdown_panel_13_ng_container_6_Template","_r44","NgSelectComponent_ng_dropdown_panel_13_Template","viewPortItems","filteredItems","showAddTag","showNoItemsFound","showTypeToSearch","unescapedHTMLExp","hasUnescapedHTMLExp","htmlEscapes","NgItemLabelDirective","ngItemLabel","newId","diacritics","stripSpecialChars","ItemsList","_ngSelect","_selectionModel","_items","_filteredItems","_markedIndex","markedIndex","noItemsToSelect","maxItemsSelected","lastSelectedItem","setItems","mapItem","_groups","_groupBy","_flatten","clearSelected","_hideSelected","_showSelected","findItem","findBy","resolveNested","keepDisabled","marked","resetFilteredItems","findByLabel","_defaultSearchFn","markNextItem","_stepToItem","markPreviousItem","markItem","markSelectedOrDefault","markDefault","lastMarkedIndex","_getLastMarkedIndex","$ngOptionLabel","$ngOptionValue","mapSelectedItems","_getNextItemIndex","isFnKey","keyFn","isGroupByFn","withoutGroup","isObjectKey","groupValue","Backspace","NgDropdownPanelService","_dimensions","itemHeight","panelHeight","itemsPerViewport","dimensions","calculateItems","scrollPos","itemsLength","indexByScrollTop","maxStart","topPadding","setDimensions","getScrollTo","itemTop","lastScroll","itemBottom","CSS_POSITIONS","NgDropdownPanelComponent","_panelService","outsideClick","_destroy$","_scrollToEndFired","_updateScrollHeight","_lastScrollPosition","_dropdown","currentPosition","_currentPosition","_itemsLength","_onItemsLengthChanged","_startOffset","_virtualPadding","paddingElementRef","_scrollablePanel","scrollElementRef","_contentPanel","contentElementRef","_handleScroll","_handleOutsideClick","_appendDropdown","_setupMousedownListener","_onItemsChange","startFromOption","scrollToTag","adjustPosition","_updateYPosition","_handleDropdownPosition","_calculateCurrentPosition","_updateDropdownClass","REMOVE_CSS_CLASS","ADD_CSS_CLASS","_onContentScrolled","_checkToClose","_updateItemsRange","_setVirtualHeight","_updateItems","_measureDimensions","_renderItemsRange","_fireScrollToEnd","_updateVirtualHeight","optionHeight","dropdownEl","selectRect","_updateXPosition","stateChange$","_previousLabel","NgSelectConfig","disableVirtualScroll","openOnEnter","ConsoleService","SELECTION_MODEL_FACTORY","autoFocus","newSelectionModel","useDefaultClass","_defaultLabel","_pressedKeys","_isComposing","_keyPress$","_mergeGlobalConfig","_itemsAreUsed","_clearSearchOnAdd","_editableSearchTerm","currentPanelPosition","dropdownPanel","_handleKeyPresses","_setInputAttributes","_setItems","_manualOpen","_setItemsFromNgOptions","handleKeyCode","_handleArrowDown","_handleArrowUp","_handleSpace","_handleEnter","_handleTab","_handleBackspace","handleMousedown","handleClearClick","handleArrowClick","_updateNgModel","_clearSearch","_onSelectionChanged","clearModel","_handleWriteValue","_isTypeahead","_setSearchTermFromItems","searchInput","_primitive","handleTag","showClear","_validTerm","onCompositionStart","onCompositionEnd","onInputFocus","onInputBlur","firstItem","mapNgOptions","handleOptionChange","changedOrDestroyed","_isValidWriteValue","validateBinding","isValObject","letter","_scrollToMarked","autocorrect","autocapitalize","_changeSearch","_scrollToTag","_nextItemIsTag","nextIndex","DefaultSelectionModelFactory","DefaultSelectionModel","groupAsModel","childrenCount","_setChildrenSelectedState","_removeChildren","_activeChildren","ɵNG_PIPE_DEF","DESTROY","DECORATOR_APPLIED","getSymbol","destroyMethodName","createSubjectOnTheInstance","completeSubjectOnTheInstance","decorateNgOnDestroy","arrayName","unsubscribeIfPropertyIsArrayLike","checkProperties","blackList","decorateProviderDirectiveOrComponent","decoratePipe","markAsDecorated","CheckerHasBeenSet","NG_DEV_MODE","overrideNonDirectiveInstanceMethod","originalDestroy","ensureClassIsDecorated","destroy$","setupSubjectUnsubscribedChecker","isAngularInTestMode","__karma__","jasmine","jest","Mocha","lContext","ɵgetLContext","cleanupHasBeenExecuted$","createMessage","_toPropertyKey","_toPrimitive","prim","toPrimitive","_objectSpread","consoleLogger","baseLogger","Logger","concreteLogger","debugOnly","makeString","getLastOfPath","Empty","cleanKey","canNotTraverseDeeper","setPath","_getLastOfPath","_getLastOfPath3","getPathWithDefaults","defaultData","deepExtend","_entityMap","isIE10","deepFind","keySeparator","mix","joinedPath","ResourceStore","_EventEmitter","ignoreJSONStructure","silent","addNamespaces","resources","addResource","deep","pack","hasResourceBundle","removeNamespaces","getResource","compatibilityAPI","postProcessor","addPostProcessor","translator","checkedLoadedFor","Translator","nsSeparator","nestingRegexp","lastKey","overloadTranslationOptionHandler","_this$extractFromKey","extractFromKey","appendNamespaceToCIMode","resUsedKey","usedKey","resExactUsedKey","exactUsedKey","resType","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","returnObjects","returnedObjectHandler","resTypeIsArray","newKeyToUse","deepKey","translate","extendTranslation","usedDefault","needsPluralHandling","defaultValueSuffix","pluralResolver","getSuffix","isValidLookup","resForMissing","missingKeyNoValueFallbackToKey","updateMissing","fk","lngs","fallbackLngs","getFallbackCodes","saveMissingTo","missingKeyHandler","saveMissing","saveMissingPlurals","getSuffixes","appendNamespaceToMissingKey","parseMissingKeyHandler","usedLng","usedNS","skipInterpolation","nestBef","skipOnVariables","nb","defaultVariables","nest","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","extracted","fallbackNS","needsContextHandling","codes","utils","hasLoadedNamespace","pluralSuffix","possibleKey","finalKey","finalKeys","addLookupKeys","contextSeparator","returnNull","resourceStore","LanguageUtil","supportedLngs","formatLanguageCode","specialCases","lowerCaseLng","cleanCode","isSupportedCode","nonExplicitSupportedLngs","getLanguagePartFromCode","cleanedLng","lngOnly","supportedLng","fallbacks","getScriptPartFromCode","fallbackCode","fallbackCodes","addCode","_rulesPluralsTypes","PluralResolver","createRules","plurals","getRule","noAbs","simplifyPluralSuffix","returnSuffix","compatibilityJSON","Interpolator","iOpts","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapePrefix","unescapeSuffix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","regexpStr","regexpUnescapeStr","regexpUnescape","nestingRegexpStr","replaces","regexSafe","handleFormat","interpolationkey","missingInterpolationHandler","todos","safeValue","todo","clonedOptions","handleHasOptions","inheritedOptions","optionsString","formatters","doReduce","Connector","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","addResourceBundle","pushPath","_getLastOfPath2","what","fcName","tried","queueLoad","loadOne","prepareLoading","isUpdate","transformOptions","nonExplicitWhitelist","esm_i18next","I18n","isClone","initImmediate","createClassOnDemand","ClassOrObject","pluralSeparator","partialBundledLanguages","tDescription","_format","languageDetector","detection","_this2$store","_this2$store2","deferred","initializedStoreOnce","changeLanguage","usedCallback","isLanguageChangingTo","setLng","getBestMatchFromCodes","loadResources","keyPrefix","fixedT","resultKey","_this$translator","_this$translator2","exists","_this6","lastLng","loadNotPending","loadState","precheck","preResult","_this7","preloaded","newLngs","_this8","mergedOptions","membersToCopy","I18NEXT_SCOPE","I18NEXT_ERROR_HANDLING_STRATEGY","I18NEXT_INSTANCE","translateI18Next","prepareOptions","i18nOpts","prependScope","prependNamespace","nsSep","keySep","keysWithScope","keyContainsNsSeparator","joinStrings","keysWithNamespace","static","I18NextCapPipe","I18NextEagerPipe","lastOptions","ngUnsubscribe","languageChanged","hasKeyChanged","hasOptionsChanged","NativeErrorHandlingStrategy","I18NextFormatPipe","I18NextEvents","failedLoading","missingKey","i18nextGlobal$1","I18NextService","errorHandlingStrategy","resolvedLanguage","i18nextInstance","defaultValueOrOptions","hasDefault","subscribeEvents","getFixedT","setDefaultNamespace","loadNamespaces","loadLanguages","getDataByLanguage","reloadResources","addResources","getResourceBundle","removeResourceBundle","I18NextTitle","i18nextPipe","activatedRouteSnapshot","routerStateSnapshot","i18nextNamespaceResolverFactory","i18nextGlobal","errHandle","interpolationFormat","customFormat","formatDelegate","formatedValue","IMaskFactory","MASKEDINPUT_VALUE_ACCESSOR","DEFAULT_IMASK_ELEMENT","_factory","_viewInitialized","_writing","maskValue","maskRef","imask","initMask","destroyMask","beginWrite","_writingValue","endWrite","_onAccept","_onComplete","DefaultImaskFactory","IMaskDirectiveModule","QRCodeComponent","allowEmptyString","colorDark","colorLight","elementType","qrdata","qrCodeURL","createQRCode","isValidQrCodeText","qrCodeConfig","toCanvas","toSVG","renderElement","qrcElement","centerImageSrc","imageSrc","centerImageHeight","imageHeight","centerImageWidth","imageWidth","canvasElement","centerImage","drawImage","emitQRCodeURL","svgParentElement","svgString","svgElement","imgElement","dataUrl","SVGSVGElement","urlSvg","urlSanitized","urlImage","HTMLCanvasElement","HTMLImageElement","urlResponse","NgLetDirective","ngLet","hasView","IconSpriteComponent_ng_container_0__svg_title_2_Template","IconSpriteComponent_ng_container_0_Template","IconSpriteComponent_ng_container_1__svg_title_2_Template","IconSpriteComponent_ng_container_1_Template","attribute","IconSpriteComponent_ng_container_2__svg_title_2_Template","IconSpriteComponent_ng_container_2_Template","viewBox","preserveAspectRatio","IconSpriteComponent_ng_container_3__svg_title_2_Template","IconSpriteComponent_ng_container_3_Template","IconSpriteConfig","IconSpriteService","spritePath","IconSpriteDirective","IconSpriteComponent","iconSpriteService","defaultThrottleConfig","resolveContainerElement","defaultElement","fromRoot","hasWindow","findElement","customRoot","inputPropChanged","VerticalProps","HorizontalProps","AxisResolver","propsMap","clientHeightKey","offsetHeightKey","scrollHeightKey","pageYOffsetKey","offsetTopKey","scrollTopKey","topKey","isElementWindow","windowElement","getDocumentElement","isContainerWindow","calculatePoints","extractHeightForElement","isWindow","extractHeightPropKeys","getElementHeight","calculatePointsForWindow","getElementPageYOffset","nativeElementHeight","totalToScroll","getElementOffsetTop","calculatePointsForElement","docElem","shouldFireScrollEvent","distance","down","scrollingDown","containerBreakpoint","scrolledUntilNow","ScrollState","lastScrollPosition","lastTotalToScroll","triggered","updateScrollPosition","updateTotalToScroll","updateScroll","updateTriggeredFlag","isScrollingDown","isTriggeredScroll","createScroller","createResolver","createResolverWithContainer","scrollState","upDistance","downDistance","attachScrollEvent","duration$","sendValue","throttled","endThrottling","cleanupThrottling","startThrottle","positionStats","toInfiniteScrollParams","scrollDown","fire","getScrollStats","isScrollingDownwards","shouldTriggerEvents","alwaysCallback","isTriggeredCurrentTotal","toInfiniteScrollAction","InfiniteScrollActions","DOWN","UP","currentScrollPosition","InfiniteScrollDirective","scrolledUp","infiniteScrollUpDistance","infiniteScrollDisabled","infiniteScrollContainer","immediateCheck","setup","containerChanged","disabledChanged","distanceChanged","shouldSetup","destroyScroller","hasWindowDefined","disposeScroller","handleOnScroll","float32ArraySupported","Float32Array","aA1","aA2","calcBezier","aT","getSlope","LinearEasing","bezier","mX1","mY1","mX2","mY2","sampleValues","getTForX","aX","intervalStart","currentSample","kSplineTableSize","guessForT","initialSlope","newtonRaphsonIterate","aGuessT","currentSlope","binarySubdivide","aA","aB","currentX","currentT","SMOOTH_SCROLL_OPTIONS","SmoothScrollManager","_now","customDefaultOptions","_onGoingScrolls","_defaultOptions","x1","y1","x2","y2","_scrollElement","_getElement","_initSmoothScroll","_isFinished","currentY","_interrupted","_destroy","elapsed","startY","currContext","scrollableEl","targetEl","NgScrollbar_ng_container_5_scrollbar_x_1_Template","isHorizontallyScrollable","verticalUsed","NgScrollbar_ng_container_5_scrollbar_y_2_Template","isVerticallyScrollable","horizontalUsed","NgScrollbar_ng_container_5_Template","NgAttr","ngAttr","preventSelection","onselectstart","enableSelection","isWithinBounds","ScrollViewport","scrollMaxX","scrollMaxY","contentHeight","contentWrapperElement","contentWidth","viewPort","activatePointerEvents","propagate","hovered","mouseMoveStream","mouseMove","mouseLeave","clicked","mouseDown","mouseUp","setAsWrapper","firstElementChild","setAsViewport","customClassName","scrollYTo","scrollXTo","NgScrollbarBase","TrackAdapter","trackElement","mouseup","clientRect","onTrackClicked","thumbSize","scrollSize","pageProperty","pageOffset","mapToScrollToOption","trackClickScrollDuration","TrackXDirective","TrackYDirective","ThumbAdapter","trackMax","thumbElement","_dragging","dragging","calculateThumbSize","trackSize","contentSize","minThumbSize","viewportScrollSize","calculateThumbPosition","scrollMax","viewportScrollOffset","viewportScrollMax","handleDirection","dragged","trackMaxStart","scrollMaxStart","dragStart","setDragging","dragEnd","dragStartOffset","mouseDownOffset","clientProperty","mouseOffset","handleDrag","ThumbXDirective","horizontalDragging","ThumbYDirective","verticalDragging","Scrollbar","thumbDragEvent","trackClickEvent","trackHoveredEvent","pointerEventsMethod","viewportTrackClicked","viewportThumbClicked","viewportPropagateMouseMove","thumb","setClicked","setHovered","mouseEnter","pointerEventsDisabled","ScrollbarY","verticalHovered","trackClass","thumbClass","ScrollbarX","horizontalHovered","NG_SCROLLBAR_OPTIONS","viewClass","windowResizeDebounce","sensorDebounce","scrollAuditTime","autoHeightDisabled","autoWidthDisabled","sensorDisabled","ScrollbarManager","globalOptions","NativeScrollbarSizeFactory","_scrollbarSize","getNativeScrollbarSize","scrollbarSize","box","HideNativeScrollbar","hideNativeScrollbar","_subscriber","ResizeSensor","scrollbar","_resizeObserver","NgScrollbar","_sensorDisabled","_pointerEventsDisabled","_viewportPropagateMouseMove","_autoHeightDisabled","_autoWidthDisabled","smoothScroll","setState","deactivated","getScrolledByDirection","scrollbarClicked","customViewPort","defaultViewPort","scrollStream","verticalScrolled","horizontalScrolled","updateHeight","updateWidth","scrollbarX","scrollbarY","i2$1","asyncGeneratorStep","gen","_throw","__assign","decorators","decorate","paramIndex","__metadata","metadataKey","metadataValue","_arguments","generator","fulfilled","throw","adopt","__spreadArray","verb","resume","fulfill","settle","__values","SuppressedError"],"sourceRoot":"webpack:///","sources":["./libs/i18n/src/lib/namespaces.ts","./libs/mbs-ui-kit/accordion/accordion.component.ts","./libs/mbs-ui-kit/accordion/accordion.component.html","./libs/mbs-ui-kit/accordion/accordion.module.ts","./libs/mbs-ui-kit/advanced-search/advanced-search-parser.ts","./libs/mbs-ui-kit/advanced-search/advanced-search.component.html","./libs/mbs-ui-kit/advanced-search/advanced-search.component.ts","./libs/mbs-ui-kit/advanced-search/advanced-search.module.ts","./libs/mbs-ui-kit/advanced-select/advanced-select.component.ts","./libs/mbs-ui-kit/advanced-select/advanced-select.component.html","./libs/mbs-ui-kit/alert/alert-container/alert-container.component.html","./libs/mbs-ui-kit/alert/alert-container/alert-container.component.ts","./libs/mbs-ui-kit/alert/alert.model.ts","./libs/mbs-ui-kit/alert/alert.service.ts","./libs/mbs-ui-kit/alert/alert/alert.component.html","./libs/mbs-ui-kit/alert/alert/alert.component.ts","./libs/mbs-ui-kit/breadcrumbs/breadcrumbs.component.html","./libs/mbs-ui-kit/breadcrumbs/breadcrumbs.component.ts","./libs/mbs-ui-kit/button/button-dropdown.directive.ts","./libs/mbs-ui-kit/button/button-group/button-group.component.ts","./libs/mbs-ui-kit/button/button-group/button-group.component.html","./libs/mbs-ui-kit/button/button.component.html","./libs/mbs-ui-kit/button/button.component.ts","./libs/mbs-ui-kit/button/button.module.ts","./libs/mbs-ui-kit/card/card-group.component.ts","./libs/mbs-ui-kit/card/card-header.component.ts","./libs/mbs-ui-kit/card/card.component.html","./libs/mbs-ui-kit/card/card.component.ts","./libs/mbs-ui-kit/directives/directives.module.ts","./libs/mbs-ui-kit/directives/disable-control.directive.ts","./libs/mbs-ui-kit/directives/permanent-tooltip.directive.ts","./libs/mbs-ui-kit/directives/size.directive.ts","./libs/mbs-ui-kit/directives/trim-input.directive.ts","./libs/mbs-ui-kit/form-group/form-group.component.html","./libs/mbs-ui-kit/form-group/form-group.component.ts","./libs/mbs-ui-kit/form-section/form-section.component.html","./libs/mbs-ui-kit/form-section/form-section.component.ts","./libs/mbs-ui-kit/form/checkbox/checkbox.component.html","./libs/mbs-ui-kit/form/checkbox/checkbox.component.ts","./libs/mbs-ui-kit/form/checkbox/checkbox.module.ts","./libs/mbs-ui-kit/form/datepicker-range/enums.ts","./libs/mbs-ui-kit/form/datepicker-range/utils.ts","./libs/mbs-ui-kit/form/datepicker-range/datepicker-range.component.html","./libs/mbs-ui-kit/form/datepicker-range/datepicker-range.component.ts","./libs/mbs-ui-kit/form/datepicker-range/datepicker-range.module.ts","./libs/mbs-ui-kit/form/datepicker/datepicker.model.ts","./libs/mbs-ui-kit/form/datepicker/datepicker.component.html","./libs/mbs-ui-kit/form/datepicker/datepicker.component.ts","./libs/mbs-ui-kit/form/datepicker/datepicker.module.ts","./libs/mbs-ui-kit/form/drop-file/drop-file.module.ts","./libs/mbs-ui-kit/form/datepicker/datepicker-formatters/short-date-parser-formatter.ts","./libs/mbs-ui-kit/form/timepicker/ngb-time-adapters/ngb-time-string-adapter.ts","./libs/mbs-ui-kit/form/tags-input/tags-input.module.ts","./node_modules/ip-address/dist/esm/lib/v6/helpers.js","./libs/mbs-ui-kit/form/input-base/auto-focus.directive.ts","./libs/mbs-ui-kit/form/input-base/focus.directive.ts","./libs/mbs-ui-kit/form/input-base/focusBlurHandler.directive.ts","./libs/mbs-ui-kit/form/input-base/input-append.directive.ts","./libs/mbs-ui-kit/form/input-base/input-base.module.ts","./libs/mbs-ui-kit/form/input-base/input-base.ts","./libs/mbs-ui-kit/form/input-base/input-errors.directive.ts","./libs/mbs-ui-kit/form/input-base/input-errors/input-errors.component.html","./libs/mbs-ui-kit/form/input-base/input-errors/input-errors.component.ts","./libs/mbs-ui-kit/form/input-base/input-label.directive.ts","./libs/mbs-ui-kit/form/input-base/input-label/input-label.component.html","./libs/mbs-ui-kit/form/input-base/input-label/input-label.component.ts","./libs/mbs-ui-kit/utils/helpers/convertCssClassesToString.ts","./libs/mbs-ui-kit/form/input-base/input-pre-append/input-pre-append.component.html","./libs/mbs-ui-kit/form/input-base/input-pre-append/input-pre-append.component.ts","./libs/mbs-ui-kit/form/input-base/input-prepend.directive.ts","./libs/mbs-ui-kit/form/input-range/input-range.component.html","./libs/mbs-ui-kit/form/input-range/input-range.component.ts","./libs/mbs-ui-kit/form/input-range/input-range.module.ts","./libs/mbs-ui-kit/form/input/input.component.html","./libs/mbs-ui-kit/form/input/input.component.ts","./libs/mbs-ui-kit/form/input/input.module.ts","./libs/mbs-ui-kit/form/ip-address/ip-address.module.ts","./libs/mbs-ui-kit/form/number/number.component.html","./libs/mbs-ui-kit/form/number/number.component.ts","./libs/mbs-ui-kit/form/number/number.module.ts","./libs/mbs-ui-kit/form/radio/radio.component.html","./libs/mbs-ui-kit/form/radio/radio.component.ts","./libs/mbs-ui-kit/form/radio/radio.module.ts","./libs/mbs-ui-kit/form/select/select.component.html","./libs/mbs-ui-kit/form/select/select.component.ts","./libs/mbs-ui-kit/form/select/select.module.ts","./libs/mbs-ui-kit/form/switcher/switcher.component.html","./libs/mbs-ui-kit/form/switcher/switcher.component.ts","./libs/mbs-ui-kit/form/switcher/switcher.module.ts","./libs/mbs-ui-kit/form/tags-input/tags-input.component.html","./libs/mbs-ui-kit/form/tags-input/tags-input.component.ts","./libs/mbs-ui-kit/form/timepicker/timepicker.component.html","./libs/mbs-ui-kit/form/timepicker/timepicker.component.ts","./libs/mbs-ui-kit/form/timepicker/ngb-time-adapters/ngb-time-string-adapter-format-12.ts","./libs/mbs-ui-kit/form/timepicker/timepicker.module.ts","./libs/mbs-ui-kit/advanced-select/advanced-select.module.ts","./libs/mbs-ui-kit/utils/Pipes/pipes.module.ts","./libs/mbs-ui-kit/alert/alert.module.ts","./libs/mbs-ui-kit/breadcrumbs/breadcrumbs.module.ts","./libs/mbs-ui-kit/card/card.module.ts","./libs/mbs-ui-kit/form-group/form-group.module.ts","./libs/mbs-ui-kit/form-section/form-section.module.ts","./libs/mbs-ui-kit/form/input-password/input-password.component.ts","./libs/mbs-ui-kit/form/input-password/input-password.component.html","./libs/mbs-ui-kit/form/input-password/input-password.module.ts","./libs/mbs-ui-kit/injection-tokens.ts","./libs/mbs-ui-kit/list-editor/list-editor.component.ts","./libs/mbs-ui-kit/list-editor/list-editor.module.ts","./libs/mbs-ui-kit/modal/modal.service.ts","./libs/mbs-ui-kit/modal/modal.module.ts","./libs/mbs-ui-kit/page-footer/page-footer.module.ts","./libs/mbs-ui-kit/progress-bar/progress-bar.module.ts","./libs/mbs-ui-kit/sidepanel/sidepanel.module.ts","./libs/mbs-ui-kit/smart-search/smart-search.module.ts","./libs/mbs-ui-kit/steps/steps.module.ts","./libs/mbs-ui-kit/tabset/tabset.module.ts","./libs/mbs-ui-kit/toast/toast.module.ts","./libs/mbs-ui-kit/wizard/wizard.module.ts","./libs/mbs-ui-kit/mbs-ui-kit.module.ts","./libs/mbs-ui-kit/services/data-change-watcher/ConfirmReason.ts","./node_modules/rxjs/dist/esm/internal/scheduler/queue.js","./node_modules/rxjs/dist/esm/internal/scheduler/QueueScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/QueueAction.js","./node_modules/rxjs/dist/esm/internal/operators/toArray.js","./node_modules/rxjs/dist/esm/internal/operators/zipAll.js","./node_modules/rxjs/dist/esm/internal/operators/joinAllInternals.js","./node_modules/rxjs/dist/esm/internal/operators/reduce.js","./libs/mbs-ui-kit/services/data-change-watcher/data-change-watcher.service.ts","./libs/mbs-ui-kit/services/data-change-watcher/data-change-watcher-base.directive.ts","./node_modules/rxjs/dist/esm/internal/observable/iif.js","./libs/mbs-ui-kit/sidepanel/SidepanelCrudBase.ts","./libs/mbs-ui-kit/sidepanel/sidepanel.service.ts","./libs/mbs-ui-kit/sidepanel/SidepanelBase.ts","./libs/mbs-ui-kit/steps/step/step.component.html","./libs/mbs-ui-kit/steps/step/step.component.ts","./libs/mbs-ui-kit/steps/steps.component.ts","./libs/mbs-ui-kit/steps/steps.component.html","./libs/mbs-ui-kit/wizard/wizard-step.component.ts","./libs/mbs-ui-kit/wizard/wizard-title.directive.ts","./libs/mbs-ui-kit/wizard/wizard/marks.ts","./libs/mbs-ui-kit/wizard/wizard.component.html","./libs/mbs-ui-kit/wizard/wizard.component.ts","./libs/mbs-ui-kit/list-select/directives/list-select-group-check.directive.ts","./libs/mbs-ui-kit/list-select/directives/list-select-group-header.directive.ts","./libs/mbs-ui-kit/list-select/directives/list-select-group-inner-item.directive.ts","./libs/mbs-ui-kit/list-select/list-select.component.html","./libs/mbs-ui-kit/list-select/list-select.component.ts","./libs/mbs-ui-kit/list-select/list-select.module.ts","./libs/mbs-ui-kit/loader/loader.component.ts","./libs/mbs-ui-kit/loader/loader.module.ts","./libs/mbs-ui-kit/modal/modal-footer.directive.ts","./libs/mbs-ui-kit/modal/modal.component.html","./libs/mbs-ui-kit/modal/modal.component.ts","./libs/mbs-ui-kit/models/ResponseError.ts","./libs/mbs-ui-kit/models/sort.ts","./libs/mbs-ui-kit/services/storage/persistent-state-base.service.ts","./libs/mbs-ui-kit/services/storage/shared-persistent-state-enum.ts","./libs/mbs-ui-kit/services/storage/shared-persistent-state.provider.ts","./libs/mbs-ui-kit/services/storage/shared-persistent-state.service.ts","./libs/mbs-ui-kit/sidepanel/sidepanel.component.html","./libs/mbs-ui-kit/sidepanel/sidepanel.component.ts","./libs/mbs-ui-kit/smart-search/constants.ts","./libs/mbs-ui-kit/smart-search/models/smart-search-models.ts","./libs/mbs-ui-kit/smart-search/smart-search-config.ts","./node_modules/keycode-js/dist/keycode.esm.js","./node_modules/rxjs/dist/esm/internal/operators/debounce.js","./libs/mbs-ui-kit/smart-search/highlight-helper.ts","./libs/mbs-ui-kit/smart-search/smart-search-keyword.directive.ts","./libs/mbs-ui-kit/smart-search/smart-search-parser.ts","./libs/mbs-ui-kit/smart-search/smart-search.component.html","./libs/mbs-ui-kit/smart-search/smart-search.component.ts","./libs/mbs-ui-kit/smart-search/utils.ts","./libs/mbs-ui-kit/status/status.component.html","./libs/mbs-ui-kit/status/status.component.ts","./libs/mbs-ui-kit/status/status.module.ts","./libs/mbs-ui-kit/table-grid/directives/grid-tile.directive.ts","./libs/mbs-ui-kit/table-grid/directives/headerFor.directive.ts","./libs/mbs-ui-kit/table-grid/directives/table-cell.directive.ts","./libs/mbs-ui-kit/table-grid/directives/table-control.directive.ts","./libs/mbs-ui-kit/table-grid/directives/table-filter.directive.ts","./libs/mbs-ui-kit/table-grid/directives/table-nav-content.directive.ts","./libs/mbs-ui-kit/table-grid/directives/table-sort-arrow.directive.ts","./libs/mbs-ui-kit/table-grid/directives/table-sort-group.directive.ts","./libs/mbs-ui-kit/table-grid/directives/table-sort.directive.ts","./libs/mbs-ui-kit/table-grid/grid/grid.component.html","./libs/mbs-ui-kit/table-grid/grid/grid.component.ts","./libs/mbs-ui-kit/table-grid/directives/table-filters-group.directive.ts","./libs/mbs-ui-kit/table-grid/nav/table-nav.component.html","./libs/mbs-ui-kit/table-grid/nav/table-nav.component.ts","./libs/mbs-ui-kit/table-grid/table-grid.component.html","./libs/mbs-ui-kit/table-grid/table-grid.component.ts","./libs/mbs-ui-kit/table-grid/table-grid.module.ts","./libs/mbs-ui-kit/table-grid/table/table.component.html","./libs/mbs-ui-kit/table-grid/table/table.component.ts","./libs/mbs-ui-kit/tabset/directives/tabset-content.directive.ts","./libs/mbs-ui-kit/tabset/directives/tabset-group.directive.ts","./libs/mbs-ui-kit/tabset/directives/tabset-item.directive.ts","./libs/mbs-ui-kit/tabset/directives/tabset-link.directive.ts","./libs/mbs-ui-kit/tabset/directives/tabset.directive.ts","./libs/mbs-ui-kit/tabset/tabs.service.ts","./libs/mbs-ui-kit/tabset/tabset-content-outlet.component.ts","./libs/mbs-ui-kit/tabset/tokens/tabset-item.directive.token.ts","./libs/mbs-ui-kit/tabset/tokens/tabset.directive.token.ts","./libs/mbs-ui-kit/tag/tag.component.html","./libs/mbs-ui-kit/tag/tag.component.ts","./libs/mbs-ui-kit/tag/tag.module.ts","./libs/mbs-ui-kit/text-ellipsis/text-ellipsis-append.directive.ts","./libs/mbs-ui-kit/text-ellipsis/text-ellipsis-prepend.directive.ts","./libs/mbs-ui-kit/text-ellipsis/text-ellipsis.component.html","./libs/mbs-ui-kit/text-ellipsis/text-ellipsis.component.ts","./libs/mbs-ui-kit/text-ellipsis/text-ellipsis.module.ts","./libs/mbs-ui-kit/tile/tile.component.html","./libs/mbs-ui-kit/tile/tile.component.ts","./libs/mbs-ui-kit/tile/tile.module.ts","./libs/mbs-ui-kit/toast/toast.component.html","./libs/mbs-ui-kit/toast/toast.component.ts","./libs/mbs-ui-kit/toast/toast.model.ts","./libs/mbs-ui-kit/toast/toast.service.ts","./libs/mbs-ui-kit/tree/directives/treeElement.directive.ts","./libs/mbs-ui-kit/tree/directives/treeLoadMore.directive.ts","./node_modules/@angular/material/fesm2022/core.mjs","./node_modules/@angular/cdk/fesm2022/a11y.mjs","./node_modules/@angular/material/fesm2022/tree.mjs","./libs/mbs-ui-kit/tree/directives/treeAppend.directive.ts","./libs/mbs-ui-kit/tree/helpers/getIsNodeExpandable.ts","./libs/mbs-ui-kit/tree/helpers/getNodeLevel.ts","./libs/mbs-ui-kit/tree/helpers/treeFlattener.ts","./libs/mbs-ui-kit/tree/helpers/nodeTransformer.ts","./libs/mbs-ui-kit/tree/helpers/getNodeChildren.ts","./libs/mbs-ui-kit/tree/pipes/treeLoadMore.pipe.ts","./libs/mbs-ui-kit/tree/tree.component.html","./libs/mbs-ui-kit/tree/tree.component.ts","./libs/mbs-ui-kit/tree/tree.module.ts","./libs/mbs-ui-kit/utils/Pipes/converter-seconds.pipe.ts","./libs/mbs-ui-kit/utils/Pipes/safe.pipe.ts","./libs/mbs-ui-kit/utils/Pipes/size.pipe.ts","./libs/mbs-ui-kit/utils/constants.ts","./libs/mbs-ui-kit/utils/converter.ts","./libs/mbs-ui-kit/utils/enum-helper.ts","./libs/mbs-ui-kit/utils/enums/date-enum.ts","./libs/mbs-ui-kit/utils/enums/keys.ts","./libs/mbs-ui-kit/utils/forms-util.ts","./libs/mbs-ui-kit/utils/natural-sort.ts","./libs/mbs-ui-kit/utils/remove-selection.ts","./libs/mbs-ui-kit/utils/enums/mbs-label-size.ts","./libs/mbs-ui-kit/utils/enums/mbs-popup-enum.ts","./libs/mbs-ui-kit/utils/enums/mbs-size-enum.ts","./libs/mbs-ui-kit/utils/enums/mbs-type.ts","./libs/mbs-ui-kit/utils/enums/typography-enum.ts","./libs/mbs-ui-kit/utils/enums/key-code.ts","./libs/mbs-ui-kit/utils/helpers/elementRefToHtmlElement.ts","./libs/mbs-ui-kit/utils/helpers/isFunctions.ts","./libs/mbs-ui-kit/utils/mbs-validators.ts","./libs/mbs-ui-kit/utils/text-constants.ts","./projects/apps-ui/src/app/common/components/delete-user-backup/delete-user-backup.component.html","./projects/apps-ui/src/app/common/components/delete-user-backup/delete-user-backup.component.ts","./projects/apps-ui/src/app/common/components/delete-user-backup/delete-user-backup.module.ts","./projects/apps-ui/src/app/common/components/dont-have-permission/dont-have-permission.module.ts","./projects/apps-ui/src/app/common/components/export-to-pst/export-to-pst.component.html","./projects/apps-ui/src/app/common/components/export-to-pst/export-to-pst.component.ts","./projects/apps-ui/src/app/common/components/export-to-pst/export-to-pst.module.ts","./projects/apps-ui/src/app/common/components/login/enums/auth-state.enum.ts","./projects/apps-ui/src/app/common/components/login/enums/auth-mode.enum.ts","./projects/apps-ui/src/app/common/components/modals/change-email-modal/change-email-modal.component.ts","./projects/apps-ui/src/app/common/components/modals/change-email-modal/change-email-modal.component.html","./projects/apps-ui/src/app/common/components/modals/change-password-modal/change-password-modal.component.ts","./projects/apps-ui/src/app/common/components/modals/change-password-modal/change-password-modal.component.html","./projects/apps-ui/src/app/common/components/modals/confirm-password-modal/confirm-password-modal.component.ts","./projects/apps-ui/src/app/common/components/modals/confirm-password-modal/confirm-password-modal.component.html","./projects/apps-ui/src/app/common/components/modals/edit-create-retention-policy-modal/edit-create-retention-policy-modal.component.html","./projects/apps-ui/src/app/common/components/modals/edit-create-retention-policy-modal/edit-create-retention-policy-modal.component.ts","./projects/apps-ui/src/app/common/components/modals/edit-create-retention-policy-modal/edit-create-retention-policy-modal.module.ts","./projects/apps-ui/src/app/common/components/my-account/my-account-sidepanel/my-account-sidepanel.component.html","./projects/apps-ui/src/app/common/components/my-account/my-account-sidepanel/my-account-sidepanel.component.ts","./projects/apps-ui/src/app/common/components/my-account/my-account-sidepanel/my-account-sidepanel.model.ts","./projects/apps-ui/src/app/common/components/my-account/my-account-sidepanel/my-account-sidepanel.service.ts","./projects/apps-ui/src/app/common/constants/constants.ts","./projects/apps-ui/src/app/common/enums/api-service-status.enum.ts","./projects/apps-ui/src/app/common/enums/backup-history/export-to-csv.enum.ts","./projects/apps-ui/src/app/common/enums/calendar-view-type.enum.ts","./projects/apps-ui/src/app/common/enums/create-service.enum.ts","./projects/apps-ui/src/app/common/enums/customer-problem.enum.ts","./projects/apps-ui/src/app/common/enums/date-units.enum.ts","./projects/apps-ui/src/app/common/enums/mail-folder-type.enum.ts","./projects/apps-ui/src/app/common/enums/mime-type.enum.ts","./projects/apps-ui/src/app/common/enums/odata.enum.ts","./projects/apps-ui/src/app/common/enums/operation-type.enum.ts","./projects/apps-ui/src/app/common/enums/payments/invoice.enums.ts","./projects/apps-ui/src/app/common/enums/payments/payment-type.enum.ts","./projects/apps-ui/src/app/common/enums/policy-type.enum.ts","./projects/apps-ui/src/app/common/enums/reports/day-of-month.enum.ts","./projects/apps-ui/src/app/common/enums/reports/day-of-week.enum.ts","./projects/apps-ui/src/app/common/enums/reports/filter-action-type.enum.ts","./projects/apps-ui/src/app/common/enums/reports/report-schedule-type.enum.ts","./projects/apps-ui/src/app/common/enums/reports/report-status.enum.ts","./projects/apps-ui/src/app/common/enums/service-type.enum.ts","./projects/apps-ui/src/app/common/enums/storage.enum.ts","./projects/apps-ui/src/app/common/enums/task-maneger-enums.ts","./projects/apps-ui/src/app/common/enums/users/backup-license-statuses.enum.ts","./projects/apps-ui/src/app/common/enums/users/text-color.enum.ts","./projects/apps-ui/src/app/common/enums/route.enum.ts","./projects/apps-ui/src/app/common/constants/source-hosts.ts","./projects/apps-ui/src/app/common/directives/resize-column.directive.ts","./projects/apps-ui/src/app/common/window.provider.ts","./projects/apps-ui/src/app/common/models/another-user-settings.model.ts","./projects/apps-ui/src/app/common/models/audit.model.ts","./projects/apps-ui/src/app/common/models/basic.model.ts","./projects/apps-ui/src/app/common/models/dashboard/service-statistics.model.ts","./projects/apps-ui/src/app/common/models/domain.model.ts","./projects/apps-ui/src/app/common/models/drive.model.ts","./projects/apps-ui/src/app/common/models/history.model.ts","./projects/apps-ui/src/app/common/models/mail/folders-filter.ts","./projects/apps-ui/src/app/common/models/mail/mail-attachment.ts","./projects/apps-ui/src/app/common/models/my-account/odata/my-account.model.ts","./projects/apps-ui/src/app/common/models/payments/odata/plan.model.ts","./projects/apps-ui/src/app/common/models/roles.model.ts","./projects/apps-ui/src/app/common/models/siteItem.model.ts","./projects/apps-ui/src/app/common/models/systemInfo.model.ts","./projects/apps-ui/src/app/common/models/teams.model.ts","./projects/apps-ui/src/app/common/models/user.model.ts","./projects/apps-ui/src/app/common/models/user/auto-activation-mode.model.ts","./projects/apps-ui/src/app/common/odata/angularODataEnums.ts","./projects/apps-ui/src/app/common/odata/angularODataOperation.ts","./projects/apps-ui/src/app/common/odata/angularODataQuery.ts","./projects/apps-ui/src/app/common/odata/angularODataUtils.ts","./projects/apps-ui/src/app/common/odata/angularODataService.ts","./projects/apps-ui/src/app/common/odata/angularODataPagedResult.ts","./projects/apps-ui/src/app/common/odata/angularODataConfiguration.ts","./projects/apps-ui/src/app/common/odata/angularODataServiceFactory.ts","./projects/apps-ui/src/app/common/pipes/active-route.pipe.ts","./projects/apps-ui/src/app/common/pipes/auto-activation-mode.pipe.ts","./projects/apps-ui/src/app/common/pipes/backup-history/backup-history-panel-id.pipe.ts","./projects/apps-ui/src/app/common/pipes/column-layout/info-column-layout.pipe.ts","./projects/apps-ui/src/app/common/pipes/column-layout/main-column-layout.pipe.ts","./projects/apps-ui/src/app/common/pipes/column-layout/nav-column-layout.pipe.ts","./projects/apps-ui/src/app/common/pipes/column-layout/resize-column-layout.pipe.ts","./projects/apps-ui/src/app/common/pipes/get-download-loading.pipe.ts","./projects/apps-ui/src/app/common/pipes/invoice-state-to-display-name.pipe.ts","./projects/apps-ui/src/app/common/pipes/invoice-status.pipe.ts","./projects/apps-ui/src/app/common/pipes/operation-type-to-display-name.pipe.ts","./projects/apps-ui/src/app/common/pipes/pipes.module.ts","./projects/apps-ui/src/app/common/pipes/price-to-display.pipe.ts","./projects/apps-ui/src/app/common/pipes/report-status/backup-status.pipe.ts","./projects/apps-ui/src/app/common/pipes/report-status/user-status.pipe.ts","./projects/apps-ui/src/app/common/pipes/select-grid-all-button-text.pipe.ts","./projects/apps-ui/src/app/common/pipes/select-grid-button-text.pipe.ts","./projects/apps-ui/src/app/common/pipes/service-type-to-display-name.pipe.ts","./projects/apps-ui/src/app/common/pipes/smart-search-max-width.pipe.ts","./projects/apps-ui/src/app/common/pipes/sort-order-by.pipe.ts","./projects/apps-ui/src/app/common/pipes/src-mime-category-sb.pipe.ts","./projects/apps-ui/src/app/common/pipes/src-mime-category.pipe.ts","./projects/apps-ui/src/app/common/pipes/task-status/task-status-icon.pipe.ts","./projects/apps-ui/src/app/common/pipes/task-status/task-status-type.pipe.ts","./projects/apps-ui/src/app/common/pipes/teams/folder-icon.pipe.ts","./projects/apps-ui/src/app/common/pipes/teams/folders-layout.pipe.ts","./projects/apps-ui/src/app/common/pipes/teams/mime-category-icon.pipe.ts","./projects/apps-ui/src/app/common/pipes/transform-text-by.pipe.ts","./projects/apps-ui/src/app/common/pipes/user-action-type-area.pipe.ts","./projects/apps-ui/src/app/common/pipes/user-action-type.pipe.ts","./projects/apps-ui/src/app/common/enums/users/status-filter-backup.enum.ts","./projects/apps-ui/src/app/common/pipes/users/filter-service-backup-color.pipe.ts","./projects/apps-ui/src/app/common/pipes/users/filter-service-backup-text.pipe.ts","./projects/apps-ui/src/app/common/pipes/users/status-filter-backup.pipe.ts","./projects/apps-ui/src/app/common/services/advanced-search/audit-log/advanced-search-tags-audit-log.model.ts","./node_modules/posthog-js/dist/es.js","./projects/apps-ui/src/app/common/posthog/posthog.service.ts","./node_modules/@sentry/browser/node_modules/@sentry/utils/esm/string.js","./node_modules/@sentry/core/esm/integrations/inboundfilters.js","./node_modules/@sentry/core/esm/integrations/functiontostring.js","./node_modules/@sentry/core/esm/integration.js","./node_modules/@sentry/browser/node_modules/@sentry/utils/esm/stacktrace.js","./node_modules/@sentry/browser/node_modules/@sentry/utils/esm/logger.js","./node_modules/@sentry/browser/node_modules/@sentry/utils/esm/supports.js","./node_modules/@sentry/browser/node_modules/@sentry/utils/esm/is.js","./node_modules/@sentry/browser/node_modules/@sentry/utils/esm/browser.js","./node_modules/@sentry/browser/node_modules/@sentry/utils/esm/object.js","./node_modules/@sentry/browser/node_modules/@sentry/utils/esm/vendor/supportsHistory.js","./node_modules/@sentry/browser/node_modules/@sentry/utils/esm/instrument.js","./node_modules/@sentry/browser/node_modules/@sentry/utils/esm/dsn.js","./node_modules/@sentry/browser/node_modules/@sentry/utils/esm/normalize.js","./node_modules/@sentry/browser/node_modules/@sentry/utils/esm/memo.js","./node_modules/@sentry/browser/node_modules/@sentry/utils/esm/envelope.js","./node_modules/@sentry/browser/node_modules/@sentry/utils/esm/error.js","./node_modules/@sentry/core/esm/utils/prepareEvent.js","./node_modules/@sentry/core/esm/baseclient.js","./node_modules/@sentry/core/esm/api.js","./node_modules/@sentry/core/esm/envelope.js","./node_modules/@sentry/browser/node_modules/@sentry/utils/esm/syncpromise.js","./node_modules/@sentry/browser/node_modules/@sentry/utils/esm/misc.js","./node_modules/@sentry/browser/esm/eventbuilder.js","./node_modules/@sentry/browser/esm/helpers.js","./node_modules/@sentry/browser/node_modules/@sentry/utils/esm/severity.js","./node_modules/@sentry/browser/node_modules/@sentry/utils/esm/url.js","./node_modules/@sentry/browser/esm/integrations/breadcrumbs.js","./node_modules/@sentry/browser/esm/client.js","./node_modules/@sentry/core/esm/version.js","./node_modules/@sentry/browser/esm/userfeedback.js","./node_modules/@sentry/browser/node_modules/@sentry/utils/esm/clientreport.js","./node_modules/@sentry/browser/esm/integrations/globalhandlers.js","./node_modules/@sentry/browser/esm/integrations/trycatch.js","./node_modules/@sentry/browser/node_modules/@sentry/utils/esm/aggregate-errors.js","./node_modules/@sentry/browser/esm/integrations/linkederrors.js","./node_modules/@sentry/browser/esm/integrations/httpcontext.js","./node_modules/@sentry/browser/esm/integrations/dedupe.js","./node_modules/@sentry/browser/esm/stack-parsers.js","./node_modules/@sentry/browser/node_modules/@sentry/utils/esm/ratelimit.js","./node_modules/@sentry/core/esm/transports/base.js","./node_modules/@sentry/browser/node_modules/@sentry/utils/esm/promisebuffer.js","./node_modules/@sentry/browser/esm/transports/utils.js","./node_modules/@sentry/browser/esm/transports/fetch.js","./node_modules/@sentry/browser/esm/transports/xhr.js","./node_modules/@sentry/browser/esm/sdk.js","./node_modules/@sentry/browser/esm/index.js","./node_modules/@sentry/browser/node_modules/@sentry/utils/esm/baggage.js","./node_modules/@sentry/browser/node_modules/@sentry/utils/esm/tracing.js","./node_modules/@sentry-internal/tracing/esm/browser/types.js","./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/bindReporter.js","./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/getNavigationEntry.js","./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/getActivationStart.js","./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/initMetric.js","./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/generateUniqueID.js","./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/observe.js","./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/onHidden.js","./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/getVisibilityWatcher.js","./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getLCP.js","./node_modules/@sentry-internal/tracing/esm/browser/metrics/utils.js","./node_modules/@sentry-internal/tracing/esm/browser/metrics/index.js","./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getFID.js","./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getCLS.js","./node_modules/@sentry-internal/tracing/esm/browser/request.js","./node_modules/@sentry-internal/tracing/esm/browser/browsertracing.js","./node_modules/@sentry-internal/tracing/esm/browser/router.js","./node_modules/@sentry-internal/tracing/node_modules/@sentry/utils/esm/buildPolyfills/_optionalChain.js","./node_modules/@sentry-internal/tracing/esm/node/integrations/utils/node-utils.js","./node_modules/@sentry-internal/tracing/esm/node/integrations/apollo.js","./node_modules/@sentry-internal/tracing/esm/node/integrations/express.js","./node_modules/@sentry/browser/node_modules/@sentry/utils/esm/requestdata.js","./node_modules/@sentry-internal/tracing/esm/node/integrations/graphql.js","./node_modules/@sentry-internal/tracing/esm/node/integrations/mongo.js","./node_modules/@sentry-internal/tracing/esm/node/integrations/mysql.js","./node_modules/@sentry-internal/tracing/esm/node/integrations/postgres.js","./node_modules/@sentry-internal/tracing/esm/node/integrations/prisma.js","./node_modules/@sentry/core/esm/tracing/trace.js","./node_modules/@sentry/tracing/esm/index.js","./node_modules/@sentry-internal/tracing/esm/browser/backgroundtab.js","./projects/apps-ui/src/app/common/services/sentry.service.ts","./node_modules/@sentry/core/esm/sdk.js","./projects/apps-ui/src/app/common/services/auth.service.ts","./projects/apps-ui/src/app/common/services/configuration.service.ts","./projects/apps-ui/src/app/common/services/download.service.ts","./projects/apps-ui/src/app/common/services/archive-password.service.ts","./projects/apps-ui/src/app/common/services/audit.service.ts","./projects/apps-ui/src/app/common/services/azure-groups.service.ts","./projects/apps-ui/src/app/common/services/backup.service.ts","./projects/apps-ui/src/app/common/services/calendar.odata.service.ts","./projects/apps-ui/src/app/common/services/contacts.service.ts","./projects/apps-ui/src/app/common/services/dashboard.service.ts","./projects/apps-ui/src/app/common/services/domain.service.ts","./projects/apps-ui/src/app/common/services/drive-tree.odata.service.ts","./projects/apps-ui/src/app/common/services/drive.odata.service.ts","./projects/apps-ui/src/app/common/services/export-results.service.ts","./projects/apps-ui/src/app/common/components/modals/download-to-pst-file/download-to-pst-file.component.html","./projects/apps-ui/src/app/common/components/modals/download-to-pst-file/download-to-pst-file.component.ts","./projects/apps-ui/src/app/common/utils/helper/export-to-pst.helper.ts","./projects/apps-ui/src/app/common/services/export-to-PST.service.ts","./projects/apps-ui/src/app/common/services/history.service.ts","./projects/apps-ui/src/app/common/services/invoices.service.ts","./projects/apps-ui/src/app/common/services/mail.odata.service.ts","./projects/apps-ui/src/app/common/services/my-account.service.ts","./node_modules/rxjs/dist/esm/internal/operators/pluck.js","./projects/apps-ui/src/app/common/services/reports.service.ts","./projects/apps-ui/src/app/common/services/retention-policy.service.ts","./projects/apps-ui/src/app/common/services/site-items.odata.service.ts","./projects/apps-ui/src/app/common/services/statistics.services.ts","./projects/apps-ui/src/app/common/services/tariffs.service.ts","./projects/apps-ui/src/app/common/services/task-manager.service.ts","./projects/apps-ui/src/app/common/services/teams.service.ts","./projects/apps-ui/src/app/common/services/user.odata.service.ts","./projects/apps-ui/src/app/common/services/organizational-units.service.ts","./projects/apps-ui/src/app/common/services/shared.odata.service.ts","./projects/apps-ui/src/app/common/services/smart-search/calendar/smart-search-tags-calendar.model.ts","./projects/apps-ui/src/app/common/services/smart-search/calendar/smart-search-model-template-calendar.service.ts","./projects/apps-ui/src/app/common/services/smart-search/contacts/smart-search-tags-contacts.model.ts","./projects/apps-ui/src/app/common/services/smart-search/contacts/smart-search-model-template-contacts.service.ts","./projects/apps-ui/src/app/common/services/smart-search/drive-base/smart-search-tags-drive-base.model.ts","./projects/apps-ui/src/app/common/services/smart-search/audit-log/smart-search-model-template-audit-log.service.ts","./projects/apps-ui/src/app/common/services/smart-search/audit-log/smart-search-tags-audit-log.model.ts","./projects/apps-ui/src/app/common/services/smart-search/export-results/smart-search-model-template-export-results.service.ts","./projects/apps-ui/src/app/common/services/smart-search/export-results/smart-search-tags-export-results.model.ts","./projects/apps-ui/src/app/common/services/smart-search/mail/smart-search-model-template-mail.service.ts","./projects/apps-ui/src/app/common/services/smart-search/mail/smart-search-tags-mail.model.ts","./projects/apps-ui/src/app/common/services/smart-search/payments/smart-search-model-template-payments.service.ts","./projects/apps-ui/src/app/common/services/smart-search/payments/smart-search-tags-payments.model.ts","./projects/apps-ui/src/app/common/services/smart-search/reports/smart-search-model-template-reports.service.ts","./projects/apps-ui/src/app/common/services/smart-search/reports/smart-search-tags-reports.model.ts","./projects/apps-ui/src/app/common/services/smart-search/retention-policy/smart-search-model-template-retention-policy.service.ts","./projects/apps-ui/src/app/common/services/smart-search/retention-policy/smart-search-tags-retention-policy.model.ts","./projects/apps-ui/src/app/common/services/smart-search/task-manager/smart-search-model-template-task-manager.service.ts","./projects/apps-ui/src/app/common/services/smart-search/task-manager/smart-search-tags-task-manager.model.ts","./projects/apps-ui/src/app/common/services/smart-search/sharePoint/smart-search-model-template-sharepoint.service.ts","./projects/apps-ui/src/app/common/services/smart-search/sharePoint/smart-search-tags-sharepoint.model.ts","./projects/apps-ui/src/app/common/services/smart-search/smart-search-template-base.ts","./projects/apps-ui/src/app/common/services/smart-search/smart-search.helper.ts","./projects/apps-ui/src/app/common/services/smart-search/user-groups/smart-search-tags-user-groups.model.ts","./projects/apps-ui/src/app/common/services/smart-search/user-groups/smart-search-model-template-user-groups.service.ts","./projects/apps-ui/src/app/common/services/storage/abstract-storage.ts","./projects/apps-ui/src/app/common/services/storage/local-storage.service.ts","./projects/apps-ui/src/app/common/services/storage/persistent-state.service.ts","./projects/apps-ui/src/app/common/services/storage/session-storage.service.ts","./projects/apps-ui/src/app/common/utils/functions/search.ts","./projects/apps-ui/src/app/common/utils/helper/attached-policies.ts","./projects/apps-ui/src/app/common/utils/helper/show-toast.helper.ts","./projects/apps-ui/src/app/common/utils/helper/smart-search.helper.ts","./projects/apps-ui/src/app/common/utils/components/chart/get-colors.ts","./projects/apps-ui/src/app/common/utils/components/chart/get-random-hex.ts","./projects/apps-ui/src/app/common/utils/components/chart/models.ts","./projects/apps-ui/src/app/common/utils/components/chart/no-item-display-chart.ts","./projects/apps-ui/src/app/common/utils/components/chart/prepare-last-days-backup-size-data-set.ts","./projects/apps-ui/src/app/common/utils/components/chart/prepare-pie-data-and-labels.ts","./projects/apps-ui/src/app/common/utils/components/chart/to-fixed.ts","./projects/apps-ui/src/app/common/utils/components/date.ts","./projects/apps-ui/src/app/common/utils/components/tree.ts","./projects/apps-ui/src/app/common/utils/components/update-total-children.ts","./projects/apps-ui/src/app/common/utils/functions/get-all-user-select-item.ts","./projects/apps-ui/src/app/common/utils/functions/get-append-buttons.ts","./projects/apps-ui/src/app/common/utils/functions/get-column-max-height.ts","./projects/apps-ui/src/app/common/utils/functions/get-default-pagination-options.ts","./projects/apps-ui/src/app/common/utils/functions/get-error-text.ts","./projects/apps-ui/src/app/common/utils/functions/get-sentry-environment.ts","./projects/apps-ui/src/app/common/utils/functions/get-term-key.ts","./projects/apps-ui/src/app/common/utils/functions/get-url-prefix-from-provider-type.ts","./projects/apps-ui/src/app/common/utils/functions/get-url-segment.ts","./projects/apps-ui/src/app/common/utils/functions/has-actions-queue.ts","./projects/apps-ui/src/app/common/utils/functions/has-error-response-text.ts","./projects/apps-ui/src/app/common/utils/functions/max-height.ts","./projects/apps-ui/src/app/common/utils/functions/no-licenses-available.ts","./projects/apps-ui/src/app/common/utils/functions/replacing-single-quotes.ts","./projects/apps-ui/src/app/common/utils/functions/show-pagination.ts","./projects/apps-ui/src/app/common/utils/helper/can-ability-cd-ref.ts","./projects/apps-ui/src/app/common/utils/helper/convert-first-chart-object-key-to-upper-case.ts","./projects/apps-ui/src/app/common/utils/helper/currency-invert.helper.ts","./projects/apps-ui/src/app/common/utils/helper/format-with-spaces.helper.ts","./projects/apps-ui/src/app/common/utils/helper/get-loading-state.ts","./projects/apps-ui/src/app/common/utils/helper/get-odata-top.helper.ts","./projects/apps-ui/src/app/common/utils/helper/get-orderby-string.helper.ts","./projects/apps-ui/src/app/common/utils/helper/is-display-file.helper.ts","./projects/apps-ui/src/app/common/utils/helper/is-home-user.ts","./projects/apps-ui/src/app/common/utils/helper/is-valid-date.ts","./projects/apps-ui/src/app/common/utils/helper/prepare-params-to-string.helper.ts","./projects/apps-ui/src/app/common/utils/helper/replace-nbsps.ts","./projects/apps-ui/src/app/common/utils/helper/uc-first.ts","./projects/apps-ui/src/app/common/utils/service-ui-info.ts","./projects/apps-ui/src/app/common/utils/validators/is-confirm-password-validator.ts","./projects/apps-ui/src/app/common/utils/validators/validate-search-filter-form.ts","./projects/apps-ui/src/app/pages/payments/compare-plans-modal/compare-plans-modal.component.html","./projects/apps-ui/src/app/pages/payments/compare-plans-modal/compare-plans-modal.component.ts","./projects/apps-ui/src/app/pages/payments/invoice-plan/invoice-plan.component.html","./projects/apps-ui/src/app/pages/payments/invoice-plan/invoice-plan.component.ts","./projects/apps-ui/src/app/pages/payments/component/payments.component.html","./projects/apps-ui/src/app/pages/payments/component/payments.component.ts","./projects/apps-ui/src/app/pages/payments/payments-routing.module.ts","./projects/apps-ui/src/app/pages/payments/payments.module.ts","./projects/apps-ui/src/app/pages/users/pipe/policy-type.pipe.ts","./projects/apps-ui/src/app/pages/users/pipe/pipes.module.ts","./projects/apps-ui/src/app/pages/users/user-retention-policies-control/user-retention-policies-control.component.html","./projects/apps-ui/src/app/pages/users/user-retention-policies-control/user-retention-policies-control.component.ts","./projects/apps-ui/src/app/pages/users/backup-config-control/backup-config-control.component.html","./projects/apps-ui/src/app/pages/users/backup-config-control/backup-config-control.component.ts","./projects/apps-ui/src/app/pages/users/user-information-control/user-information-control.component.html","./projects/apps-ui/src/app/pages/users/user-information-control/user-information-control.component.ts","./projects/apps-ui/src/app/pages/users/alternate-account-settings/alternate-account-settings.component.html","./projects/apps-ui/src/app/pages/users/alternate-account-settings/alternate-account-settings.component.ts","./projects/apps-ui/src/app/pages/users/user-permissions-control/user-permissions-control.component.html","./projects/apps-ui/src/app/pages/users/user-permissions-control/user-permissions-control.component.ts","./projects/apps-ui/src/app/pages/users/user-group-action-sidepanel/user-group-action-sidepanel.component.html","./projects/apps-ui/src/app/pages/users/user-group-action-sidepanel/user-group-action-sidepanel.component.ts","./projects/apps-ui/src/app/pages/users/component/users.component.html","./projects/apps-ui/src/app/pages/users/component/users.component.ts","./projects/apps-ui/src/app/pages/users/user-groups/modals/edit-group-setting/edit-group-setting-modal.component.html","./projects/apps-ui/src/app/pages/users/user-groups/modals/edit-group-setting/edit-group-setting-modal.component.ts","./projects/apps-ui/src/app/pages/users/user-groups/modals/new-group-settings/new-group-settings-modal.component.ts","./projects/apps-ui/src/app/pages/users/user-groups/modals/new-group-settings/new-group-settings-modal.component.html","./projects/apps-ui/src/app/pages/users/user-groups/user-groups.component.html","./projects/apps-ui/src/app/pages/users/user-groups/user-groups.component.ts","./projects/apps-ui/src/app/pages/users/user-routing.module.ts","./projects/apps-ui/src/app/pages/users/user.module.ts","./projects/apps-ui/src/config.loader.ts","./projects/apps-ui/src/environments/environment.prod.ts","./node_modules/@angular/animations/fesm2022/animations.mjs","./node_modules/@angular/animations/fesm2022/browser.mjs","./node_modules/@angular/platform-browser/fesm2022/animations.mjs","./projects/apps-ui/src/app/common/components/error-handler/error-handler.service.ts","./projects/apps-ui/src/app/common/components/error-handler/error-handler.module.ts","./projects/apps-ui/src/app/common/components/my-account/tabs/alternate-account-tab/delete-alternate-account-modal/delete-alternate-account-modal.component.ts","./projects/apps-ui/src/app/common/components/my-account/tabs/alternate-account-tab/delete-alternate-account-modal/delete-alternate-account-modal.component.html","./projects/apps-ui/src/app/common/components/my-account/tabs/alternate-account-tab/reset-password-modal/reset-password-modal.component.ts","./projects/apps-ui/src/app/common/components/my-account/tabs/alternate-account-tab/reset-password-modal/reset-password-modal.component.html","./projects/apps-ui/src/app/common/components/my-account/tabs/alternate-account-tab/two-factor-authentication/two-factor-authentication.component.html","./projects/apps-ui/src/app/common/components/my-account/tabs/alternate-account-tab/two-factor-authentication/two-factor-authentication.component.ts","./projects/apps-ui/src/app/common/components/my-account/tabs/alternate-account-tab/two-factor-disable/two-factor-disable.component.ts","./projects/apps-ui/src/app/common/components/my-account/tabs/alternate-account-tab/two-factor-disable/two-factor-disable.component.html","./projects/apps-ui/src/app/common/components/my-account/tabs/alternate-account-tab/alternate-account-tab.component.html","./projects/apps-ui/src/app/common/components/my-account/tabs/alternate-account-tab/alternate-account-tab.component.ts","./projects/apps-ui/src/app/common/components/my-account/tabs/backup-destination-tab/backup-destination-tab.component.html","./projects/apps-ui/src/app/common/components/my-account/tabs/backup-destination-tab/backup-destination-tab.component.ts","./projects/apps-ui/src/app/common/components/my-account/tabs/general-tab/allowed-modal/allowed-modal.component.ts","./projects/apps-ui/src/app/common/components/my-account/tabs/general-tab/allowed-modal/allowed-modal.component.html","./projects/apps-ui/src/app/common/components/my-account/tabs/general-tab/assign-retention-policy-modal/assign-retention-policy-modal.component.html","./projects/apps-ui/src/app/common/components/my-account/tabs/general-tab/assign-retention-policy-modal/assign-retention-policy-modal.component.ts","./projects/apps-ui/src/app/common/components/my-account/tabs/general-tab/delete-backup-modal/delete-backup-modal.component.html","./projects/apps-ui/src/app/common/components/my-account/tabs/general-tab/delete-backup-modal/delete-backup-modal.component.ts","./projects/apps-ui/src/app/common/components/my-account/tabs/general-tab/export-to-pst-modal/export-to-pst-modal.component.html","./projects/apps-ui/src/app/common/components/my-account/tabs/general-tab/export-to-pst-modal/export-to-pst-modal.component.ts","./projects/apps-ui/src/app/common/services/browser.service.ts","./projects/apps-ui/src/app/common/components/my-account/tabs/general-tab/general-tab.component.html","./projects/apps-ui/src/app/common/components/my-account/tabs/general-tab/general-tab.component.ts","./projects/apps-ui/src/app/common/components/my-account/my-account.module.ts","./projects/apps-ui/src/app/common/guards/auth.guard.ts","./projects/apps-ui/src/app/common/guards/data-change-watcher.guard.ts","./projects/apps-ui/src/app/common/interceptors/error-handler.interceptor.ts","./projects/apps-ui/src/app/common/interceptors/sentry.interceptor.ts","./projects/apps-ui/src/app/common/interceptors/session.interceptor.ts","./projects/apps-ui/src/app/common/services/app-init.service.ts","./projects/apps-ui/src/app/common/services/global-error-handler.service.ts","./node_modules/@angular/common/locales/en.mjs","./libs/i18n/src/lib/i18-format-title.ts","./node_modules/i18next-http-backend/esm/utils.js","./node_modules/i18next-http-backend/esm/request.js","./node_modules/i18next-http-backend/esm/index.js","./libs/i18n/src/lib/i18.ts","./projects/apps-ui/src/app/common/components/app-header/app-header-item.model.ts","./projects/apps-ui/src/app/common/components/app-header/app-header.component.html","./projects/apps-ui/src/app/common/components/app-header/app-header.component.ts","./projects/apps-ui/src/app/common/components/app-footer/app-footer.component.html","./projects/apps-ui/src/app/common/components/app-footer/app-footer.component.ts","./projects/apps-ui/src/app/common/_layout/app-layout/app-layout.component.ts","./projects/apps-ui/src/app/common/_layout/app-layout/app-layout.component.html","./projects/apps-ui/src/app/common/components/login/auth-callback/auth-callback.component.ts","./projects/apps-ui/src/app/common/components/login/sign-in-alternate-email-modal/sign-in-alternate-email-modal.component.html","./projects/apps-ui/src/app/common/components/login/sign-in-alternate-email-modal/sign-in-alternate-email-modal.component.ts","./projects/apps-ui/src/app/common/components/login/login.component.html","./projects/apps-ui/src/app/common/components/login/login.component.ts","./projects/apps-ui/src/app/common/guards/available-services.guard.ts","./projects/apps-ui/src/app/common/guards/domain-user.guard.ts","./projects/apps-ui/src/app/pages/account/component/reset-password/reset-password.component.html","./projects/apps-ui/src/app/pages/account/component/reset-password/reset-password.component.ts","./projects/apps-ui/src/app/pages/account/component/account.component.html","./projects/apps-ui/src/app/pages/account/component/account.component.ts","./projects/apps-ui/src/app/pages/not-found/component/not-found.component.ts","./projects/apps-ui/src/app/pages/not-found/component/not-found.component.html","./projects/apps-ui/src/app/app-routing.module.ts","./projects/apps-ui/src/app/app.component.ts","./projects/apps-ui/src/app/app.component.html","./projects/apps-ui/src/app/app.module.ts","./projects/apps-ui/src/main.ts","./node_modules/@auth0/angular-jwt/fesm2015/auth0-angular-jwt.js","./node_modules/@sentry-internal/tracing/esm/extensions.js","./node_modules/@sentry/browser/node_modules/@sentry/utils/esm/node.js","./node_modules/@sentry/browser/node_modules/@sentry/utils/esm/env.js","./node_modules/@sentry/browser/node_modules/@sentry/utils/esm/time.js","./node_modules/@sentry/browser/node_modules/@sentry/utils/esm/worldwide.js","./node_modules/@sentry/core/esm/constants.js","./node_modules/@sentry/core/esm/exports.js","./node_modules/@sentry/core/esm/hub.js","./node_modules/@sentry/core/esm/scope.js","./node_modules/@sentry/core/esm/session.js","./node_modules/@sentry/core/esm/tracing/dynamicSamplingContext.js","./node_modules/@sentry/core/esm/tracing/errors.js","./node_modules/@sentry/core/esm/tracing/hubextensions.js","./node_modules/@sentry/core/esm/tracing/idletransaction.js","./node_modules/@sentry/core/esm/tracing/span.js","./node_modules/@sentry/core/esm/tracing/transaction.js","./node_modules/@sentry/core/esm/tracing/utils.js","./node_modules/@sentry/core/esm/utils/hasTracingEnabled.js","./node_modules/cross-fetch/dist/browser-ponyfill.js","./node_modules/dijkstrajs/dijkstra.js","./node_modules/encode-utf8/index.js","./node_modules/file-saver/dist/FileSaver.min.js","./node_modules/imask/esm/_rollupPluginBabelHelpers-6b3bd404.js","./node_modules/imask/esm/core/holder.js","./node_modules/imask/esm/core/change-details.js","./node_modules/imask/esm/core/utils.js","./node_modules/imask/esm/core/action-details.js","./node_modules/imask/esm/core/continuous-tail-details.js","./node_modules/imask/esm/masked/base.js","./node_modules/imask/esm/masked/factory.js","./node_modules/imask/esm/masked/pattern/input-definition.js","./node_modules/imask/esm/masked/pattern/fixed-definition.js","./node_modules/imask/esm/masked/pattern/chunk-tail-details.js","./node_modules/imask/esm/masked/pattern/cursor.js","./node_modules/imask/esm/masked/regexp.js","./node_modules/imask/esm/masked/pattern.js","./node_modules/imask/esm/masked/range.js","./node_modules/imask/esm/masked/date.js","./node_modules/imask/esm/controls/mask-element.js","./node_modules/imask/esm/controls/html-mask-element.js","./node_modules/imask/esm/controls/html-contenteditable-mask-element.js","./node_modules/imask/esm/controls/input.js","./node_modules/imask/esm/masked/enum.js","./node_modules/imask/esm/masked/number.js","./node_modules/imask/esm/masked/function.js","./node_modules/imask/esm/masked/dynamic.js","./node_modules/imask/esm/masked/pipe.js","./node_modules/imask/esm/index.js","./node_modules/jsbn/index.js","./node_modules/linq-collections/build/src/Collections.js","./node_modules/linq-collections/build/src/Comparers.js","./node_modules/linq-collections/build/src/Enumerables.js","./node_modules/linq-collections/build/src/Iterators.js","./node_modules/linq-collections/build/src/Linq.js","./node_modules/linq-collections/build/src/Utils.js","./node_modules/lodash/fp.js","./node_modules/lodash/fp/_baseConvert.js","./node_modules/lodash/fp/_mapping.js","./node_modules/lodash/fp/placeholder.js","./node_modules/lodash/lodash.js","./node_modules/lodash/lodash.min.js","./node_modules/moment/locale/es-us.js","./node_modules/moment/moment.js","./node_modules/qrcode/lib/browser.js","./node_modules/qrcode/lib/can-promise.js","./node_modules/qrcode/lib/core/alignment-pattern.js","./node_modules/qrcode/lib/core/alphanumeric-data.js","./node_modules/qrcode/lib/core/bit-buffer.js","./node_modules/qrcode/lib/core/bit-matrix.js","./node_modules/qrcode/lib/core/byte-data.js","./node_modules/qrcode/lib/core/error-correction-code.js","./node_modules/qrcode/lib/core/error-correction-level.js","./node_modules/qrcode/lib/core/finder-pattern.js","./node_modules/qrcode/lib/core/format-info.js","./node_modules/qrcode/lib/core/galois-field.js","./node_modules/qrcode/lib/core/kanji-data.js","./node_modules/qrcode/lib/core/mask-pattern.js","./node_modules/qrcode/lib/core/mode.js","./node_modules/qrcode/lib/core/numeric-data.js","./node_modules/qrcode/lib/core/polynomial.js","./node_modules/qrcode/lib/core/qrcode.js","./node_modules/qrcode/lib/core/reed-solomon-encoder.js","./node_modules/qrcode/lib/core/regex.js","./node_modules/qrcode/lib/core/segments.js","./node_modules/qrcode/lib/core/utils.js","./node_modules/qrcode/lib/core/version-check.js","./node_modules/qrcode/lib/core/version.js","./node_modules/qrcode/lib/renderer/canvas.js","./node_modules/qrcode/lib/renderer/svg-tag.js","./node_modules/qrcode/lib/renderer/utils.js","./node_modules/rxjs/dist/esm/internal/BehaviorSubject.js","./node_modules/rxjs/dist/esm/internal/Observable.js","./node_modules/rxjs/dist/esm/internal/ReplaySubject.js","./node_modules/rxjs/dist/esm/internal/util/ObjectUnsubscribedError.js","./node_modules/rxjs/dist/esm/internal/Subject.js","./node_modules/rxjs/dist/esm/internal/NotificationFactories.js","./node_modules/rxjs/dist/esm/internal/Subscriber.js","./node_modules/rxjs/dist/esm/internal/util/UnsubscriptionError.js","./node_modules/rxjs/dist/esm/internal/Subscription.js","./node_modules/rxjs/dist/esm/internal/config.js","./node_modules/rxjs/dist/esm/internal/observable/ConnectableObservable.js","./node_modules/rxjs/dist/esm/internal/observable/combineLatest.js","./node_modules/rxjs/dist/esm/internal/observable/concat.js","./node_modules/rxjs/dist/esm/internal/operators/concatAll.js","./node_modules/rxjs/dist/esm/internal/observable/defer.js","./node_modules/rxjs/dist/esm/internal/observable/empty.js","./node_modules/rxjs/dist/esm/internal/observable/forkJoin.js","./node_modules/rxjs/dist/esm/internal/observable/from.js","./node_modules/rxjs/dist/esm/internal/observable/fromEvent.js","./node_modules/rxjs/dist/esm/internal/observable/innerFrom.js","./node_modules/rxjs/dist/esm/internal/observable/merge.js","./node_modules/rxjs/dist/esm/internal/observable/of.js","./node_modules/rxjs/dist/esm/internal/observable/throwError.js","./node_modules/rxjs/dist/esm/internal/observable/timer.js","./node_modules/rxjs/dist/esm/internal/util/isDate.js","./node_modules/rxjs/dist/esm/internal/observable/zip.js","./node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js","./node_modules/rxjs/dist/esm/internal/operators/auditTime.js","./node_modules/rxjs/dist/esm/internal/operators/audit.js","./node_modules/rxjs/dist/esm/internal/operators/catchError.js","./node_modules/rxjs/dist/esm/internal/operators/concatMap.js","./node_modules/rxjs/dist/esm/internal/operators/debounceTime.js","./node_modules/rxjs/dist/esm/internal/operators/defaultIfEmpty.js","./node_modules/rxjs/dist/esm/internal/operators/delayWhen.js","./node_modules/rxjs/dist/esm/internal/operators/ignoreElements.js","./node_modules/rxjs/dist/esm/internal/operators/delay.js","./node_modules/rxjs/dist/esm/internal/operators/distinctUntilChanged.js","./node_modules/rxjs/dist/esm/internal/operators/filter.js","./node_modules/rxjs/dist/esm/internal/operators/finalize.js","./node_modules/rxjs/dist/esm/internal/operators/first.js","./node_modules/rxjs/dist/esm/internal/operators/map.js","./node_modules/rxjs/dist/esm/internal/operators/mapTo.js","./node_modules/rxjs/dist/esm/internal/operators/mergeAll.js","./node_modules/rxjs/dist/esm/internal/operators/mergeInternals.js","./node_modules/rxjs/dist/esm/internal/operators/mergeMap.js","./node_modules/rxjs/dist/esm/internal/operators/pairwise.js","./node_modules/rxjs/dist/esm/internal/operators/refCount.js","./node_modules/rxjs/dist/esm/internal/operators/scan.js","./node_modules/rxjs/dist/esm/internal/operators/scanInternals.js","./node_modules/rxjs/dist/esm/internal/operators/share.js","./node_modules/rxjs/dist/esm/internal/operators/shareReplay.js","./node_modules/rxjs/dist/esm/internal/operators/startWith.js","./node_modules/rxjs/dist/esm/internal/operators/switchMap.js","./node_modules/rxjs/dist/esm/internal/operators/take.js","./node_modules/rxjs/dist/esm/internal/operators/takeUntil.js","./node_modules/rxjs/dist/esm/internal/operators/takeWhile.js","./node_modules/rxjs/dist/esm/internal/operators/tap.js","./node_modules/rxjs/dist/esm/internal/operators/throwIfEmpty.js","./node_modules/rxjs/dist/esm/internal/operators/observeOn.js","./node_modules/rxjs/dist/esm/internal/operators/subscribeOn.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleAsyncIterable.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduled.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleObservable.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleArray.js","./node_modules/rxjs/dist/esm/internal/scheduled/schedulePromise.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleIterable.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleReadableStreamLike.js","./node_modules/rxjs/dist/esm/internal/scheduler/Action.js","./node_modules/rxjs/dist/esm/internal/scheduler/intervalProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsyncAction.js","./node_modules/rxjs/dist/esm/internal/Scheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsyncScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/animationFrameProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/animationFrame.js","./node_modules/rxjs/dist/esm/internal/scheduler/AnimationFrameScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AnimationFrameAction.js","./node_modules/rxjs/dist/esm/internal/util/Immediate.js","./node_modules/rxjs/dist/esm/internal/scheduler/immediateProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/asap.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsapScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsapAction.js","./node_modules/rxjs/dist/esm/internal/scheduler/async.js","./node_modules/rxjs/dist/esm/internal/scheduler/dateTimestampProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/timeoutProvider.js","./node_modules/rxjs/dist/esm/internal/symbol/iterator.js","./node_modules/rxjs/dist/esm/internal/symbol/observable.js","./node_modules/rxjs/dist/esm/internal/util/EmptyError.js","./node_modules/rxjs/dist/esm/internal/util/args.js","./node_modules/rxjs/dist/esm/internal/util/argsArgArrayOrObject.js","./node_modules/rxjs/dist/esm/internal/util/argsOrArgArray.js","./node_modules/rxjs/dist/esm/internal/util/arrRemove.js","./node_modules/rxjs/dist/esm/internal/util/createErrorClass.js","./node_modules/rxjs/dist/esm/internal/util/createObject.js","./node_modules/rxjs/dist/esm/internal/util/errorContext.js","./node_modules/rxjs/dist/esm/internal/util/executeSchedule.js","./node_modules/rxjs/dist/esm/internal/util/identity.js","./node_modules/rxjs/dist/esm/internal/util/isArrayLike.js","./node_modules/rxjs/dist/esm/internal/util/isAsyncIterable.js","./node_modules/rxjs/dist/esm/internal/util/isFunction.js","./node_modules/rxjs/dist/esm/internal/util/isInteropObservable.js","./node_modules/rxjs/dist/esm/internal/util/isIterable.js","./node_modules/rxjs/dist/esm/internal/util/isObservable.js","./node_modules/rxjs/dist/esm/internal/util/isPromise.js","./node_modules/rxjs/dist/esm/internal/util/isReadableStreamLike.js","./node_modules/rxjs/dist/esm/internal/util/isScheduler.js","./node_modules/rxjs/dist/esm/internal/util/lift.js","./node_modules/rxjs/dist/esm/internal/util/mapOneOrManyArgs.js","./node_modules/rxjs/dist/esm/internal/util/noop.js","./node_modules/rxjs/dist/esm/internal/util/pipe.js","./node_modules/rxjs/dist/esm/internal/util/reportUnhandledError.js","./node_modules/rxjs/dist/esm/internal/util/throwUnobservableError.js","./node_modules/sprintf-js/src/sprintf.js","./node_modules/moment/locale/ sync [/\\\\](es-us(\\.js)","./node_modules/i18next-http-backend/esm/getFetch.cjs","./node_modules/@angular/cdk/fesm2022/bidi.mjs","./node_modules/@angular/cdk/fesm2022/coercion.mjs","./node_modules/@angular/cdk/fesm2022/collections.mjs","./node_modules/@angular/cdk/fesm2022/observers.mjs","./node_modules/@angular/cdk/fesm2022/platform.mjs","./node_modules/@angular/cdk/fesm2022/scrolling.mjs","./node_modules/@angular/cdk/fesm2022/tree.mjs","./node_modules/@angular/common/fesm2022/common.mjs","./node_modules/@angular/common/fesm2022/http.mjs","./node_modules/@angular/core/fesm2022/core.mjs","./node_modules/@angular/forms/fesm2022/forms.mjs","./node_modules/@angular/platform-browser/fesm2022/platform-browser.mjs","./node_modules/rxjs/dist/esm/internal/operators/takeLast.js","./node_modules/@angular/router/fesm2022/router.mjs","./node_modules/rxjs/dist/esm/internal/operators/last.js","./node_modules/rxjs/dist/esm/internal/observable/race.js","./node_modules/rxjs/dist/esm/internal/observable/never.js","./node_modules/rxjs/dist/esm/internal/operators/withLatestFrom.js","./node_modules/@ng-bootstrap/ng-bootstrap/fesm2020/ng-bootstrap.mjs","./node_modules/rxjs/dist/esm/internal/operators/endWith.js","./node_modules/@ng-select/ng-select/fesm2020/ng-select-ng-select.mjs","./node_modules/@ngneat/until-destroy/fesm2020/ngneat-until-destroy.mjs","./node_modules/@babel/runtime/helpers/esm/typeof.js","./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","./node_modules/@babel/runtime/helpers/esm/defineProperty.js","./node_modules/@babel/runtime/helpers/esm/objectSpread.js","./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","./node_modules/@babel/runtime/helpers/esm/createClass.js","./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","./node_modules/@babel/runtime/helpers/esm/inherits.js","./node_modules/i18next/dist/esm/i18next.js","./node_modules/angular-i18next/fesm2022/angular-i18next.mjs","./node_modules/angular-imask/fesm2020/angular-imask.mjs","./node_modules/angularx-qrcode/fesm2022/angularx-qrcode.mjs","./node_modules/ng-let/fesm2020/ng-let.mjs","./node_modules/ng-svg-icon-sprite/fesm2020/ng-svg-icon-sprite.mjs","./node_modules/rxjs/dist/esm/internal/operators/throttle.js","./node_modules/ngx-infinite-scroll/fesm2020/ngx-infinite-scroll.mjs","./node_modules/rxjs/dist/esm/internal/operators/throttleTime.js","./node_modules/ngx-scrollbar/fesm2022/ngx-scrollbar-smooth-scroll.mjs","./node_modules/rxjs/dist/esm/internal/operators/expand.js","./node_modules/ngx-scrollbar/fesm2022/ngx-scrollbar.mjs","./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","./node_modules/tslib/tslib.es6.mjs"],"sourcesContent":["export const I18_NAMESPACES_MBS_UI_KIT = ['mbs-ui-kit'];\n\nexport const I18_NAMESPACES_MBS_UI_SHARED = ['shared-tfa'];\n\nexport const I18_NAMESPACES_MBS_UI = [\n 'app',\n 'access',\n 'validation',\n 'wizards',\n 'overdue',\n 'immutability',\n 'error',\n 'agent-options',\n 'feedback',\n 'sidepanel-online-access',\n 'sidepanel-downloads',\n 'download-connect.module',\n 'sidepanel-preinstall-settings',\n 'builds',\n 'bandwidth-settings',\n 'licenses',\n 'rmm.module',\n 'quick-restore-modal',\n 'download-connect.module',\n 'computers.module',\n 'sidepanel-backup',\n 'unable-emails-modal',\n 'maintenance',\n 'alerts'\n];\n\nexport const I18_NAMESPACES_ONLINE_ACCESS = ['app', 'computers.module', 'sidepanel-backup'];\n\nexport enum I18_NAMESPACE_APPS_UI {\n account = 'my-account.module',\n app = 'app',\n audit = 'audit.module',\n backupHistory = 'backup-history.module',\n button = 'button',\n calendar = 'calendar.module',\n chart = 'chart.module',\n contacts = 'contacts.module',\n dashboard = 'dashboard.module',\n dontHavePermission = 'dont-have-permission.module',\n drive = 'drive.module', // base module for Drive, SharePoint, Shared Drives, Teams pages\n history = 'history.module',\n mail = 'mail.module',\n payments = 'payments.module',\n policy = 'retention-policy.module',\n reports = 'reports.module',\n results = 'export-results.module',\n skipItems = 'skipped-items-history.module',\n tasks = 'task-manager.module',\n users = 'users.module'\n}\n\nexport const I18_NAMESPACES_APPS_UI = [\n I18_NAMESPACE_APPS_UI.app,\n I18_NAMESPACE_APPS_UI.account,\n I18_NAMESPACE_APPS_UI.button,\n I18_NAMESPACE_APPS_UI.dontHavePermission,\n I18_NAMESPACE_APPS_UI.policy\n];\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n QueryList,\n Renderer2,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { NgbAccordion, NgbPanelChangeEvent } from '@ng-bootstrap/ng-bootstrap';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { host } from '../utils';\nimport { isNil } from 'lodash';\n\nlet nextId = 0;\n\n@Directive({\n selector: '[panelIconHeader]'\n})\nexport class PanelIconHeader {\n constructor(public template: TemplateRef) {}\n}\n@Directive({\n selector: '[topControlsPrependLabel]'\n})\nexport class TopControlsPrependDescription {\n constructor(public template: TemplateRef) {}\n}\n@Directive({\n selector: '[topControlsAppendLabel]'\n})\nexport class TopControlsAppendDescription {\n constructor(public template: TemplateRef) {}\n}\n@Directive({\n selector: '[rowTemplate]'\n})\nexport class AccordionRowTemplate {\n constructor(public template: TemplateRef) {}\n}\n\nexport interface PanelRowData {\n checked?: boolean;\n disabled?: boolean;\n data: any;\n}\n\n@UntilDestroy()\n@Component({\n selector: 'mbs-accordion-panel',\n template: `\n \n \n \n \n `\n})\nexport class AccordionPanelComponent implements AfterViewInit {\n @ViewChild('appendHeaderTemplate', { static: false }) public appendHeaderTemplate: TemplateRef;\n @ViewChild('prependHeaderTemplate', { static: false }) public prependHeaderTemplate: TemplateRef;\n @ViewChild('titleTemplate', { static: false }) public titleTemplate: TemplateRef;\n @ViewChild('bodyTemplate', { static: false }) public bodyTemplate: TemplateRef;\n @ContentChild(PanelIconHeader, { static: true, read: PanelIconHeader }) panelIconHeader: PanelIconHeader;\n @ContentChild(AccordionRowTemplate, { static: false, read: AccordionRowTemplate })\n rowTemplate: AccordionRowTemplate;\n\n @Input() public fullWidthLabel = false;\n\n /**\n * If `true`, the panel is disabled an can't be toggled.\n */\n @Input() public disabled = false;\n\n /**\n * If `true`, the panel will be kept opened when the \"disabled\" input is set to `true`.\n */\n @Input() public keepOpened = false;\n\n /**\n * If `true`, when \"checkboxes\" is turned to `true` - hide checkboxes themselves.\n */\n @Input() public hideCheckboxes = false;\n\n /**\n * Array of items to use as context in panelRows.\n */\n @Input() public rows: PanelRowData[] = [];\n\n /**\n * Panel unique id. If not provided, it will be auto-generated in the accordion-panel-xxx format.\n */\n @Input() public id = `accordion-panel-${nextId++}`;\n /**\n * The panel title.
\n * You can alternatively use `` to set panel title template.\n */\n @Input() public title: string;\n /**\n * Type of the current panel.
\n * Bootstrap provides styles for the following types: `success`, `info`, `warning`, `danger`, `primary`, `secondary`, `light` and `dark`.\n */\n @Input() public type: string;\n\n /**\n * If checkbox tree items can be hidden\n */\n @Input() itemsCanBeHidden = false;\n\n /**\n * show/hide panel\n */\n @Input() shown = true;\n\n @Input() public selectedAll = true;\n\n @Output() public changeHeader = new EventEmitter<{ event: boolean; panelId: string }>();\n @Output() public change = new EventEmitter<{ panelId: string; row: any; event: boolean }>();\n\n public selectedCount: number;\n public get all(): number {\n return this.rows.length || 0;\n }\n public indeterminate = false;\n\n constructor() {}\n\n ngAfterViewInit(): void {\n if (!isNil(this.rowTemplate)) {\n this.checkPanelCheckboxStatus();\n this.countSelected();\n }\n }\n\n countSelected(): void {\n if (isNil(this.rows)) {\n this.selectedCount = 0;\n return;\n }\n this.selectedCount = this.rows.filter((row) => row.checked).length;\n }\n\n checkPanelCheckboxStatus(event?: boolean, row?: PanelRowData): void {\n if (!isNil(row) && !isNil(event)) {\n row.checked = event;\n this.change.emit({\n event,\n row,\n panelId: this.id\n });\n }\n const first = this.rows[0];\n const same = this.rows.every((row) => {\n return row.checked === first.checked;\n });\n if (same) {\n this.selectedAll = first.checked;\n this.indeterminate = false;\n } else {\n this.indeterminate = true;\n }\n this.countSelected();\n }\n\n headerCheckboxChangeHandler(event: boolean, emit = true): void {\n this.rows.forEach((row) => {\n if (!row.disabled) row.checked = event;\n });\n this.checkPanelCheckboxStatus(event);\n this.countSelected();\n if (emit) {\n this.changeHeader.emit({ panelId: this.id, event });\n }\n }\n}\n\n/**\n * Accordion is a collection of collapsible panels.
\n * It can ensure only one panel is opened at a time and allows to customize panel headers.
\n * Based on NgbAccordion\n */\n@UntilDestroy()\n@Component({\n selector: 'mbs-accordion',\n templateUrl: './accordion.component.html'\n})\nexport class AccordionComponent implements AfterViewInit {\n /**\n * An array or comma separated strings of panel ids that should be opened *initially*.
\n * For subsequent changes use methods like `expand()`, `collapse()`, etc. and the `(panelChange)` event.\n */\n @Input() public activeIds: string | string[] = [];\n\n /**\n * Defines label position.\n *\n * If `toggle` - label click toggles accordion panel;\n *\n * If `check` - label click toggles checkbox;\n *\n */\n @Input() labelMode: 'toggle' | 'check' = 'toggle';\n /**\n * If `true`, only one panel could be opened at a time.
\n * Opening a new panel will close others.\n */\n @Input() public closeOthers: boolean;\n /**\n * If `true`, panel content will be detached from DOM and not simply hidden when the panel is collapsed.\n */\n @Input() public destroyOnHide = false;\n /**\n * Type of panels.
\n * Bootstrap provides styles for the following types: `success`, `info`, `warning`, `danger`, `primary`, `secondary`, `light` and `dark`.\n */\n @Input() public type: string;\n\n @Input() public toggleButtonClass: string;\n\n @Input() public isTitlePrimary = true\n @Input() public arrow = true;\n @Input() public arrowPosition: 'right' | 'left' = 'right'\n @Input() public checkboxes = false;\n @Input() public size: 'small' | 'large' | 'sm' | 'lg' | '' = '';\n @Input() public maxHeight: string;\n\n @Input() public showTopControls = false;\n @Input() public topControlsLabel = false;\n @Input() public topControlsLabelSelected = false;\n @Input() public topControlsDescription = '';\n\n @Input() public xScroll = false;\n\n @Input() public isDefaultView = true;\n\n @Input() public withoutBorder = false;\n\n @Input() public narrowHeader = false;\n @Input() public align: 'left' | null = null;\n\n /**\n * Event emitted right before the panel toggle happens.
\n * See \n * `NgbPanelChangeEvent` for payload details.\n */\n @Output() public panelChange = new EventEmitter();\n\n @ViewChild('innerAccordion', { static: false }) public innerAccordion: NgbAccordion;\n /**\n * Helper component. Analogue of\n * `ng-panel`\n * in `ng-accordion`.
Contains all similar inputs.\n */\n @ContentChildren(AccordionPanelComponent) public panels: QueryList;\n\n @ContentChild(TopControlsPrependDescription, { static: true, read: TopControlsPrependDescription })\n topControlsPrependLabel: TopControlsPrependDescription;\n\n @ContentChild(TopControlsAppendDescription, { static: true, read: TopControlsAppendDescription })\n topControlsAppendLabel: TopControlsAppendDescription;\n\n private correctTags = new Set(['SPAN', 'IMG', 'B', 'I', 'STRONG', 'EM', 'BR']);\n\n public checkedTop: boolean;\n public indeterminateTop: boolean;\n public selectedInAllPanels: number;\n\n @Output() public changeHeader = new EventEmitter<{ event: boolean; panelId: string }>();\n @Output() public change = new EventEmitter<{ panelId: string; row: any; event: boolean }>();\n @Output() public changeTotalSelectedCount = new EventEmitter();\n @Output() public changeTop = new EventEmitter();\n\n constructor(private cdRef: ChangeDetectorRef, private elem: ElementRef, private renderer2: Renderer2) {}\n\n ngAfterViewInit(): void {\n if (this.checkboxes && this.showTopControls) {\n this.panels.forEach((panel) => {\n panel.checkPanelCheckboxStatus();\n panel.changeHeader.pipe(untilDestroyed(this)).subscribe((event) => {\n this.checkMainCheckboxStatus();\n this.changeHeader.emit(event);\n });\n panel.change.pipe(untilDestroyed(this)).subscribe((event) => {\n this.change.emit(event);\n });\n });\n this.checkMainCheckboxStatus();\n this.countTotalSelected();\n }\n this.innerAccordion.panelChange.pipe(untilDestroyed(this)).subscribe((event: NgbPanelChangeEvent) => {\n this.panelChange.emit(event);\n });\n\n setTimeout(() => {\n this.checkTittleTags();\n this.updateCardClasses();\n }, 100);\n\n this.cdRef.detectChanges();\n }\n\n countTotalSelected(): void {\n this.selectedInAllPanels = this.panels.reduce((total, panel) => {\n return total + panel.selectedCount;\n }, 0);\n this.checkMainCheckboxStatus();\n }\n\n checkMainCheckboxStatus(): void {\n const panelArray = this.panels.toArray();\n const firstPanel = panelArray[0];\n const same = panelArray.every((panel) => {\n return panel.selectedAll === firstPanel.selectedAll && !panel.indeterminate;\n });\n\n if (same) {\n this.checkedTop = firstPanel.selectedAll;\n this.indeterminateTop = false;\n } else {\n this.indeterminateTop = true;\n }\n }\n\n handleChangePanelHeaderCheckbox(event: boolean, panel: AccordionPanelComponent): void {\n panel.headerCheckboxChangeHandler(event);\n this.checkMainCheckboxStatus();\n }\n\n checkTittleTags(): void {\n const tittleButtons = host(this.elem).querySelectorAll('.mbs-accordion_title') as NodeList;\n tittleButtons.forEach((btn: Element) => {\n if (btn.children.length) {\n for (const tittle of Array.from(btn.children)) {\n if (!this.correctTags.has(tittle.tagName)) {\n console.error(`Please use only the tags from the list for the panel title: ${Array.from(this.correctTags).join(' , ')}`);\n }\n }\n }\n });\n }\n\n topControlsCheckboxChangeHandler(event: boolean): void {\n this.panels.forEach((panel: AccordionPanelComponent) => {\n panel.headerCheckboxChangeHandler(event, false);\n });\n this.countTotalSelected();\n this.changeTop.emit(event);\n }\n\n isExpanded(panelId: string): boolean {\n return this.innerAccordion && this.innerAccordion.isExpanded(panelId);\n }\n\n expandAll(): void {\n this.innerAccordion.expandAll();\n }\n\n expand(panelId: string): void {\n this.innerAccordion.expand(panelId);\n }\n\n collapse(panelId: string): void {\n this.innerAccordion.collapse(panelId);\n }\n\n collapseAll(): void {\n this.innerAccordion.collapseAll();\n }\n\n toggle(panelId: string): void {\n this.innerAccordion.toggle(panelId);\n }\n\n // TODO: need refactored after update bootstrap to v5.3.0. Will be use [cardClass]='some classes'\n public onClickHeaderPanel(event: MouseEvent, isExpanded: boolean): void {\n const card = (event.target as Element).closest('.card');\n if (this.closeOthers) {\n this.updateCardClasses();\n } else {\n this.toggleClassExpanded(card, isExpanded);\n }\n }\n\n // TODO: need refactored after update bootstrap to v5.3.0. Will be use [cardClass]='some classes'\n private toggleClassExpanded(elem: Element, isExpanded: boolean): void {\n const addedClass = '-expanded';\n this.toggleClass(elem, addedClass, isExpanded);\n }\n\n // TODO: need refactored after update bootstrap to v5.3.0. Will be use [cardClass]='some classes'\n private updateCardClasses = (): void => {\n const mbsAccordion = host(this.elem).querySelector('.mbs-accordion');\n this.panels.forEach((panel: AccordionPanelComponent) => {\n const isExpanded = (panel.disabled && panel.keepOpened) || this.innerAccordion.isExpanded(panel.id);\n const panelEl = mbsAccordion.querySelector(`#${panel.id}`);\n if (panelEl) {\n const card = panelEl.closest('.card');\n if (!panel.disabled || (panel.disabled && panel.keepOpened)) {\n const el = card.querySelector('.collapse');\n this.toggleClass(el, 'show', isExpanded);\n }\n this.toggleClassExpanded(card, isExpanded);\n }\n });\n };\n\n private toggleClass = (elem: Element, cssClass: string, condition: boolean): void => {\n const methods = condition\n ? {\n r2: () => this.renderer2?.addClass(elem, cssClass),\n native: () => elem?.classList.add(cssClass)\n }\n : {\n r2: () => this.renderer2?.removeClass(elem, cssClass),\n native: () => elem?.classList.remove(cssClass)\n };\n try {\n methods.r2();\n } catch {\n methods.native();\n }\n };\n\n handleCountTotalSelected(): void {\n this.changeTotalSelectedCount.emit(this.selectedInAllPanels);\n }\n}\n","
\n\n
\n\n
\n \n
\n\n
\n {{ topControlsDescription }}\n
\n\n
\n\n
\n\n\n\n \n\n \n {{ selectedInAllPanels }}\n \n\n \n\n\n\n\n\n \n\n \n\n \n\n \n\n \n
\n\n
\n\n \n\n
\n\n
\n\n \n \n \n\n \n\n
\n\n
\n\n
\n\n \n\n \n\n \n\n
\n\n
\n\n \n \n \n\n \n\n \n \n \n\n
\n\n
\n\n \n\n
\n\n \n \n \n\n
\n\n \n \n \n\n \n\n
\n\n \n\n \n \n \n\n \n
\n\n \n
\n
\n\n\n
\n\n
\n\n
\n\n \n\n \n\n \n\n \n\n
\n \n
\n\n
\n\n
\n\n \n\n
\n\n \n
\n\n \n\n \n
\n \n
\n
\n\n
\n
\n\n \n\n
\n\n
\n\n
\n\n \n
\n \n
\n
\n\n
\n\n
\n\n
\n\n
\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NgbAccordionModule } from '@ng-bootstrap/ng-bootstrap';\nimport { NgScrollbarModule } from 'ngx-scrollbar';\nimport { CheckboxModule } from '../form/checkbox/checkbox.module';\nimport { TreeModule } from '../tree/tree.module';\nimport {\n AccordionComponent,\n AccordionPanelComponent,\n AccordionRowTemplate,\n PanelIconHeader,\n TopControlsAppendDescription,\n TopControlsPrependDescription\n} from './accordion.component';\n\n@NgModule({\n declarations: [\n AccordionComponent,\n AccordionPanelComponent,\n PanelIconHeader,\n TopControlsAppendDescription,\n TopControlsPrependDescription,\n AccordionRowTemplate\n ],\n imports: [\n CommonModule,\n NgbAccordionModule,\n CheckboxModule,\n TreeModule,\n NgScrollbarModule\n ],\n exports: [\n AccordionComponent,\n AccordionPanelComponent,\n TopControlsAppendDescription,\n TopControlsPrependDescription,\n AccordionRowTemplate,\n PanelIconHeader\n ]\n})\nexport class AccordionModule {}\n","import { AdvancedSearchModel } from './advanced-search-model';\n\nexport class AdvancedSearchParser {\n public static get tagsRegex(): RegExp {\n return new RegExp(/(([\\s\\S]+?):\\s*({([\\s\\S]+?)}|[\\s\\S]+?)?|(#\\S+?))(\\s|$)/g);\n }\n\n \n public static getModel(content: string, tags: string[]): AdvancedSearchModel {\n const reg = AdvancedSearchParser.tagsRegex;\n let result;\n const model: AdvancedSearchModel = {};\n\n const findFullMatchTag = (tag: string, sourceTags: string[]): string => {\n // eslint-disable-next-line @typescript-eslint/prefer-regexp-exec\n const lastWord = tag.match(/\\S+\\s*$/)[0];\n const filterTags = sourceTags.filter(t => t.includes(lastWord));\n\n return filterTags.length > 1\n ? findFullMatchTag(tag.substring(0, Math.max(tag.length - lastWord.length, 0)), filterTags)\n : filterTags[0];\n };\n\n const matchWords = (value: string): void => {\n const words = value.split(/\\s+/).filter(v => !!v);\n if (words.length > 0) {\n if (!model.words) {\n model.words = words;\n } else {\n model.words.push(...words);\n }\n }\n };\n\n let copyContent = String(content);\n\n while ((result = reg.exec(content))) {\n const resultArr = result as RegExpExecArray;\n const tag = findFullMatchTag(resultArr[2], tags) || '';\n let nonTagPart = resultArr[2].substring(0, resultArr[2].length - tag.length);\n if (tag) {\n if (!model[tag]) {\n model[tag] = [];\n }\n const r = resultArr[4] || resultArr[3];\n if (r) {\n (model[tag] as string[]).push(r);\n }\n } else {\n nonTagPart = resultArr[1];\n }\n\n matchWords(nonTagPart);\n\n const index = copyContent.indexOf(resultArr[1]);\n copyContent = copyContent.substring(0, index) + copyContent.substring(index + resultArr[1].length);\n }\n\n matchWords(copyContent);\n return model;\n }\n}\n","
\n\n
\n
\n
\n
\n {{ placeholder }}\n
\n
\n
\n
\n \n
\n\n 0\"\n title=\"{{ 'mbs-ui-kit:advanced-search.labels.clear' | i18next }}\"\n (click)=\"handleClear()\"\n icon=\"ico ico-Delete-text mr-0 px-2\">\n \n
\n\n
\n \n
\n\n
\n \n \n
\n
\n\n
\n \n \n \n
\n\n
\n \n
\n\n
\n","import { DOCUMENT } from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostListener,\n Inject,\n Input,\n OnDestroy,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ActivatedRoute, NavigationExtras, Router } from '@angular/router';\nimport { NgbDropdown, NgbDropdownMenu } from '@ng-bootstrap/ng-bootstrap';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { cloneDeep } from 'lodash';\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { AdvancedSearchModel } from './advanced-search-model';\nimport { AdvancedSearchParser } from './advanced-search-parser';\nimport { Template } from './Template';\n\nexport const ADVANCED_SEARCH_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n // eslint-disable-next-line no-use-before-define\n useExisting: forwardRef(() => AdvancedSearchComponent),\n multi: true\n};\n\n@UntilDestroy()\n@Component({\n selector: 'mbs-advanced-search',\n templateUrl: './advanced-search.component.html',\n providers: [ADVANCED_SEARCH_VALUE_ACCESSOR]\n})\nexport class AdvancedSearchComponent implements OnDestroy, ControlValueAccessor, AfterContentInit {\n private _mbsSelectOpenedNgOptions: HTMLElement[] = [];\n\n constructor(\n private route: ActivatedRoute,\n private router: Router,\n @Inject(DOCUMENT) private doc: Document,\n private cd: ChangeDetectorRef\n ) {\n this.items$.pipe(filter(Boolean), untilDestroyed(this)).subscribe((items) => {\n this.unwrapItems = items;\n this.showDropdown = items.length > 0;\n this.cd.markForCheck();\n });\n }\n\n @Input() searchFormTemplate: TemplateRef;\n @Input() placeholder = 'Enter Search Request';\n\n /**\n * Class for span inside of search button\n */\n @Input() searchIcon = 'ico ico-Search';\n\n set value(value: AdvancedSearchModel) {\n this.myModel = value;\n this.notifyValueChange();\n }\n\n get value(): AdvancedSearchModel {\n return this.myModel;\n }\n public get searchContent(): string {\n return this.advancedSearch.nativeElement.textContent;\n }\n public set searchContent(v: string) {\n if (v) {\n this.advancedSearch.nativeElement.innerHTML = v.replace(/\\s+/g, ' ');\n this.parseContent(v, this.caret);\n }\n }\n\n public get searchHasFocus() {\n return this.doc.activeElement === this.advancedSearch.nativeElement;\n }\n\n public myModel: AdvancedSearchModel;\n public caret = 0;\n public tagInfo: Template;\n /**\n * Current index for selected item in list of autocomplete\n */\n public selectedItemIndex = -1;\n public showDropdown = false;\n\n public readonly lastWord$ = new BehaviorSubject('');\n public readonly items$ = new BehaviorSubject(undefined);\n public unwrapItems: string[] = [];\n public formatter: (val: any) => string;\n\n @ViewChild('advancedSearch', { static: true }) advancedSearch: ElementRef;\n @ViewChild('ngbDropdownMenuRef', { static: false, read: NgbDropdownMenu }) ngbDropdownMenu: NgbDropdownMenu;\n\n /**\n * dropdown height value.\n */\n @Input() dropdownHeight: string | number;\n\n /**\n * if `true` - search box will NOT include tags that already presented in search field into dropdown.\n * If user write duplicate tag manually it will be ignored;\n */\n @Input() disableMultiTag = true;\n @Input() data: Template[] = [];\n\n /**\n * `true` - read and edit url query\n * `false` - ignore url query\n */\n @Input() accessUrlQuery = true;\n\n @Output() search = new EventEmitter();\n\n onChange: (value) => void;\n onTouched: () => void;\n subscription: Subscription;\n\n searching: boolean;\n\n /**\n * Default tags formatter. Example `tagName:`\n * @param {val} val\n * @return {string}\n */\n @Input() tagsFormatter = (val: any): string => String(val) + ':';\n @Input() needClearOnDestroy = false;\n\n @HostListener('document:click', ['$event'])\n closeDropdown(event: MouseEvent): void {\n if (!this.advancedSearch.nativeElement.contains(event.target as Node) || this.isOpenedNgbDropdownMenu()) {\n this.showDropdown = false;\n }\n }\n\n @HostListener('document:mousedown', ['$event.target'])\n closeDropdownMenu(target: HTMLElement): void {\n if (this.isClickedOutsideNgbDropdownMenu(target)) {\n const dropdown = this.ngbDropdownMenu.dropdown as NgbDropdown;\n dropdown.close();\n }\n }\n\n private isClickedOutsideNgbDropdownMenu(target: HTMLElement): boolean {\n const isMbsSelectOptionClicked: boolean = this.isMbsSelectOptionClicked(target);\n\n const dropdownRef = (this.ngbDropdownMenu.dropdown as NgbDropdown)['_elementRef'] as ElementRef;\n return (\n this.isOpenedNgbDropdownMenu() &&\n !dropdownRef.nativeElement.contains(target) &&\n !isMbsSelectOptionClicked &&\n !this.isMbsDatepickerClicked(target) &&\n !this.isMbsTimepickerClicked(target)\n );\n }\n\n private isOpenedNgbDropdownMenu(): boolean {\n return this.ngbDropdownMenu && (this.ngbDropdownMenu.dropdown as NgbDropdown)._open;\n }\n\n private isMbsSelectOptionClicked(target: HTMLElement): boolean {\n const ngOptions: HTMLElement[] = this.ngbDropdownMenuNgSelectOptions();\n this._mbsSelectOpenedNgOptions = ngOptions.length > 0 ? ngOptions : this._mbsSelectOpenedNgOptions;\n return this._mbsSelectOpenedNgOptions.some((option) => option.contains(target));\n }\n\n private ngbDropdownMenuNgSelectOptions(): HTMLElement[] {\n const dropdownRef = (this.ngbDropdownMenu.dropdown as NgbDropdown)['_elementRef'] as ElementRef;\n return Array.from(dropdownRef.nativeElement.querySelectorAll('ng-select.ng-select-opened ng-dropdown-panel .ng-option'));\n }\n\n private isMbsDatepickerClicked(target: HTMLElement): boolean {\n return target.closest('ngb-datepicker') && !target.closest('mbs-datepicker');\n }\n\n private isMbsTimepickerClicked(target: HTMLElement): boolean {\n return target.closest('ngb-timepicker') && !target.closest('mbs-timepicker');\n }\n\n ngOnDestroy(): void {\n this.needClearOnDestroy && this.handleClear();\n }\n\n ngAfterContentInit(): void {\n if (this.accessUrlQuery) {\n this.advancedSearch.nativeElement.textContent = this.route.snapshot.queryParamMap.get('search');\n this.handleParseModel();\n }\n }\n\n notifyValueChange(): void {\n if (this.onChange) {\n this.onChange(this.value);\n }\n }\n\n writeValue(obj: AdvancedSearchModel): void {\n if (!obj) {\n return;\n }\n this.myModel = obj;\n const copy = cloneDeep(obj);\n delete copy.words;\n\n this.searchContent = Object.keys(copy)\n .map((k) => `${k}: ${copy[k] as string}`)\n .join(' ');\n if (obj.words) {\n this.searchContent = this.searchContent + ' ' + obj.words.join(' ');\n }\n }\n\n registerOnChange(fn: (value) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n handleParseModel(): void {\n this.value = AdvancedSearchParser.getModel(\n this.searchContent,\n this.data.map((m) => m.tag)\n );\n }\n\n handleClear(): void {\n this.advancedSearch.nativeElement.innerHTML = '';\n this.handleRoute();\n }\n\n handlePasteEvent(event: ClipboardEvent): void {\n // cancel paste\n event.preventDefault();\n\n // get text representation of clipboard\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const text = (((event as any).originalEvent as ClipboardEvent) || event).clipboardData.getData('text/plain');\n\n // insert text manually\n document.execCommand('insertText', false, text);\n }\n\n handleDropEvent(event: DragEvent): void {\n event.preventDefault();\n\n const text = event.dataTransfer.getData('text/plain');\n this.advancedSearch.nativeElement.focus();\n // this.pasteValue(text);\n document.execCommand('insertText', false, text);\n }\n\n handleKeyboardUpEvent(event: KeyboardEvent): boolean {\n if (event.defaultPrevented) {\n return false;\n }\n switch (event.key) {\n case 'Up': // IE, EDGE\n case 'Down':\n case 'ArrowUp':\n case 'ArrowDown':\n event.preventDefault();\n return false;\n }\n\n this.getCaretPosition(event);\n return true;\n }\n\n handleKeyboardDownEvent(event: KeyboardEvent): boolean {\n switch (event.key) {\n case 'Up': // IE, EDGE\n case 'ArrowUp':\n event.preventDefault();\n this.selectedItemIndex = (this.unwrapItems.length + this.selectedItemIndex - 1) % this.unwrapItems.length;\n return false;\n case 'Down': // IE, EDGE\n case 'ArrowDown':\n event.preventDefault();\n this.selectedItemIndex = (this.selectedItemIndex + 1) % this.unwrapItems.length;\n return false;\n case 'Esc': // IE, EDGE\n case 'Escape':\n this.showDropdown = false;\n (event.target as HTMLElement).blur();\n return true;\n case 'Enter':\n return this.handleEnter(event);\n\n default:\n return true;\n }\n }\n\n handleEnter(event: KeyboardEvent | MouseEvent): boolean {\n event.preventDefault();\n\n // if selected some value\n if (this.data.length > 0 && this.selectedItemIndex > -1 && event instanceof KeyboardEvent) {\n this.pasteValue(this.formatter(this.unwrapItems[this.selectedItemIndex]));\n return false;\n }\n this.handleRoute();\n\n return false;\n }\n\n handleRoute(): void {\n // write url query\n if (this.accessUrlQuery) {\n let opts: NavigationExtras;\n if (this.searchContent.length > 0) {\n opts = {\n relativeTo: this.route,\n queryParams: {\n search: this.searchContent\n },\n queryParamsHandling: 'merge'\n };\n }\n\n void this.router.navigate([], opts);\n }\n this.handleParseModel();\n this.search.emit(this.value);\n }\n\n /**\n * Find caret positions\n * @param {KeyboardEvent | MouseEvent} event source event\n */\n getCaretPosition(event: KeyboardEvent | MouseEvent): void {\n if (this.data.length === 0 || event.ctrlKey || event.shiftKey || event.altKey || window.getSelection().toString().length > 0) {\n return;\n }\n\n const element = event.target as HTMLElement;\n\n this.selectedItemIndex = -1;\n if (!element.firstChild) {\n this.caret = 0;\n this.items$.next(this.data.map((d) => d.tag));\n this.formatter = this.tagsFormatter;\n return;\n }\n\n window.getSelection().collapseToEnd();\n const sel = window.getSelection();\n const range = sel.getRangeAt(0);\n\n range.setStart(element.firstChild, 0);\n\n // Can't work for IE/Edge: window.getSelection().toString();\n const content = range.toString();\n\n const text = JSON.stringify(content);\n\n window.getSelection().collapseToEnd();\n this.caret = text.length - 2;\n\n this.parseContent(this.searchContent, this.caret);\n }\n\n /**\n * Parse contents and show autocomplete hints\n * @param content search box content\n * @param caret current cursor position\n */\n\n parseContent(content: string, caret: number): void {\n if (this.data.length === 0) {\n return;\n }\n this.searching = true;\n // unsubscribe from last request\n if (this.subscription) {\n this.subscription.unsubscribe();\n this.subscription = undefined;\n }\n\n let result;\n\n const lastPart = this.getLastWord(content, caret);\n const tagsFilter = this.data\n .filter((t) => {\n // eslint-disable-next-line sonarjs/no-collapsible-if\n if (this.disableMultiTag) {\n if (content.toLowerCase().includes(t.tag.toLowerCase())) {\n return false;\n }\n }\n return t.tag.toLowerCase().includes(lastPart.toLowerCase());\n })\n .map((m) => m.tag)\n .slice(0, 10);\n\n this.formatter = this.tagsFormatter;\n\n const reg = AdvancedSearchParser.tagsRegex;\n\n while ((result = reg.exec(content))) {\n const resultArr = result as RegExpExecArray;\n const startMatchIndex = content.lastIndexOf(resultArr[1]);\n // if caret into match value\n if (startMatchIndex < caret && caret <= startMatchIndex + resultArr[1].length) {\n const matchTag = this.data.find((d) => {\n const tagReg = new RegExp(d.tag.replace('s+', ' '), 'i');\n const matches = tagReg.exec(resultArr[2]);\n return matches && resultArr[2].indexOf(matches[1]) < caret;\n });\n // if caret into value or tag\n if (matchTag && startMatchIndex + resultArr[2].length < caret) {\n this.formatter = matchTag.itemFormatter;\n this.lastWord$.next(lastPart);\n this.items$.next([]);\n\n this.subscription = matchTag.items(this.lastWord$).subscribe((items: string[]) => {\n this.items$.next(items);\n this.searching = false;\n });\n this.tagInfo = matchTag;\n } else {\n this.formatter = this.tagsFormatter;\n this.items$.next(tagsFilter);\n this.tagInfo = undefined;\n }\n return;\n }\n }\n\n // else return tags\n this.items$.next(tagsFilter);\n this.tagInfo = undefined;\n this.searching = false;\n }\n\n /**\n * Get last word before caret\n * @param {string} content search box content\n * @param {number} caret current cursor position\n * @return {string}\n */\n getLastWord(content: string, caret: number): string {\n // eslint-disable-next-line @typescript-eslint/prefer-regexp-exec\n const lastWordMatch = content.substring(0, caret).match(/((\\S+)|{([\\s\\S]+)})$/);\n let lastPart = (lastWordMatch && (lastWordMatch[3] || lastWordMatch[1])) || '';\n // eslint-disable-next-line @typescript-eslint/prefer-regexp-exec\n const valueMatch = lastPart.match(/:(\\S*)$/);\n lastPart = valueMatch ? valueMatch[1] || '' : lastPart;\n\n return lastPart;\n }\n\n /**\n * Insert value around caret\n * Call onSelect from dropdown menu\n * @param {string} value source value\n */\n pasteValue(value: string): void {\n this.advancedSearch.nativeElement.focus();\n let selectedLen = 0;\n if (this.advancedSearch.nativeElement.firstChild) {\n selectedLen = this.selectWordBeforeCaret(this.searchContent, this.caret);\n }\n const copyValue = value + ' ';\n\n const startWordCared = this.caret - selectedLen;\n this.caret += copyValue.length - selectedLen;\n\n // document.insertText can't work for Firefox and IE\n const copyContent = this.searchContent;\n const leftPart = copyContent.substring(0, startWordCared);\n const rightPart = copyContent.substring(this.caret);\n this.searchContent = leftPart + copyValue + rightPart;\n\n // move caret to end word after replace content\n this.moveCaretTo(this.caret);\n }\n\n /**\n * Select one word to caret and return its length.\n * @param {string} content search box content\n * @param {number} caret current cursor position\n * @return {number}\n */\n selectWordBeforeCaret(content: string, caret: number): number {\n content = content.substring(0, this.caret);\n if (this.caret === 0) {\n return 0;\n }\n const lastWord = this.getLastWord(content, caret);\n const offset = content.length - lastWord.length;\n\n // select left word part and replace\n // don't take right word part if exists\n const sel = window.getSelection();\n const range = sel.getRangeAt(0);\n range.setStart(this.advancedSearch.nativeElement.firstChild, offset);\n\n return lastWord.length;\n }\n\n /**\n * Move caret to position\n * @param {number} caret need position\n */\n moveCaretTo(caret: number): void {\n if (!this.advancedSearch.nativeElement.firstChild) {\n return;\n }\n const range = this.doc.createRange();\n range.setStart(this.advancedSearch.nativeElement.firstChild, caret);\n range.setEnd(this.advancedSearch.nativeElement.firstChild, caret);\n window.getSelection().removeAllRanges();\n window.getSelection().addRange(range);\n }\n\n /**\n * Handle mouse click on list of autocomplete value\n * @param {string} item selected value\n */\n handleClickSelectedValue(item: string): void {\n this.selectedItemIndex = -1;\n this.pasteValue(this.formatter(item));\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgbDropdownModule, NgbTypeaheadModule } from '@ng-bootstrap/ng-bootstrap';\nimport { ButtonModule } from '../button/button.module';\nimport { AdvancedSearchComponent } from './advanced-search.component';\nimport { I18NextModule } from \"angular-i18next\";\n\n@NgModule({\n declarations: [AdvancedSearchComponent],\n imports: [CommonModule, NgbDropdownModule, NgbTypeaheadModule, FormsModule, ButtonModule, I18NextModule],\n exports: [AdvancedSearchComponent],\n providers: []\n})\nexport class AdvancedSearchModule {}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NgOptionTemplateDirective, NgSelectComponent } from '@ng-select/ng-select';\nimport { ButtonSize } from '../button';\n\nexport const ADVANCED_SELECTBOX_INPUT_CONTROL_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n // eslint-disable-next-line no-use-before-define\n useExisting: forwardRef(() => AdvancedSelectComponent),\n multi: true\n};\n\n/**\n * Select with `next` and `prev` buttons. Based on ng-select\n */\n@Component({\n selector: 'app-advanced-select, mbs-advanced-select',\n templateUrl: './advanced-select.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ADVANCED_SELECTBOX_INPUT_CONTROL_VALUE_ACCESSOR]\n})\nexport class AdvancedSelectComponent implements AfterViewInit {\n @ViewChild(NgSelectComponent, { static: true }) ngSelect: NgSelectComponent;\n\n @Input() public set items(value: T[]) {\n this.myItems = value;\n this.currentIndex = this.getCurrentIndex();\n }\n get items(): T[] {\n return this.myItems;\n }\n @Input() public bindValue: string;\n @Input() public bindLabel: string;\n @Input() public reverse = false;\n @Input() public disabled = false;\n @Input() public set buttonSize(value: ButtonSize) {\n this.buttonSizeClass = value ? 'btn-' + value : '';\n }\n @Input() public appendTo = 'body';\n @Input() public loading = false;\n\n @ContentChild(NgOptionTemplateDirective, { read: TemplateRef, static: true }) optionTemplate: TemplateRef;\n\n private onTouchedCallback: () => void;\n private onChangeCallback: (_: any) => void;\n\n private val: T;\n private myItems: T[] = [];\n\n public buttonSizeClass: string;\n public currentIndex: number;\n\n public set value(value: T) {\n if (this.bindValue && value) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n this.val = value[this.bindValue];\n } else {\n this.val = value;\n }\n }\n\n public get value(): T {\n return this.val;\n }\n\n public get isLeftButtonDisabled(): boolean {\n return this.reverse ? this.currentIndex === this.items.length - 1 : this.currentIndex === 0;\n }\n\n public get isRightButtonDisabled(): boolean {\n return this.reverse ? this.currentIndex === 0 : this.currentIndex === this.items.length - 1;\n }\n\n @Output() change = new EventEmitter();\n\n ngAfterViewInit(): void {\n this.ngSelect.optionTemplate = this.optionTemplate;\n this.ngSelect.ngAfterViewInit();\n }\n\n onChange(event: T): void {\n this.value = event;\n this.currentIndex = this.getCurrentIndex();\n this.change.emit(this.value);\n\n if (this.onChangeCallback) {\n this.onChangeCallback(this.value);\n }\n }\n\n private onNext(): void {\n if (this.currentIndex < this.items.length - 1) {\n this.onChange(this.items[this.currentIndex + 1]);\n }\n }\n\n private onPrev(): void {\n if (this.currentIndex > 0) {\n this.onChange(this.items[this.currentIndex - 1]);\n }\n }\n\n handleLeftBtnClick(): void {\n this.reverse ? this.onNext() : this.onPrev();\n }\n\n handleRightBtnClick(): void {\n this.reverse ? this.onPrev() : this.onNext();\n }\n\n private getCurrentIndex() {\n return this.items.findIndex((value) => (this.bindValue ? value[this.bindValue] : value) === this.value);\n }\n\n writeValue(value: T): void {\n this.val = value;\n this.currentIndex = this.getCurrentIndex();\n }\n\n registerOnChange(fn: (_: any) => void): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedCallback = fn;\n }\n}\n","
\n\n \n\n
\n \n
\n\n \n\n
\n","
\n \n \n
\n
\n \n \n\n
\n","import { Component, Input } from '@angular/core';\nimport { UntilDestroy } from '@ngneat/until-destroy';\nimport { Observable, map } from 'rxjs';\nimport Alert from '../alert.model';\nimport { AlertService } from '../alert.service';\n\n@UntilDestroy()\n@Component({\n selector: 'mbs-alert-container',\n templateUrl: 'alert-container.component.html',\n host: {\n class: 'mbs-alert-container',\n '[style.width]': 'width',\n '[style.min-width]': 'minWidth',\n '[style.max-width]': 'maxWidth'\n }\n})\nexport class AlertContainerComponent {\n @Input() width: string;\n @Input() minWidth: string;\n @Input() maxWidth: string;\n\n private maxOverlayAlerts = 2;\n private maxInlineAlerts = 2;\n\n public get inlineAlerts(): Observable> {\n return this.alertService.alerts$.pipe(map((alerts) => alerts.filter((alert) => !alert.overlay).slice(0, this.maxInlineAlerts)));\n }\n\n public get overlayAlerts(): Observable> {\n return this.alertService.alerts$.pipe(map((alerts) => alerts.filter((alert) => alert.overlay).slice(0, this.maxOverlayAlerts)));\n }\n\n constructor(private alertService: AlertService) {}\n\n removeAlert(alert: Alert): void {\n this.alertService.close(alert);\n }\n}\n","import { TemplateRef, Type } from '@angular/core';\nimport { MbsPopupType, MbsSize } from '../utils';\n\ntype Content = string | TemplateRef | Type;\ntype CloseCallback = (close: () => void) => void;\n\nexport enum AlertType {\n success = 'success',\n error = 'danger',\n info = 'info',\n warning = 'warning',\n primary = 'primary'\n}\n\nexport default class Alert {\n /**\n * Hide `Alert` after the preset time\n */\n public autoClose: number;\n\n /**\n * Alert `type` by color theme\n */\n public type: MbsPopupType;\n\n /**\n * Alert `size`
\n * Possible values: `MbsSize.sm` | `MbsSize.lg`
\n */\n public size?: MbsSize.sm | MbsSize.lg;\n\n /**\n * Unique Alert `id`\n */\n public id: string;\n\n /**\n * If true prevents the alert from being closed after one route change, this is handy for displaying messages after a redirect such as a successful registration message.\n */\n public keepAfterRouteChange = false;\n\n /**\n * Prevents closing alert when route changes\n */\n public ignoreRouteChanges = false\n\n /**\n * String (supports raw HTML) or TemplateRef for Alert's content\n */\n public content?: Content;\n\n /**\n * If need, you can get context in `TemplateRef`.
\n * Also used for closing current `Alert` in `AlertContainerComponent`\n */\n public context?: Alert;\n\n /**\n * Icon class for Alert's icon.
\n * If set `boolean`: will be used default icon by Alert `type`
\n * If set `string` (with custom icon class): will be used custom icon class\n */\n public icon: string | boolean;\n\n public overlay = true;\n\n constructor(init?: Partial) {\n Object.assign(this, init);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { filter, first } from 'rxjs/operators';\nimport { MbsPopupType } from '../utils';\nimport Alert from './alert.model';\n\nexport const alertDefaultId = 'default-alert';\n\n@Injectable({ providedIn: 'root' })\nexport class AlertService {\n #close$: Subject = new Subject();\n #alert$: Subject = new Subject();\n alerts$ = new BehaviorSubject>([]);\n\n /**\n * Emit event for resolve all listeners.\n * @param {Alert} alert\n * @return {void}\n */\n close(alert: Alert): void {\n this.alerts$.next(this.alerts$.value.filter((x) => x !== alert));\n this.#close$.next(alert);\n }\n\n /**\n * enable subscribing to Alert observable\n * @param {string} id\n * @return {Observable}\n */\n onAlert(id: string = alertDefaultId): Observable {\n return this.#alert$.pipe(filter((x) => x?.id === id));\n }\n\n /**\n * alias for calling Alert by type: `MbsPopupType.success`\n * @param {string} msg\n * @param {Partial} options\n * @return {Observable}\n */\n success(msg?: string, options?: Partial): Observable {\n const content: string = msg ? msg : 'Success';\n\n return this.alert(new Alert({ ...options, type: MbsPopupType.success, content }));\n }\n\n /**\n * alias for calling Alert by type: `MbsPopupType.danger`\n * @param {string} msg\n * @param {Partial} options\n * @return {Observable}\n */\n error(msg?: string, options?: Partial): Observable {\n const content: string = msg ? msg : 'Sorry, something went wrong';\n\n return this.alert(new Alert({ ...options, type: MbsPopupType.danger, content }));\n }\n\n /**\n * alias for calling Alert by type: `MbsPopupType.info`\n * @param {string} content\n * @param {Partial} options\n * @return {Observable}\n */\n info(content: string, options?: Partial): Observable {\n return this.alert(new Alert({ ...options, type: MbsPopupType.info, content }));\n }\n\n /**\n * alias for calling Alert by type: `MbsPopupType.warning`\n * @param {string} content\n * @param {Partial} options\n * @return {Observable}\n */\n warn(content: string, options?: Partial): Observable {\n return this.alert(new Alert({ ...options, type: MbsPopupType.warning, content }));\n }\n\n /**\n * Main alert method\n * @param {Alert} alert\n * @return {Observable}\n */\n alert(alert: Alert): Observable {\n alert.id = alert.id || alertDefaultId;\n this.#alert$.next(alert);\n this.alerts$.next([...this.alerts$.value, alert])\n return this.#close$.pipe(first((a) => a === alert));\n }\n\n /**\n * Remove Alert by id\n * @param {string} id\n * @return {void}\n */\n clearById(id: string = alertDefaultId): void {\n this.#alert$.next(new Alert({ id }));\n this.alerts$.next(this.alerts$.value.filter(alert=>alert.id !== id))\n }\n}\n","\n
\n \n
\n\n\n
\n \n \n \n \n \n
\n\n\n
\n \n \n
\n\n\n\n
\n
\n\n\n \n\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, TemplateRef, Type } from '@angular/core';\nimport { NavigationStart, Router } from '@angular/router';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { isTemplate, MbsPopupIcon, MbsPopupType, MbsSize } from '../../utils';\nimport Alert from '../alert.model';\nimport { alertDefaultId, AlertService } from '../alert.service';\nimport { filter, pairwise } from 'rxjs';\nimport { map, startWith } from \"rxjs/operators\";\n\n@UntilDestroy()\n@Component({\n selector: 'mbs-alert',\n templateUrl: './alert.component.html',\n host: {\n role: 'alert',\n '[class]': 'cssClasses'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AlertComponent implements OnInit {\n /**\n * @ignore\n */\n public readonly isTemplate = isTemplate;\n\n public readonly MbsSize = MbsSize;\n\n /**\n * Adding classes for default icon by type or custom icon\n */\n public get getAlertIcon(): string {\n return `alert-icon text-${this.type} ` + String(this.icon === true ? MbsPopupIcon[this.type] : this.icon);\n }\n\n /**\n * Custom classes for root tag `mbs-alert`\n */\n @Input('class') classList: string;\n public get cssClasses(): string {\n const classes = ['alert', `alert-${MbsPopupType[this.type]}`];\n const classList = this.classList && this.classList.length > 0 ? this.classList.trim() : '';\n\n if (classList) classes.push(classList);\n\n if (this.size) {\n const alertSizeClass = `alert-${MbsSize[this.size]}`;\n classes.push(alertSizeClass);\n }\n\n return classes.join(' ');\n }\n\n /**\n * Alert id. Need for delete or close alert\n */\n @Input() id: string = alertDefaultId;\n\n /**\n * Hide `Alert` after the preset time (ms)\n */\n @Input() autoClose: number = null;\n\n /**\n * If need, you can get context in `TemplateRef`.
\n * Also used for closing current `Alert` in `AlertContainerComponent`\n */\n @Input() context: Alert;\n\n /**\n * Alert content.
\n * Possible values: `string`, `TemplateRef` or 'HTML'.
\n * If `content` is used than ng-content will be hide (not accessible)\n */\n @Input() content: string | TemplateRef | Type;\n\n /**\n * Implements one `type` of enum `MbsPopupType`
\n * Possible values: `MbsPopupType.info` | `MbsPopupType.success` | `MbsPopupType.danger` | `MbsPopupType.warning`
\n */\n @Input() type: MbsPopupType = MbsPopupType.info;\n\n /**\n * Implements one of alert `size`
\n * Possible values: `MbsSize.sm` | `MbsSize.lg`
\n */\n @Input() size: MbsSize.sm | MbsSize.lg;\n\n /**\n * Implements alert icon.
\n * Possible values: `boolean` | `string`.
\n * If `true` - will show `default` icon by alert `type`
\n * if `false` or not installed - will hide `
` with icon
\n * If 'string' - will show `custom` icon. Example: `fa fa-car`\n */\n @Input() icon: boolean | string = false;\n\n /**\n * Close button.
\n * Possible values: `false` | `true`\n * If `true` - will show close button\n * If `false` - will hide close button\n */\n @Input() closable = false;\n\n @Input() ignoreRouteChanges = false;\n\n /**\n * An emit event by click close button for close alert\n */\n @Output() close = new EventEmitter();\n\n constructor(private router: Router, private alertService: AlertService) {}\n\n ngOnInit(): void {\n this.handleRouteChanges();\n }\n\n private handleRouteChanges(){\n if(this.ignoreRouteChanges){\n return\n }\n this.router.events.pipe(\n filter(event=> event instanceof NavigationStart),\n map((event: NavigationStart)=> event.url),\n startWith(this.router.url),\n map((url:string)=> url.split('?')[0].split('/')[2]),\n pairwise(),\n filter(([prev, curr]) => prev !== curr),\n untilDestroyed(this)).subscribe(() => this.alertService.clearById(this.id));\n }\n\n /**\n * Emit event for close `Alert` from parent component\n * @param {Alert} alert\n */\n closeAlert(alert: Alert): void {\n this.close.emit(alert);\n }\n}\n","\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MbsSize } from '../utils';\nimport { BreadcrumbsItem } from './breadcrumbs.model';\n\n@Component({\n selector: 'mbs-breadcrumbs',\n templateUrl: 'breadcrumbs.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BreadcrumbsComponent {\n @Input() list: T[];\n /**\n * Optional parameter to specify display property of item\n */\n @Input() bindLabel: string;\n @Input() delimiterIcon: string;\n @Output() navigate = new EventEmitter>();\n\n public readonly MbsSize = MbsSize;\n\n itemDisplayValue(item: T): string {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return this.bindLabel ? item[this.bindLabel] : item;\n }\n\n handleItemClick(item: T, index: number): void {\n const label = this.itemDisplayValue(item);\n\n this.navigate.emit({ item, label, level: index });\n }\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\nimport { MbsSize } from '../utils';\n\n@Directive({\n selector: '[mbsButtonDropdown]'\n})\nexport class ButtonDropdownDirective {\n @Input() showArrow = false;\n @Input() container = 'body';\n @Input() size: MbsSize.sm | MbsSize.lg;\n @Input() display: 'dynamic' | 'static' = 'dynamic';\n\n constructor(public template: TemplateRef) {}\n\n getTemplate() {\n return this.template;\n }\n}\n","import { AfterContentInit, Component, ContentChildren, Input, OnChanges, OnDestroy, QueryList, SimpleChanges } from '@angular/core';\nimport { merge, Subscription } from 'rxjs';\nimport { mapTo } from 'rxjs/operators';\nimport { ButtonComponent, ButtonSize, ButtonType } from '../button.component';\nimport { isNil } from 'lodash';\n\n@Component({\n selector: 'mbs-button-group',\n templateUrl: './button-group.component.html'\n})\nexport class ButtonGroupComponent implements AfterContentInit, OnChanges, OnDestroy {\n @Input() customClasses: string | string[] = '';\n @Input() multiple = false;\n @Input() toggle = false;\n @Input() size: ButtonSize;\n @Input() vertical = false;\n @Input() type: ButtonType;\n @Input() disabled: boolean = undefined;\n\n @ContentChildren(ButtonComponent, { read: ButtonComponent, descendants: true }) buttons: QueryList;\n private btnChangeSubscription: Subscription;\n constructor() {}\n\n ngAfterContentInit(): void {\n this.subscribeClickButtons();\n if (!isNil(this.disabled) && this.buttons) {\n this.buttons.forEach((b) => (b.disabled = this.disabled));\n }\n\n this.type && this.updateType(this.type);\n }\n\n ngOnDestroy(): void {\n if (this.btnChangeSubscription) {\n this.btnChangeSubscription.unsubscribe();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.buttons) {\n changes.disabled && this.updateDisabled(changes.disabled.currentValue as boolean);\n changes.type && this.updateType(changes.type.currentValue as ButtonType);\n }\n }\n\n subscribeClickButtons(): void {\n if (this.toggle) {\n if (this.btnChangeSubscription) {\n this.btnChangeSubscription.unsubscribe();\n }\n this.btnChangeSubscription = merge(...this.buttons.map((btn) => btn.click.pipe(mapTo(btn)))).subscribe((btn: ButtonComponent) => {\n if (!this.multiple) {\n this.buttons.filter((b) => b != btn).forEach((b) => (b.active = false));\n }\n btn.active = !btn.active;\n });\n }\n }\n\n updateType(type: ButtonType): void {\n this.buttons.forEach((b) => (b.type = b.type ? b.type : type));\n }\n\n updateDisabled(disabled: boolean): void {\n this.buttons.forEach((b) => (b.disabled = disabled));\n }\n}\n","
\n \n
\n","\n\n \n \n\n\n\n
\n \n
\n \n
\n
\n
\n\n\n \n\n\n\n
\n
{{row}}
\n
\n
\n","import { Attribute, Component, ContentChild, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\nimport { PlacementArray } from '@ng-bootstrap/ng-bootstrap/util/positioning';\nimport { isNil } from 'lodash';\nimport { MbsSize } from '../utils';\nimport { ButtonDropdownDirective } from './button-dropdown.directive';\n\nexport type ButtonSize = MbsSize.inherit | MbsSize.xxs | MbsSize.xs | MbsSize.sm | MbsSize.md | MbsSize.lmd | MbsSize.xmd | MbsSize.lg;\nexport type ButtonType =\n | 'primary'\n | 'secondary'\n | 'success'\n | 'danger'\n | 'warning'\n | 'info'\n | 'light'\n | 'dark'\n | 'link'\n | 'brand'\n | 'muted'\n | 'outline-primary'\n | 'outline-secondary'\n | 'outline-success'\n | 'outline-danger'\n | 'outline-warning'\n | 'outline-info'\n | 'outline-light'\n | 'outline-dark'\n | 'outline-brand';\n\n@Component({\n selector: 'mbs-button, [mbs-button]',\n templateUrl: 'button.component.html',\n host: {\n '[class.-isCtrl]': 'isCtrl',\n '[class.-disabled]': 'disabledOrLoading',\n '[class.-isBlock]': 'block'\n }\n})\nexport class ButtonComponent {\n public iconClasses: string;\n public readonly MbsSize = MbsSize;\n\n /**\n * Button type. By default is `button`\n */\n @Input() buttonType: 'button' | 'reset' | 'submit' = 'button';\n /**\n * If `true` it will use `ctrl` class instead of `btn`\n */\n @Input() isCtrl = false;\n\n /**\n * If `true` it will use `dashed` class instead of `btn`\n */\n @Input() isDashed = false;\n\n /**\n * Implements one of bootstrap's themes to button
\n * Possible values `primary | secondary | success | danger | warning | info | light | dark | link`\n *

\n * Defaults:
\n * If `isCtrl` is `true` - `primary`
\n * Else - `secondary`\n */\n @Input() type: ButtonType;\n /**\n * Implements one of button size
\n * Possible values for btn: `'xxs' | 'xs' | 'sm' | 'md' | 'lg'`
\n * Possible values for ctrl: `'inherit' | 'xxs' | 'xs' | 'sm' | 'md' | 'lg'`\n */\n @Input() size: ButtonSize;\n /**\n * If `true` button will have `display: block` style\n */\n @Input() block = false;\n /**\n * For now correctly works only when `isCtrl` is `false`
\n * If `true` replaces button's content with an animated loader and disables the button.\n */\n @Input() loading = false;\n @Input() disabled = false;\n /**\n * CSS class(es) for an icon. For now icon always placed on the left of button content\n */\n @Input() icon: string;\n\n @Input() active: boolean;\n\n @Input() id: string;\n\n @Input() textOverflow: boolean;\n\n @Input() customParentClasses = '';\n @Input() customClasses = '';\n /**\n * The preferred placement of the dropdown.\n * Accepts an array of strings or a string with space separated possible values.\n */\n @Input() dropdownPlacement: PlacementArray = 'bottom-left bottom-right top-left top-right';\n @Input() tooltipData: string[]; // Works only as array. Do not try to use simple string\n @Input() tooltipContainer = 'body';\n @Input() tooltipPlacement: PlacementArray = ['left', 'auto'];\n @Input() tooltipTriggers = 'click:blur';\n @Input() tooltipAlways = false;\n @Input() tooltipClass: string;\n @Input() hideDropdownIcon = false;\n\n // Set button's width equal to it's height\n @Input() square = false;\n\n // Button's border radius will be set to 50%\n @Input() rounded = false;\n\n @Input() align: 'left';\n\n @Output() click = new EventEmitter();\n\n @ContentChild(ButtonDropdownDirective, { static: true, read: ButtonDropdownDirective })\n dropdownMenuItemsTemplate: ButtonDropdownDirective;\n\n private get realType(): string {\n if (this.type) {\n return this.type;\n }\n\n return this.isCtrl ? 'primary' : 'secondary';\n }\n\n public get prefix(): string {\n if (this.isCtrl) return 'ctrl';\n if (this.isDashed) return 'dashed';\n\n return 'btn';\n }\n\n public get btnOverflowClass(): string {\n return isNil(this.textOverflow) ? '' : this.textOverflow ? 'text-overflow' : 'text-no-overflow';\n }\n\n public get btnTypeClass(): string {\n return `${this.prefix}-${this.realType}`;\n }\n\n public get btnSizeClass(): string {\n return this.size ? `${this.prefix}-${this.size}` : '';\n }\n\n public get btnBlockClass(): string {\n return this.block ? 'btn-block' : '';\n }\n\n public get btnLoadingClass(): string {\n return this.loading ? '-loading' : '';\n }\n\n public get btnActiveClass(): string {\n return this.active ? 'active' : '';\n }\n\n get disabledOrLoading(): boolean {\n return this.disabled || this.loading;\n }\n\n constructor(@Attribute('disabled') disabled) {\n this.disabled = !isNil(disabled) && disabled !== false;\n }\n\n ngOnInit(): void {\n this.iconClasses = `${this.isCtrl ? 'ctrl-ico' : 'btn-ico'} ${this.icon}`;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.disabled) {\n const disabled = changes.disabled.currentValue as boolean;\n\n this.disabled = !isNil(disabled) && disabled !== false;\n }\n\n if (changes.icon) {\n this.iconClasses = `${this.isCtrl ? 'ctrl-ico' : 'btn-ico'} ${this.icon}`;\n }\n }\n\n handleClick(event: Event & { pointerType: string; target: EventTarget & { blur: () => void } }): void {\n event.stopPropagation();\n\n if (event.pointerType === 'mouse') {\n event?.target?.blur();\n }\n\n if (this.buttonType !== 'submit') {\n event.preventDefault();\n }\n\n this.click.emit(event);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NgbDropdownModule, NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\nimport { ButtonDropdownDirective } from './button-dropdown.directive';\nimport { ButtonGroupComponent } from './button-group/button-group.component';\nimport { ButtonComponent } from './button.component';\n\n@NgModule({\n declarations: [ButtonComponent, ButtonGroupComponent, ButtonDropdownDirective],\n exports: [ButtonComponent, ButtonGroupComponent, ButtonDropdownDirective],\n imports: [CommonModule, NgbDropdownModule, NgbTooltipModule]\n})\nexport class ButtonModule {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mbs-card-group',\n template: `\n \n \n `,\n host: {\n class: 'mbs-card_group'\n }\n})\nexport class CardGroupComponent {}\n","import { Component, ContentChild, Input, TemplateRef } from '@angular/core';\n\n@Component({\n selector: 'mbs-card-header',\n template: `\n
\n \n
\n \n
\n
\n {{ headerTitle }}\n
\n
\n
\n `\n})\nexport class CardHeaderComponent {\n @Input('ico') headerIco: string;\n @Input('title') headerTitle: string;\n @ContentChild(TemplateRef, { read: TemplateRef, static: true }) headerTemplate;\n}\n","
\n\n
\n \n
\n\n
\n \n
\n \n
\n
\n\n \n
\n","import { Component, ContentChild, HostBinding, Input } from '@angular/core';\nimport { CardGroupComponent } from './card-group.component';\n\n@Component({\n selector: 'mbs-card',\n templateUrl: './card.component.html'\n})\nexport class CardComponent {\n @Input() invalid = false;\n @Input() innerBordered = false;\n @Input() border = true;\n @Input() hasPadding = true;\n @Input() size: 'xs' | 'sm' | 'lg' | '' = '';\n @Input() customClasses = '';\n @Input() staticHeight: string | number;\n @ContentChild(CardGroupComponent, { static: false }) cardGroups: CardGroupComponent;\n\n get cardSize(): string {\n return this.size ? `-${this.size}` : '';\n }\n\n get cardMainClasses(): string {\n return this.cardSize + ' ' + this.customClasses;\n }\n\n @HostBinding('style.height') get getHeight(): string {\n if (this.staticHeight) {\n if (typeof this.staticHeight === 'number') {\n return String(this.staticHeight) + 'px';\n } else {\n return this.staticHeight;\n }\n }\n return '';\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NgbModule, NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\nimport { ButtonModule } from '../button';\nimport { DisableControlDirective } from './disable-control.directive';\nimport { OverlayDirective } from './overlay.directive';\nimport { PermanentTooltipDirective, PermanentTooltipInternalComponent } from './permanent-tooltip.directive';\nimport { SizeObserverDirective } from './size.directive';\nimport { TrimInputDirective } from './trim-input.directive';\nimport { TypedTemplateDirective } from './typed-template.directive';\n\nconst directives = [\n OverlayDirective,\n TypedTemplateDirective,\n SizeObserverDirective,\n DisableControlDirective,\n TrimInputDirective,\n PermanentTooltipDirective\n];\n\n@NgModule({\n imports: [CommonModule, NgbModule, NgbTooltipModule, ButtonModule],\n declarations: [...directives, PermanentTooltipInternalComponent],\n exports: directives\n})\nexport class SharedDirectivesModule {}\n","import { Directive, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\n@Directive({\n selector: '[disableControl]'\n})\nexport class DisableControlDirective implements OnChanges {\n @Input() disableControl: boolean;\n\n @Input() disableControlOptions: { emitEvent?: boolean; onlySelf?: boolean };\n\n constructor(private ngControl: NgControl) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.disableControl) this.toggleDisabledState(changes.disableControl.currentValue as boolean);\n }\n\n toggleDisabledState(condition: boolean) {\n const action = condition ? 'disable' : 'enable';\n this.ngControl && this.ngControl.control[action](this.disableControlOptions);\n }\n}\n","import {\n AfterViewInit,\n ApplicationRef,\n Component,\n ComponentFactoryResolver,\n ComponentRef,\n Directive,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n OnInit,\n Output,\n Renderer2,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { BehaviorSubject, Subject, fromEvent, merge } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\n\nlet i = 0;\n\n@Component({\n selector: 'mbs-permanent-tooltip-internal',\n template: `\n \n
\n {{ title }}\n

{{ text }}

\n
\n {{ okText }}\n {{\n skipText\n }}\n
\n
\n
\n\n
\n `\n})\nexport class PermanentTooltipInternalComponent implements AfterViewInit {\n @Input() title: string | string[] | undefined;\n @Input() text: string | string[] | undefined;\n @Input() okText: string | string[] | undefined;\n @Input() skipText: string | string[] | undefined;\n @Input() animation: typeof NgbTooltip.prototype.animation;\n @Input() autoClose: typeof NgbTooltip.prototype.autoClose;\n @Input() placement: typeof NgbTooltip.prototype.placement;\n @Input() triggers: typeof NgbTooltip.prototype.triggers;\n @Input() container: typeof NgbTooltip.prototype.container;\n @Input() disableTooltip: typeof NgbTooltip.prototype.disableTooltip;\n @Input() tooltipClass: typeof NgbTooltip.prototype.tooltipClass;\n @Input() openDelay: typeof NgbTooltip.prototype.openDelay;\n @Input() closeDelay: typeof NgbTooltip.prototype.closeDelay;\n\n @Output() okClick: EventEmitter = new EventEmitter();\n @Output() skipClick: EventEmitter = new EventEmitter();\n\n @ViewChild('tooltip', { static: false }) tooltip: NgbTooltip;\n\n private suggestedView: null | 'open' | 'close';\n\n ngAfterViewInit(): void {\n if (this.suggestedView) {\n this[this.suggestedView]();\n }\n }\n\n open(context?: any): void {\n this.suggestedView = 'open';\n\n this.tooltip?.open(context);\n }\n\n close(): void {\n this.suggestedView = 'close';\n\n this.tooltip?.close();\n }\n}\n\n@UntilDestroy()\n@Directive({\n selector: '[mbsPermanentTooltip]',\n exportAs: 'ngbTooltip'\n})\nexport class PermanentTooltipDirective implements OnInit, AfterViewInit {\n @Input() mbsPermanentTooltip: string | TemplateRef | null | undefined;\n @Input() title: string | string[] | undefined;\n @Input() text: string | string[] | undefined = 'Ok';\n @Input() okText: string | string[] | undefined;\n @Input() skipText: string | string[] | undefined;\n @Input() animation: typeof NgbTooltip.prototype.animation;\n @Input() autoClose: typeof NgbTooltip.prototype.autoClose;\n @Input() placement: typeof NgbTooltip.prototype.placement;\n @Input() triggers: typeof NgbTooltip.prototype.triggers;\n @Input() container: typeof NgbTooltip.prototype.container;\n @Input() disableTooltip: typeof NgbTooltip.prototype.disableTooltip;\n @Input() tooltipClass: typeof NgbTooltip.prototype.tooltipClass;\n @Input() openDelay: typeof NgbTooltip.prototype.openDelay;\n @Input() closeDelay: typeof NgbTooltip.prototype.closeDelay;\n @Input() debounceInterval = 300;\n @Input() minWidth = 0;\n @Input() offsetTop = 0;\n @Input() offsetLeft = 0;\n\n @Output() okClick: EventEmitter = new EventEmitter();\n @Output() skipClick: EventEmitter = new EventEmitter();\n\n private parking: HTMLElement;\n private componentRef: ComponentRef;\n private id = `mbsPermanentTooltip-${i++}`;\n private mutationObserver: MutationObserver;\n private destroyed = false;\n private close$ = new Subject();\n\n constructor(\n private el: ElementRef,\n private renderer: Renderer2,\n private injector: Injector,\n private componentFactoryResolver: ComponentFactoryResolver,\n private appRef: ApplicationRef\n ) {}\n\n ngOnInit() {}\n\n ngAfterViewInit() {\n this.parkTooltip();\n }\n\n open(context?: any): void {\n this.componentRef?.instance?.open(context);\n\n this.startTrackingPosition();\n }\n\n close(): void {\n this.close$.next(null);\n this.mutationObserver?.disconnect?.();\n\n this.componentRef?.instance?.close();\n }\n\n private parkTooltip(): void {\n const containerElement = this.container ? document.querySelector(this.container) : this.el.nativeElement.parentNode;\n\n this.parking = this.renderer.createElement('div');\n\n this.updateParkingPosition();\n this.renderer.setAttribute(this.parking, 'id', this.id);\n this.renderer.setStyle(this.parking, 'position', 'absolute');\n this.renderer.setStyle(this.parking, 'pointer-events', 'none');\n this.renderer.appendChild(containerElement, this.parking);\n\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(PermanentTooltipInternalComponent);\n this.componentRef = componentFactory.create(this.injector);\n\n this.componentRef.instance.okClick.pipe(untilDestroyed(this)).subscribe(() => this.okClick.emit());\n this.componentRef.instance.skipClick.pipe(untilDestroyed(this)).subscribe(() => this.skipClick.emit());\n\n [\n 'title',\n 'text',\n 'okText',\n 'skipText',\n 'autoClose',\n 'placement',\n 'triggers',\n 'container',\n 'disableTooltip',\n 'tooltipClass',\n 'openDelay',\n 'closeDelay'\n ].forEach((key) => {\n this.componentRef.instance[key] = this[key];\n });\n\n this.renderer.appendChild(this.parking, this.componentRef.location.nativeElement);\n\n this.appRef.attachView(this.componentRef.hostView);\n }\n\n private updateParkingPosition(): void {\n if (this.destroyed) {\n return;\n }\n\n let scrollTop = window.pageYOffset || document.documentElement.scrollTop;\n const containerElement = this.container ? document.querySelector(this.container) : this.el.nativeElement.parentNode;\n const rect = this.el.nativeElement.getBoundingClientRect();\n const fixed =\n window.getComputedStyle(this.el.nativeElement).position === 'fixed' || window.getComputedStyle(containerElement).position === 'fixed';\n\n if (fixed) {\n scrollTop = 0;\n }\n\n this.renderer.setStyle(this.parking, 'top', `${rect.top + this.offsetTop + scrollTop}px`);\n this.renderer.setStyle(this.parking, 'left', `${rect.left + this.offsetLeft}px`);\n this.renderer.setStyle(this.parking, 'width', this.minWidth ? `${this.minWidth}px` : '0');\n this.renderer.setStyle(this.parking, 'height', `0`);\n }\n\n private startTrackingPosition(): void {\n let i = 0;\n\n const updatePosition = () => {\n this.updateParkingPosition();\n };\n\n const scroll$ = fromEvent(window, 'scroll');\n const resize$ = fromEvent(window, 'resize');\n const mutationEl = new BehaviorSubject(null);\n\n this.mutationObserver = new MutationObserver(() => mutationEl.next(i++));\n this.mutationObserver.observe(this.el.nativeElement, { attributes: true, childList: true, subtree: true });\n\n merge(scroll$, resize$, mutationEl)\n .pipe(takeUntil(this.close$), debounceTime(this.debounceInterval), untilDestroyed(this))\n .subscribe(updatePosition);\n\n mutationEl.next(0);\n }\n\n ngOnDestroy() {\n this.destroyed = true;\n\n if (this.parking?.parentNode?.removeChild) {\n this.parking.parentNode.removeChild(this.parking);\n }\n\n this.mutationObserver?.disconnect?.();\n this.componentRef?.destroy?.();\n }\n}\n","import { Directive, ElementRef, EventEmitter, NgZone, OnDestroy, OnInit, Output } from '@angular/core';\nimport { ElementSize } from '../models';\n\n@Directive({\n selector: '[mbsSizeObserver]'\n})\nexport class SizeObserverDirective implements OnInit, OnDestroy {\n @Output() sizeChanged = new EventEmitter();\n private observer: ResizeObserver;\n\n constructor(private host: ElementRef, private zone: NgZone) {}\n\n ngOnInit() {\n this.observer = new ResizeObserver((entries) => {\n this.zone.run(() => {\n this.sizeChanged.emit({\n height: entries[0]?.contentRect?.height ?? 0,\n width: entries[0]?.contentRect?.width ?? 0,\n hasVerticalScroll: entries[0]?.target?.scrollHeight > entries[0]?.target?.clientHeight,\n hasHorizontalScroll: entries[0]?.target?.scrollWidth > entries[0]?.target?.clientWidth\n });\n });\n });\n\n this.observer.observe(this.host.nativeElement);\n }\n\n ngOnDestroy() {\n this.observer?.unobserve(this.host.nativeElement);\n }\n}\n","import { Directive, HostListener, Optional } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { isNil } from 'lodash';\nimport { DOMEvent } from '../form/input-base/input-base.model';\n\n/**\n * @deprecated since release/4.7\n * trim include mbs-input\n */\n@Directive({\n selector: 'input[mbsTrimInput]'\n})\nexport class TrimInputDirective {\n constructor(@Optional() private ngControl: NgControl) {}\n\n @HostListener('blur', ['$event'])\n trim(event: DOMEvent) {\n const input = event.target;\n if (isNil(input.value)) {\n return;\n }\n input.value = input.value.trim();\n if (this.ngControl) {\n this.ngControl.control.patchValue(input.value);\n }\n }\n}\n","
\n

\n {{ title }}\n

\n

\n {{ title }}\n

\n

\n {{ title }}\n

\n

\n {{ title }}\n

\n
\n {{ title }}\n
\n
\n {{ title }}\n
\n
\n {{ title }}\n
\n
\n\n
\n \n
\n\n\n \n\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\nexport type FormGroupTitleSize = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\nexport type FormGroupTitlePosition = 'left' | 'top';\n\n@Component({\n selector: 'mbs-form-group',\n templateUrl: 'form-group.component.html',\n host: {\n class: 'mbs-form-group'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormGroupComponent {\n @HostBinding('class') get getClass() {\n return this.titlePosition === 'left' ? 'd-flex justify-content-between' : '';\n }\n /**\n * Title text for form group\n */\n @Input() title: string;\n\n /**\n * Classes for title\n */\n @Input() titleClasses: string;\n\n /**\n * Implements one of title size
\n * Possible values: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'
\n */\n @Input() titleSize: FormGroupTitleSize = 'h5';\n\n @Input() titlePosition: FormGroupTitlePosition = 'top';\n\n @Input() contentCustomClass = null;\n}\n","
\n

\n \n

\n

\n \n

\n

\n \n

\n

\n \n

\n
\n \n
\n
\n \n
\n
\n \n
\n
\n\n
\n \n
\n\n\n \n\n\n\n \n {{ title }}\n\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { MbsSize } from '../utils';\n\nexport type FormSectionSize = MbsSize.sm | MbsSize.lg;\nexport type FormSectionTitleSize = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\n@Component({\n selector: 'mbs-form-section',\n templateUrl: 'form-section.component.html',\n host: {\n '[class]': '\"mbs-form-section\" + getClassListForSection'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormSectionComponent {\n /**\n * Title text for form section\n */\n @Input() title: string;\n\n /**\n * Custom classes for form section title\n */\n @Input() titleClasses: string | string[];\n\n /**\n * Will set icon(s) to left `form-section`\n */\n @Input() icon: string;\n\n /**\n * Implements one of form section size
\n * Possible values: 'MbsSize.sm' | 'MbsSize.lg'
\n */\n @Input() size: FormSectionSize;\n\n get getClassListForSection(): string {\n return this.size ? ` -${this.size}` : '';\n }\n\n /**\n * Implements one of title size
\n * Possible values: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'
\n */\n @Input() titleSize: FormSectionTitleSize = 'h5';\n}\n","
\n\n \n\n \n\n \n\n \n\n
\n\n
\n {{ subtitle }}\n
\n\n
\n\n \n\n
\n","import { ChangeDetectorRef, Component, ContentChild, Directive, Input, OnInit, Optional, Self, TemplateRef } from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { MbsSize } from '../../utils';\nimport { InputBase } from '../input-base/input-base';\n\n@Directive({\n selector: '[checkboxDescription]'\n})\nexport class CheckboxDescription {\n @Input() hide = false;\n constructor(public template: TemplateRef) {}\n}\n\n/**\n * Component that presents a `checkbox`\n */\n@Component({\n selector: 'app-checkbox,mbs-checkbox',\n templateUrl: './checkbox.component.html'\n})\nexport class CheckboxComponent extends InputBase implements ControlValueAccessor, OnInit {\n public readonly MbsSize = MbsSize;\n\n private myIndeterminate = false;\n\n /**\n * Pin mode if true - not display checkbox, show fa-thumb-tack icon and label\n * @param {boolean} state\n */\n @Input() pinMode: boolean;\n\n @Input() subtitle: string;\n @Input() subtitleClasses: string;\n @Input() subtitleHide = false;\n @Input() subtitleOutside = true;\n\n /**\n * context for label template\n */\n @Input() labelContext: any;\n\n @Input() descriptionOutside = true;\n @Input() descriptionClasses: string;\n /**\n * Add font-weight-bold;\n */\n @Input() public boldLabel = false;\n\n /**\n * HTML native checkbox indeterminate state\n * @param {boolean} state\n */\n @Input()\n public set indeterminate(state: boolean) {\n this.myIndeterminate = state;\n\n // if you set this from outside of a component, like when you need to set \"checked\"\n // programmatically and get the checkbox component with viewChild and set \"checked\"\n // it should update native input props\n setTimeout(() => this.cd.detectChanges());\n }\n\n public get indeterminate() {\n return this.myIndeterminate;\n }\n\n @Input() centerCheckbox = true;\n\n @Input() public set value(value: string) {\n this.myValue = value;\n }\n public get value(): string {\n return String(this.myValue);\n }\n\n protected myChecked = false;\n /**\n * Native checked radio button\n * @param {boolean} state\n */\n @Input() public set checked(state: boolean) {\n this.myChecked = state;\n\n // if you set this outside of a component, for example when you need to set \"checked\"\n // programmatically and get the checkbox component with viewChild and set \"checked\"\n // it should update native input props\n this.cd.detectChanges();\n }\n public get checked(): boolean {\n return this.myChecked;\n }\n\n @ContentChild(CheckboxDescription, { static: true, read: CheckboxDescription }) checkboxDescription: CheckboxDescription;\n\n constructor(@Optional() @Self() ngControl: NgControl, @Optional() protected cd: ChangeDetectorRef) {\n super(ngControl, cd);\n }\n\n ngOnInit(): void {\n if (this.label && !this.id) {\n console.error('checkbox id must be specified if label in use');\n }\n }\n\n /**\n * Default change method. Can be replaced.\n * @param {Event} event - native DOM input event\n */\n handleChange(event: Event): void {\n event.stopPropagation();\n\n this.checked = (event.target as HTMLInputElement).checked;\n\n if (this.onChange) {\n this.onChange(this.checked);\n }\n\n this.change.emit(this.checked);\n }\n\n writeValue(obj: boolean): void {\n this.myChecked = Boolean(obj);\n this.cd.markForCheck();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\nimport { InputBaseModule } from '../input-base/input-base.module';\nimport { CheckboxComponent, CheckboxDescription } from './checkbox.component';\n\n@NgModule({\n declarations: [CheckboxComponent, CheckboxDescription],\n imports: [CommonModule, FormsModule, NgbTooltipModule, InputBaseModule],\n exports: [CheckboxComponent, CheckboxDescription],\n providers: []\n})\nexport class CheckboxModule {\n constructor() {\n // empty\n }\n}\n","export enum FocusedInput {\n START,\n END,\n NONE\n}\n","export function getDateWithOffset(offsetInDays: number) {\n return new Date(new Date().setDate(new Date().getDate() + offsetInDays));\n}\n\nexport function getPreviousMonth() {\n return new Date(new Date().setMonth(new Date().getMonth() - 1));\n}\n","
\n\n \n\n \n \n\n \n \n\n
\n\n
\n \n
\n\n
\n \n {{ period.title }}\n \n
\n
\n
\n\n\n \n {{ date.day }}\n \n\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { NgbDate, NgbDropdown } from '@ng-bootstrap/ng-bootstrap';\nimport { MbsSize } from '../../utils';\nimport { DateFormat } from '../../utils/enums/date-enum';\nimport { KeyEventEnum } from './../../utils/enums/keys';\nimport { FocusedInput } from './enums';\nimport { Period } from './type';\nimport { getDateWithOffset, getPreviousMonth } from './utils';\n\n@Component({\n selector: 'mbs-datepicker-range',\n templateUrl: './datepicker-range.component.html'\n})\nexport class DatepickerRangeComponent implements OnInit {\n @Input() public placement: string | string[] = 'bottom-right';\n @Input() public disabled: boolean;\n @Input() public start: Date;\n @Input() public end: Date;\n @Input() public size: MbsSize.xs | MbsSize.sm | MbsSize.md | MbsSize.lg = null;\n @Input() public mask = DateFormat.mediumDate;\n @Input() public container = 'body';\n\n @Input() public periods: Array = [\n {\n title: 'Today',\n start: new Date(),\n end: new Date()\n },\n {\n title: 'Last Week',\n start: getDateWithOffset(-7),\n end: new Date()\n },\n {\n title: 'Last Month',\n start: getPreviousMonth(),\n end: new Date()\n }\n ];\n\n @Output() public rangeSelected = new EventEmitter<{ start: Date; end: Date }>();\n\n @ViewChild('dropdown', { static: false, read: NgbDropdown }) dropdown: NgbDropdown;\n\n public hoveredDate: NgbDate | null = null;\n\n public FocusedInput = FocusedInput;\n public MbsSize = MbsSize;\n public focusedInput = FocusedInput.NONE;\n\n public calendarPage: NgbDate;\n\n public isValueChangedByDatepicker = true;\n\n public get today(): Date {\n return new Date();\n }\n\n public get prevMonthDate(): Date {\n const date = new Date(new Date().getTime());\n return new Date(date.setDate(0));\n }\n\n public elementSelectors = {\n id: {\n currentlyDate: 'currently-date',\n chosenPeriod: 'chosen-period',\n startDateInput: 'start-date-input',\n endDateInput: 'end-date-input',\n startDateCalendar: 'start-date-calendar',\n endDateCalendar: 'end-date-calendar'\n }\n };\n\n ngOnInit(): void {\n this.setPages();\n }\n\n public selectPeriod(period: Period) {\n this.start = period.start && this.getDate(period.start);\n this.end = period.end && this.getDate(period.end);\n\n this.emitRange();\n }\n\n public onEnter(event, isFirstCalendar = true) {\n const target = event.target;\n\n if (event.key !== KeyEventEnum.Enter) return;\n if (this.isInvalidDate(target.value)) {\n target.value = null;\n return;\n }\n\n this.onInputChange(event, isFirstCalendar);\n\n if (this.start && this.end) {\n this.dropdown.close();\n } else {\n this.toggleFocus();\n }\n\n target.blur();\n }\n\n private isInvalidDate(date: string | Date) {\n return isNaN(new Date(date) as any);\n }\n\n public onInputChange(event, isStart = true): void {\n const value = event.target.value || null;\n\n if (this.isInvalidDate(value)) {\n event.target.value = null;\n return;\n }\n\n const isEqual = new Date(value)?.getTime() === (isStart ? this.start : this.end)?.getTime();\n\n if (this.isValueChangedByDatepicker || isEqual) {\n return;\n }\n\n this.setValue(value, isStart);\n\n this.emitRange();\n\n const page = this.getNgbDate(new Date(value));\n\n if (value && !this.isEqualPages(page, this.calendarPage)) {\n this.setCalendarPage(page);\n }\n\n this.isValueChangedByDatepicker = false;\n }\n\n public isRange(date: NgbDate): boolean {\n return Boolean(date?.equals(this.getNgbDate(this.start)) || date?.equals(this.getNgbDate(this.end)));\n }\n\n public isInside(date: NgbDate): boolean {\n if (!this.start) {\n return false;\n }\n\n return (\n date.after(this.getNgbDate(this.start)) && ((date.before(this.hoveredDate) && !this.end) || date.before(this.getNgbDate(this.end)))\n );\n }\n\n public onPicked(date: { from: NgbDate; to: NgbDate }): void {\n this.start = date.from && this.getDate(date.from);\n this.end = date.to && this.getDate(date.to);\n\n this.isValueChangedByDatepicker = true;\n this.emitRange();\n }\n\n public emitRange() {\n this.rangeSelected.emit({\n start: this.start || null,\n end: this.end || null\n });\n }\n\n private isEqualPages(firstPage: NgbDate, secondPage: NgbDate) {\n return firstPage.year === secondPage.year && firstPage.month === secondPage.month;\n }\n\n private setPages(): void {\n this.calendarPage = this.getNgbDate(this.prevMonthDate);\n }\n\n private toggleFocus(): void {\n this.focusedInput = this.focusedInput === FocusedInput.START ? FocusedInput.END : FocusedInput.START;\n }\n\n private getNgbDate(date: Date | string): NgbDate {\n const preparedDate = new Date(date);\n\n return new NgbDate(preparedDate.getFullYear(), preparedDate.getMonth() + 1, preparedDate.getDate());\n }\n\n private getDate(date: NgbDate | Date) {\n return date instanceof NgbDate\n ? new Date(date.year, date.month - 1, date.day)\n : new Date(date.getFullYear(), date.getMonth(), date.getDate());\n }\n\n private setValue(value: Date, isStart: boolean): void {\n const date = value ? new Date(value) : null;\n\n isStart ? (this.start = date) : (this.end = date);\n\n if (this.start && this.end && this.start.getTime() > this.end.getTime()) {\n isStart ? (this.end = null) : (this.start = null);\n }\n }\n\n private setCalendarPage(page: NgbDate): void {\n this.calendarPage = page;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\nimport { ButtonModule } from '../../button/button.module';\nimport { DatepickerModule } from '../datepicker/datepicker.module';\nimport { InputBaseModule } from '../input-base/input-base.module';\nimport { InputRangeModule } from '../input-range/input-range.module';\nimport { InputModule } from '../input/input.module';\nimport { DatepickerRangeComponent } from './datepicker-range.component';\n\n@NgModule({\n imports: [\n ReactiveFormsModule,\n FormsModule,\n CommonModule,\n InputBaseModule,\n ButtonModule,\n InputModule,\n InputRangeModule,\n DatepickerModule,\n NgbDropdownModule\n ],\n declarations: [DatepickerRangeComponent],\n exports: [DatepickerRangeComponent]\n})\nexport class DatepickerRangeModule {}\n","export type Datepicker = Date | string;\nexport enum DatepickerViewMode {\n day = 'day',\n month = 'month',\n year = 'year'\n}\n","
\n \n \n \n \n\n
\n \n \n\n
\n \n\n
\n \n \n
\n\n \n \n \n
\n\n
\n \n\n
\n \n \n
\n \n \n \n
\n
\n
\n
\n\n \n \n \n
\n\n \n \n \n \n
\n\n \n
\n\n\n \n \n\n\n\n \n \n\n\n\n \n {{ date.day }}\n \n\n\n\n \n {{ date.day }}\n \n\n\n\n
\n \n Currently: {{ currentDate | date : 'mediumDate'}}\n \n
\n
\n\n\n
\n \n Currently: {{ currentDate | date : 'MMMM, yyyy'}}\n \n
\n
\n\n\n
\n \n
\n
\n","import { formatDate } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport {\n NgbCalendar,\n NgbDate,\n NgbDateNativeAdapter,\n NgbDatepicker,\n NgbDatepickerI18n,\n NgbDatepickerNavigateEvent,\n NgbDropdown,\n NgbDropdownMenu\n} from '@ng-bootstrap/ng-bootstrap';\nimport { NgbDateStruct } from '@ng-bootstrap/ng-bootstrap/datepicker/ngb-date-struct';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { BehaviorSubject, ReplaySubject } from 'rxjs';\nimport { DateFormat, host, MbsSize } from '../../utils';\nimport { InputBase } from '../input-base/input-base';\nimport { DOMEvent, InputClasses, ValidClasses } from '../input-base/input-base.model';\nimport { InputButton } from '../input-base/input-pre-append/input-button';\nimport { Datepicker, DatepickerViewMode } from './datepicker.model';\nimport { isNil } from 'lodash';\n\n@UntilDestroy()\n/**\n * Datepicker component based on\n * `NgbDatepicker`\n */\n@Component({\n selector: 'app-datepicker,mbs-datepicker',\n templateUrl: 'datepicker.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'mbs-datepicker'\n }\n})\nexport class DatepickerComponent extends InputBase implements OnInit, AfterViewInit, OnDestroy {\n public readonly DatepickerViewMode = DatepickerViewMode;\n public readonly MbsSize = MbsSize;\n public readonly dateAdapter = new NgbDateNativeAdapter();\n public readonly dateSync$ = new ReplaySubject();\n public readonly currentDate = new Date();\n public monthList$: BehaviorSubject = new BehaviorSubject([]);\n\n public toDate: Datepicker;\n public hoveredDate: NgbDate | null = null;\n\n private selectedDate: NgbDateStruct;\n private navigatedYear: number;\n\n @Input() public set date(value: Datepicker) {\n this.dateSync$.next(value);\n }\n\n @Input() public customClasses = ''\n\n /* eslint-disable @typescript-eslint/adjacent-overload-signatures */\n public get date(): Datepicker {\n return this.myValue;\n }\n\n public get bindClasses(): string {\n const classesObject: InputClasses = Object.assign, ValidClasses>({}, this.validClasses);\n return Object.entries(classesObject)\n .filter(([k, v]) => !!v)\n .map(([k]) => k)\n .concat([this.sizeClass])\n .concat([this.customClasses])\n .join(' ');\n }\n\n @Input() public isValidated = false;\n\n /**\n * Mask format for displaying in input\n * @private\n */\n @Input() private maskFormat = DateFormat.mediumDate;\n\n /**\n * if `true` datepicker will use `NgbDatepicker` component,
\n * else - it will be `input` with `ngbDatepicker` directive\n */\n @Input() public plain: boolean;\n\n /**\n * if `true` datepicker will use `NgbDatepicker` component in two month range mode\n */\n @Input() public range: boolean;\n\n /**\n * The number of months to display.\n */\n @Input() public displayMonths = 1;\n\n /**\n * The reference to a custom template for the day.\n * Allows to completely override the way a day 'cell' in the calendar is displayed.\n */\n @Input() public dayTemplate = '';\n\n /**\n * The first day of the week.
\n * With default calendar we use ISO 8601: 'weekday' is 1=Mon ... 7=Sun.\n */\n @Input() public firstDayOfWeek = 7;\n\n /**\n * The reference to the custom template for the datepicker footer\n */\n @Input() public footerTemplate: TemplateRef;\n\n @Input() public hideFooter = false;\n\n /**\n * The latest date that can be displayed or selected.
\n * If not provided, 'year' select box will display 10 years after the current month.\n */\n @Input() public maxDate: Date;\n\n /**\n * The earliest date that can be displayed or selected.\n * If not provided, 'year' select box will display 10 years before the current month.\n */\n @Input() public minDate: Date;\n\n /**\n * Navigation type.
\n * `\"select\"` - select boxes for month and navigation arrows
\n * `\"arrows\"` - only navigation arrows
\n * `\"none\"` - no navigation visible at all
\n * For the 2+ months view, days in between months are never shown.\n */\n @Input() public navigation: 'select' | 'arrows' | 'none' = 'select';\n\n /**\n * The way of displaying days that don't belong to the current month.\n *
  • `\"visible\"` - days are visible
  • \n *
  • `\"hidden\"` - days are hidden, white space preserved
  • \n *
  • `\"collapsed\"` - days are collapsed, so the datepicker height might change between months
\n * For the 2+ months view, days in between months are never shown.\n */\n @Input() public outsideDays: 'visible' | 'collapsed' | 'hidden' = 'visible';\n\n /**\n * If `true`, weekdays will be displayed.\n */\n @Input() public showWeekdays = true;\n\n /**\n * If `true`, week numbers will be displayed.\n */\n @Input() public showWeekNumbers = false;\n\n /**\n * The date to open calendar with.
\n * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n * If nothing or invalid date is provided, calendar will open with current month.
\n * You could use `navigateTo(date)` method as an alternative.\n */\n @Input() public startDate: { year: number; month: number; day?: number };\n\n /**\n * only for `[plain]=\"false\"`
\n * The preferred placement of the datepicker popup.
\n * Possible values are `auto`, `top`, `top-left`, `top-right`, `bottom`, `bottom-left`, `bottom-right`,\n * `left`, `left-top`, `left-bottom`, `right`, `right-top`, `right-bottom`
\n * see ng-bootstrap docs for details\n */\n @Input() public placement: string | string[] = 'auto';\n\n /**\n * only for `[plain]=\"false\"`
\n * Indicates whether the datepicker popup should be closed automatically after date selection / outside click or not.
\n *
  • `true` - the popup will close on both date selection and outside click.
  • \n *
  • `false` - the popup can only be closed manually via close() or toggle() methods.
  • \n *
  • `\"inside\"` - the popup will close on date selection, but not outside clicks.
  • \n *
  • `\"outside\"` - the popup will close only on the outside click and not on date selection/inside clicks.
\n */\n @Input() public autoClose: boolean | 'inside' | 'outside' = 'outside';\n\n /**\n * only for `[plain]=\"false\"`
\n * A css selector or html element specifying the element the datepicker popup should be positioned against.\n * By default the input is used as a target.\n */\n @Input() public positionTarget: string | HTMLElement;\n\n /**\n * If set `false`, you'll hidden all errors. Tag a `mbs-input-errors` will be hidden\n */\n @Input() public isShowErrors = true;\n\n /**\n * Show/hide spinner\n */\n @Input() public loading = false;\n\n /**\n * To mark some dates as disabled.\n It is called for each new date when navigating to a different month.\n current is the month that is currently displayed by the datepicker.\n * @param {NgbDate} date\n * @param {any} current\n * @return {boolean}\n */\n @Input() public markDisabled: (date: NgbDate, current: { year: number; month: number }) => boolean = (date, current) => {\n if (date.month !== current.month) {\n return false;\n }\n if (this.minDate && this.getFormattedDateWithTimeReset(date, { hours: 23, min: 59, sec: 59, ms: 999 }) < this.minDate) {\n return true;\n }\n if (this.maxDate && this.getFormattedDateWithTimeReset(date, { hours: 0, min: 0, sec: 0, ms: 0 }) > this.maxDate) {\n return true;\n }\n return false;\n };\n\n /**\n * NgbDate has no time, so when converted to a new Date() object, it defaults to set to 12:00:00.\n * It breaks the logic when comparing.\n * Therefore, we need to reset the time to 00:00:00 or 23:59:59:999\n * @private\n * @param {NgbDate} date\n * @param {any} time\n * @return {Date}\n */\n private getFormattedDateWithTimeReset(date: NgbDate, time: { hours: number; min: number; sec: number; ms: number }): Date {\n return new Date(this.dateAdapter.toModel(date).setHours(time.hours, time.min, time.sec, time.ms));\n }\n\n /**\n * To mark some months as disabled (in 'year' mode).\n It is called for each new month when navigating to a different year.\n current is the month that is currently displayed by the datepicker.\n * @param {any} current\n */\n @Input() markMonthDisabled: (current: { year: number; month: number }) => boolean;\n\n @Input() viewMode: DatepickerViewMode = DatepickerViewMode.month;\n\n @Input() needSetCurrent = false;\n\n /**\n * Add font-weight-bold;\n */\n @Input() public boldLabel = true;\n\n /**\n * An event emitted when user selects a date using keyboard or mouse.
\n * The payload of the event is currently selected `NgbDate`.\n */\n @Output() change = new EventEmitter();\n\n /**\n * An event emitted when user selects a date range using keyboard or mouse.
\n * The payload of the event is currently selected two `NgbDate`'s.\n */\n @Output() rangeSelect = new EventEmitter<{ from: Datepicker; to: Datepicker }>();\n\n /**\n * An event emitted right before the navigation happens and displayed month changes.
\n * See NgbDatepickerNavigateEvent for the payload info.\n */\n @Output() navigate = new EventEmitter();\n\n /**\n * An emit event by click close button dropdown or outside dropdown container\n */\n @Output() closed = new EventEmitter();\n\n /**\n * An emit event by click on custom prepend button\n */\n @Output() buttonClickPrepend = new EventEmitter();\n\n /**\n * An emit event by click on custom append button\n */\n @Output() buttonClickAppend = new EventEmitter();\n /**\n * The callback to mark some dates as disabled.
\n * It is called for each new date when navigating to a different month.
\n * `current` is the month that is currently displayed by the datepicker.\n */\n /**\n * @ignore\n */\n @Output() buttonClick = new EventEmitter();\n\n @ViewChild('dropdown', { static: false, read: NgbDropdown }) dpDropdown: NgbDropdown;\n @ViewChild('dropdownMenu', { static: false, read: NgbDropdownMenu }) dropdownMenu: NgbDropdownMenu;\n @ViewChild('datepicker', { static: false, read: NgbDatepicker }) datepicker: NgbDatepicker;\n @ViewChild('datepicker', { static: false, read: ElementRef }) datepickerRef: ElementRef;\n\n get dropdownMenuDrop(): NgbDropdown {\n return this.dropdownMenu?.dropdown as NgbDropdown;\n }\n\n constructor(\n private calendar: NgbCalendar,\n @Optional() @Self() ngControl: NgControl,\n protected cd: ChangeDetectorRef,\n public i18n: NgbDatepickerI18n\n ) {\n super(ngControl, cd);\n }\n\n ngOnInit(): void {\n if (this.label && !this.id) {\n console.error('Datepicker requires ID if label in use');\n }\n if (this.viewMode === DatepickerViewMode.year) {\n this.maskFormat = DateFormat.shortMonth;\n if (isNil(this.startDate)) {\n this.startDate = { year: new Date().getFullYear(), month: 1 };\n }\n }\n }\n\n ngAfterViewInit(): void {\n this.monthList$.next(this.datepicker.state.months);\n // wait view init, and send all values from parent model;\n this.dateSync$.pipe(untilDestroyed(this)).subscribe((value: Date) => {\n queueMicrotask(() => this.handleDateSet(value));\n });\n\n this.writeValue(this.date);\n this.cd.detectChanges();\n }\n\n handleSetToday(): void {\n this.date = this.currentDate;\n this.navigateTo(this.currentDate);\n }\n\n handleSetToYears(): void {\n this.date = this.currentDate;\n this.datepicker.navigateTo({ year: this.currentDate.getFullYear(), month: this.currentDate.getMonth() + 1 });\n }\n\n handleDateSet(value: Datepicker) {\n this.myValue = this.convertDate(value);\n this.datepickerRef.nativeElement.value = this.myValue;\n this.selectedDate = this.dateAdapter.fromModel(new Date(value));\n if (this.onChange) {\n this.onChange(value);\n }\n this.cd.markForCheck();\n this.change.emit(value);\n }\n\n handleBlur(event: DOMEvent): void {\n super.handleBlur(event);\n this.date = new Date(event.target.value);\n }\n\n handleClick(event: Event): void {\n if (this.viewMode === DatepickerViewMode.month || this.viewMode === DatepickerViewMode.year) {\n !this.dropdownMenuDrop.isOpen() && this.dropdownMenuDrop.open();\n this.date && this.navigateTo(this.date);\n queueMicrotask(() => {\n host(this.datepickerRef).focus();\n });\n }\n }\n\n handleButtonClick(event): void {\n if (this.viewMode === DatepickerViewMode.year) {\n this.dpDropdown.toggle();\n } else {\n this.dropdownMenuDrop.toggle();\n if (this.dropdownMenuDrop.isOpen() && this.date) {\n this.navigateTo(this.date);\n }\n }\n }\n\n handleMonthSelect(date: NgbDate) {\n const navigatedDate = new Date(this.navigatedYear, date.month - 1);\n const ngbDate = new NgbDate(navigatedDate.getFullYear(), navigatedDate.getMonth(), 1);\n this.date = navigatedDate;\n this.datepicker.navigateTo(ngbDate);\n }\n\n handleButtonEnter() {\n if (this.viewMode === DatepickerViewMode.year) {\n this.dropdownMenuDrop.close();\n } else {\n this.dpDropdown.close();\n }\n }\n\n ngOnDestroy(): void {\n this.datepicker?.ngOnDestroy();\n }\n\n writeValue(date: Datepicker): void {\n if (!date) return;\n this.selectedDate = this.dateAdapter.fromModel(new Date(date));\n super.writeValue(this.convertDate(date));\n }\n\n /**\n * Displaying in the input in the correct maskFormat, for example: `Jun 17, 2021`.
\n * Convert Date object using func `formatDate`\n * @param {Datepicker} date\n * @return {string}\n */\n private convertDate(date: Datepicker): string {\n if (!date || date == 'Invalid Date') {\n if (this.needSetCurrent) return formatDate(this.currentDate, this.maskFormat, 'en-US');\n else return null;\n }\n return formatDate(new Date(date), this.maskFormat, 'en-US');\n }\n\n /**\n * Navigates to the provided date.
\n * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.
\n * If nothing or invalid date provided calendar will open current month.
\n * Use the ` [startDate] ` input as an alternative.\n * @param {Date|string} date\n */\n navigateTo(date: Date | string): void {\n this.datepicker.navigateTo(this.dateAdapter.fromModel(new Date(date)));\n }\n\n /**\n * Checking if a value is a weekend\n * @param {NgbDate} date\n * @return {boolean}\n */\n isWeekend(date: NgbDate): boolean {\n return this.calendar.getWeekday(date) >= 6;\n }\n\n /**\n * Checking if a value is a selected date.
\n * It is necessary to set class for selection\n * @param {NgbDate} date\n * @return {boolean}\n */\n isSelected(date: NgbDate): boolean {\n return (\n this.selectedDate &&\n date.day === this.selectedDate.day &&\n date.month === this.selectedDate.month &&\n date.year === this.selectedDate.year\n );\n }\n\n isTodayMonth(date: NgbDate): boolean {\n return date.month - 1 === this.currentDate?.getMonth() && this.navigatedYear === this.currentDate?.getFullYear();\n }\n\n isSelectedMonth(date: NgbDate): boolean {\n return date.month === this.selectedDate?.month && this.navigatedYear === this.selectedDate?.year;\n }\n\n isDisabledMonth(date: NgbDate): boolean {\n return !this.isSelectedMonth(date) && this.markMonthDisabled && this.markMonthDisabled({ year: this.navigatedYear, month: date.month });\n }\n\n /**\n * Will be call in case of set value in the input from dropdown\n * @param {NgbDate | DOMEvent} event\n */\n handleChange(event: NgbDate | DOMEvent): void {\n if (event instanceof Event) {\n this.date = new Date(event.target.value);\n } else {\n this.date = new Date(event.year, event.month - 1, event.day);\n }\n }\n\n /**\n * Emmit event right before the navigation happens and displayed month changes\n * @param {NgbDatepickerNavigateEvent} event\n */\n onNavigate(event: NgbDatepickerNavigateEvent): void {\n this.navigatedYear = event.next.year;\n this.navigate.emit(event);\n }\n\n /**\n * Closing datepicker dropdown\n * @param {Event} event\n */\n onClosed(event): void {\n this.closed.emit(event);\n }\n\n onDateSelection(date: NgbDate) {\n const pickedDate = date as unknown as Datepicker;\n if (!this.myValue && !this.toDate) {\n this.myValue = pickedDate;\n } else if (\n this.myValue &&\n !this.toDate &&\n (date.equals(this.myValue as unknown as NgbDate) || date.after(this.myValue as unknown as NgbDate))\n ) {\n this.toDate = pickedDate;\n } else {\n this.toDate = null;\n this.myValue = pickedDate;\n }\n\n this.rangeSelect.emit({ from: this.myValue, to: this.toDate });\n }\n\n isHovered(date: NgbDate) {\n return (\n this.myValue && !this.toDate && this.hoveredDate && date.after(this.myValue as unknown as NgbDate) && date.before(this.hoveredDate)\n );\n }\n\n isInside(date: NgbDate) {\n return this.toDate && date.after(this.myValue as unknown as NgbDate) && date.before(this.toDate as unknown as NgbDate);\n }\n\n isRange(date: NgbDate) {\n return (\n date.equals(this.myValue as unknown as NgbDate) ||\n (this.toDate && date.equals(this.toDate as unknown as NgbDate)) ||\n this.isInside(date) ||\n this.isHovered(date)\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgbDateAdapter, NgbDateNativeAdapter, NgbDatepickerModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\nimport { IMaskModule } from 'angular-imask';\nimport { ButtonModule } from '../../button/button.module';\nimport { InputBaseModule } from '../input-base/input-base.module';\nimport { DatepickerComponent } from './datepicker.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, NgbDatepickerModule, InputBaseModule, IMaskModule, NgbDropdownModule, ButtonModule],\n declarations: [DatepickerComponent],\n exports: [DatepickerComponent],\n providers: [{ provide: NgbDateAdapter, useClass: NgbDateNativeAdapter }]\n})\nexport class DatepickerModule {\n constructor() {\n // empty\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\nimport { InputBaseModule } from '../input-base/input-base.module';\nimport { DropFileComponent } from './drop-file.component';\nimport { DropFileDirective } from './drop-file.directive';\nimport { DropLabelTextDirective } from './drop-label-text.directive';\n\n@NgModule({\n imports: [ReactiveFormsModule, FormsModule, CommonModule, NgbTooltipModule, InputBaseModule],\n declarations: [DropFileComponent, DropFileDirective, DropLabelTextDirective],\n exports: [DropFileComponent, DropLabelTextDirective]\n})\nexport class DropFileModule {}\n","import { Injectable } from '@angular/core';\nimport { NgbDateParserFormatter, NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';\nimport { pad } from '../../../utils/constants';\n\n/**\n * This Service handles how the date is rendered and parsed from keyboard i.e. in the bound input field.\n */\n@Injectable()\nexport class ShortDateParserFormatter extends NgbDateParserFormatter {\n readonly DELIMITER = '/';\n\n parse(value: string): NgbDateStruct | null {\n if (value) {\n const [month, day, year] = new Date(value).toLocaleDateString('en-US').split(this.DELIMITER);\n return {\n month: parseInt(month, 10),\n day: parseInt(day, 10),\n year: parseInt(year, 10)\n };\n }\n return null;\n }\n\n format(date: NgbDateStruct | null): string {\n return date ? `${pad(date.month)} ${this.DELIMITER} ${pad(date.day)} ${this.DELIMITER} ${date.year}` : '';\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NgbTimeAdapter, NgbTimeStruct } from '@ng-bootstrap/ng-bootstrap';\nimport { pad } from '../../../utils/constants';\n\n/**\n * Example of a String Time adapter\n */\n@Injectable()\nexport class NgbTimeStringAdapter extends NgbTimeAdapter {\n fromModel(value: string | null): NgbTimeStruct | null {\n if (!value) {\n return null;\n }\n\n if (typeof value == 'string') {\n const split = value.split(':');\n return {\n hour: parseInt(split[0], 10),\n minute: parseInt(split[1], 10),\n second: split[2] ? parseInt(split[2], 10) : null\n };\n } else {\n return value;\n }\n }\n\n toModel(time: NgbTimeStruct | null): string | null {\n return time != null ? `${pad(time.hour)}:${pad(time.minute)}:${pad(time.second)}` : null;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\nimport { NgScrollbarModule } from 'ngx-scrollbar';\nimport { ButtonModule } from '../../button';\nimport { TagModule } from '../../tag';\nimport { InputBaseModule } from '../input-base/input-base.module';\nimport { TagsInputComponent } from './tags-input.component';\n\n@NgModule({\n imports: [CommonModule, InputBaseModule, ReactiveFormsModule, TagModule, ButtonModule, NgScrollbarModule, NgbDropdownModule],\n declarations: [TagsInputComponent],\n exports: [TagsInputComponent]\n})\nexport class TagsInputModule {}\n","import { sprintf } from 'sprintf-js';\n/**\n * @returns {String} the string with all zeroes contained in a \n */\nexport function spanAllZeroes(s) {\n return s.replace(/(0+)/g, '$1');\n}\n/**\n * @returns {String} the string with each character contained in a \n */\nexport function spanAll(s, offset = 0) {\n const letters = s.split('');\n return letters\n .map((n, i) => sprintf('%s', n, i + offset, spanAllZeroes(n)) // XXX Use #base-2 .value-0 instead?\n )\n .join('');\n}\nfunction spanLeadingZeroesSimple(group) {\n return group.replace(/^(0+)/, '$1');\n}\n/**\n * @returns {String} the string with leading zeroes contained in a \n */\nexport function spanLeadingZeroes(address) {\n const groups = address.split(':');\n return groups.map((g) => spanLeadingZeroesSimple(g)).join(':');\n}\n/**\n * Groups an address\n * @returns {String} a grouped address\n */\nexport function simpleGroup(addressString, offset = 0) {\n const groups = addressString.split(':');\n return groups.map((g, i) => {\n if (/group-v4/.test(g)) {\n return g;\n }\n return sprintf('%s', i + offset, spanLeadingZeroesSimple(g));\n });\n}\n","import { AfterViewInit, Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[mbsAutoFocus]'\n})\nexport class AutoFocusDirective implements AfterViewInit {\n constructor(private elRef: ElementRef) {}\n\n ngAfterViewInit(): void {\n const input = this.elRef.nativeElement.querySelector('input');\n\n if (input) {\n // prevent ExpressionChangedAfterItHasBeenCheckedError\n setTimeout(() => input.focus());\n }\n }\n}\n","import { Directive, ElementRef, Input, OnChanges } from '@angular/core';\n\n@Directive({\n selector: '[mbsFocus]'\n})\nexport class FocusDirective implements OnChanges {\n @Input() isFocused: boolean;\n\n constructor(private el: ElementRef) {}\n\n ngOnChanges() {\n if (this.isFocused) {\n queueMicrotask(() => this.el.nativeElement.querySelectorAll('[tabindex]')[0].focus());\n }\n }\n}\n","import { AfterViewInit, Directive, ElementRef, EventEmitter, OnDestroy, Output } from '@angular/core';\n\n@Directive({\n selector: '[mbsFocusBlurHandler]'\n})\nexport class FocusBlurHandlerDirective implements AfterViewInit, OnDestroy {\n @Output() public onFocus = new EventEmitter();\n @Output() public onBlur = new EventEmitter();\n\n private get inputs(): NodeListOf {\n return this.elRef.nativeElement.querySelectorAll('[tabindex]');\n }\n\n constructor(private elRef: ElementRef) {}\n\n ngAfterViewInit(): void {\n queueMicrotask(() => {\n this.setListeners();\n });\n }\n\n private handleFocus() {\n this.onFocus.emit();\n }\n\n private handleblur() {\n this.onBlur.emit();\n }\n\n private setListeners(): void {\n this.inputs.forEach(input => {\n input.addEventListener('focus', () => this.handleFocus());\n input.addEventListener('blur', () => this.handleblur());\n });\n }\n\n private removeListeners(): void {\n this.inputs.forEach(input => {\n input.removeEventListener('focus', () => this.handleFocus());\n input.removeEventListener('blur', () => this.handleblur());\n });\n }\n\n ngOnDestroy(): void {\n this.removeListeners();\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[mbsInputAppend]'\n})\nexport class InputAppendDirective {\n constructor() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\nimport { AutoFocusDirective } from './auto-focus.directive';\nimport { FocusDirective } from './focus.directive';\nimport { FocusBlurHandlerDirective } from './focusBlurHandler.directive';\nimport { InputAppendDirective } from './input-append.directive';\nimport { InputErrorsDirective } from './input-errors.directive';\nimport { InputErrorsComponent } from './input-errors/input-errors.component';\nimport { InputLabelDirective } from './input-label.directive';\nimport { InputLabelComponent } from './input-label/input-label.component';\nimport { InputPreAppendComponent } from './input-pre-append/input-pre-append.component';\nimport { InputPrependDirective } from './input-prepend.directive';\n\nconst baseDeclaration = [\n InputLabelDirective,\n InputErrorsDirective,\n InputLabelComponent,\n InputErrorsComponent,\n InputPreAppendComponent,\n InputPrependDirective,\n InputAppendDirective,\n AutoFocusDirective,\n FocusBlurHandlerDirective,\n FocusDirective\n];\n\n@NgModule({\n imports: [CommonModule, NgbTooltipModule],\n declarations: baseDeclaration,\n exports: baseDeclaration\n})\nexport class InputBaseModule {}\n","import { ChangeDetectorRef, ContentChild, Directive, EventEmitter, Input, Optional, Output, Self, TemplateRef } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NgControl, ValidationErrors } from '@angular/forms';\nimport { isNil } from 'lodash';\nimport { MbsLabelSize, MbsSize, MbsValidators } from '../../utils';\nimport { InputAppendDirective } from './input-append.directive';\nimport { ValidClasses } from './input-base.model';\nimport { ValidationErrorType } from './input-base.types';\nimport { InputErrorsDirective } from './input-errors.directive';\nimport { InputLabelDirective } from './input-label.directive';\nimport { MbsNgClass } from './input-label/input-label.model';\nimport { InputButton } from './input-pre-append/input-button';\nimport { InputPrependDirective } from './input-prepend.directive';\n\n@Directive({})\nexport abstract class InputBase implements ControlValueAccessor {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n protected myValue: T = '' as any;\n @Input() public set value(value: T) {\n this.myValue = value;\n\n if (this.onChange) {\n this.onChange(this.value);\n }\n this.cd.markForCheck();\n this.change.emit(value);\n }\n public get value(): T {\n return this.myValue;\n }\n\n /**\n * HTML Id\n */\n @Input() public id: string = 'input-' + Math.random().toString(36).substring(7);\n /**\n * Input placeholder\n */\n @Input() public placeholder = '';\n /**\n * Input autofocus\n */\n @Input() public autofocus = false;\n /**\n * Input label.\n * if `string` then use default template\n * `TemplateRef` will insert\n */\n @Input() public label: string | TemplateRef;\n\n @Input() public labelPosition: 'left' | 'right' | 'top' | 'bottom';\n\n /**\n * CSS Classes for label content wrapper\n */\n @Input() public labelContentClasses: MbsNgClass;\n\n /**\n * The name of the control, which is submitted with the form data.\n */\n @Input() public name: string;\n /**\n * HTML tabindex\n */\n @Input() public tabindex = 0;\n\n /**\n * Disable input with ignore FormControl warnings\n */\n @Input() public disabledSelf = false;\n /**\n * Disable input\n */\n @Input() public disabled: boolean;\n get disabledState(): boolean {\n return (!isNil(this.disabled) && this.disabled !== false) || (!isNil(this.disabledSelf) && this.disabledSelf !== false);\n }\n\n /**\n * Readonly input\n */\n @Input() public readonly: boolean;\n public get readonlyState(): boolean {\n return !isNil(this.readonly) && this.readonly !== false;\n }\n\n /**\n * Classes for label\n */\n @Input() labelClasses: MbsNgClass;\n\n /**\n * @ignore\n */\n public get errors(): ValidationErrorType[] {\n if (!this.ngControl.errors || this.ngControl.pristine || (this.ngControl.control && this.ngControl.control.valid)) {\n return [];\n }\n\n return this.mapErrors(this.ngControl.errors);\n }\n\n /**\n * Label info. Append info icon\n */\n @Input() public info: string;\n\n /**\n * Label tooltip position\n */\n @Input() public infoPlacement = 'auto';\n\n /**\n * Specifies events that should trigger the tooltip\n */\n @Input() public infoTriggers = 'hover focus';\n\n /**\n * A selector specifying the element the tooltip should be appended to.\n */\n @Input() public infoContainer;\n\n @Input() public autocomplete: 'on' | 'off' | 'new-password' = 'on';\n /**\n * Flag for label `text-overflow` CSS-class\n */\n @Input() public textOverflow = false;\n\n /**\n * Radio size `lg` or `sm`.\n */\n @Input() public size: MbsSize.xxs | MbsSize.xs | MbsSize.sm | MbsSize.md | MbsSize.lg = null;\n\n /**\n * Label size from `xxs` to `lg`.\n */\n @Input() public labelSize: MbsLabelSize;\n\n public get sizeClass(): string {\n return this.size ? 'form-control-' + this.size : '';\n }\n\n /** Displaying '*' for required fields is the default behavior, but can be overridden. */\n @Input() public showRequiredMark = true;\n\n /**\n * if [isErrorsShow]=\"false\" we hidden mbs-input-errors\n */\n @Input() isErrorsShow = true;\n\n /**\n * @ignore\n */\n public get validClasses(): ValidClasses {\n return {\n 'ng-untouched': this.ngControl.control ? this.ngControl.untouched : false,\n 'ng-touched': this.ngControl.control ? this.ngControl.touched : false,\n 'ng-pristine': this.ngControl.control ? this.ngControl.control.pristine : false,\n 'ng-dirty': this.ngControl.control ? this.ngControl.control.dirty : false,\n 'ng-valid': this.ngControl.control ? this.ngControl.control.valid : false,\n 'ng-invalid':\n this.ngControl.control && !isNil(this.ngControl.control.validator || this.ngControl.control.asyncValidator)\n ? this.ngControl.control.invalid\n : false,\n 'ng-pending': this.ngControl.control ? this.ngControl.control.pending : false\n };\n }\n\n @Input() prependButtons: InputButton[];\n @Input() appendButtons: InputButton[];\n\n @ContentChild(InputPrependDirective, { read: TemplateRef, static: true }) prepend: TemplateRef;\n @ContentChild(InputAppendDirective, { read: TemplateRef, static: true }) append: TemplateRef;\n\n @ContentChild(InputLabelDirective, { static: true }) labelTemplate: InputLabelDirective;\n @ContentChild(InputErrorsDirective, { static: true }) errorsTemplate: InputErrorsDirective;\n\n protected ngControl: NgControl;\n\n /**\n * Required indicator\n * Append red wildcard to label\n */\n public get hasRequiredValidator(): boolean {\n if (this.ngControl.control && this.ngControl.control.validator) {\n const validators = this.ngControl.control.validator(new FormControl());\n return Boolean(validators && validators.required);\n }\n\n return false;\n }\n\n @Output() change = new EventEmitter();\n @Output() blur = new EventEmitter();\n @Output() focus = new EventEmitter();\n\n constructor(@Optional() @Self() ngControl: NgControl, protected cd: ChangeDetectorRef) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n this.ngControl = ngControl || ({} as any);\n if (ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n onChange: (value: T) => void;\n onTouched: () => void;\n\n writeValue(obj: T): void {\n this.myValue = obj;\n this.cd.markForCheck();\n }\n registerOnChange(fn: (value) => void): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cd.markForCheck();\n }\n\n handleBlur(event: Event): void {\n if (this['trim'] && this.value && this.value['trim']) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment\n this.myValue = (this.value as any).trim();\n if (this.ngControl && this.ngControl.control) {\n this.ngControl.control.setValue(this.myValue);\n }\n }\n\n // https://angular.io/api/forms/AbstractControl A control is marked touched once the user has triggered a blur event on it.\n if (this.onTouched) {\n this.onTouched();\n }\n\n this.blur.emit(event);\n }\n\n handleFocus(event: FocusEvent): void {\n if (this.onTouched) {\n this.onTouched();\n }\n this.focus.emit(event);\n }\n\n public mapErrors(errors: ValidationErrors): ValidationErrorType[] {\n if (!errors) return [];\n\n return Object.entries(errors)\n .map(([key, value]) => Object.assign({}, { key }, value) as ValidationErrorType)\n .map((er) => {\n if (!er.message) {\n const errorMessage = MbsValidators.validatorMessages[er.key] as (error) => string;\n er.message = errorMessage ? errorMessage(er) : undefined;\n }\n return er;\n })\n .filter((er) => er.message);\n }\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[mbsInputErrors]'\n})\nexport class InputErrorsDirective {\n constructor(public templateRef: TemplateRef) {}\n}\n","\n\n\n\n 0\">\n\n
\n {{ error.message }}\n
\n\n
\n\n
\n","import { Component, ContentChild, Input, OnChanges, SimpleChanges, TemplateRef } from '@angular/core';\nimport { ValidationErrorType } from '../input-base.types';\n\n@Component({\n selector: 'mbs-input-errors',\n templateUrl: './input-errors.component.html',\n host: {\n class: 'mbs-form-feedback'\n }\n})\nexport class InputErrorsComponent implements OnChanges {\n @Input() errors: Partial[] = [];\n @Input('errorsTemplate') set myErrorsTemplate(template: TemplateRef) {\n this.errorsTemplate = template;\n }\n @ContentChild(TemplateRef, { read: TemplateRef, static: true }) errorsTemplate: TemplateRef;\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!changes.errors.currentValue) {\n this.errors = [];\n }\n }\n\n trackByMessage(index, item: ValidationErrorType): string {\n return item.message;\n }\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[mbsInputLabel]'\n})\nexport class InputLabelDirective {\n constructor(public templateRef: TemplateRef) {}\n}\n","\n\n\n\n\n\n {{ label || ''}}\n\n","import { Component, Input, SimpleChanges, TemplateRef } from '@angular/core';\nimport { MbsLabelSize } from '../../../utils';\nimport { convertCssClassesToString } from '../../../utils/helpers/convertCssClassesToString';\nimport { InputLabelContext, MbsNgClass } from './input-label.model';\nimport { isNil } from 'lodash';\n\n@Component({\n selector: 'mbs-input-label,[mbs-input-label]',\n templateUrl: './input-label.component.html'\n})\nexport class InputLabelComponent {\n /**\n * HTML Id\n */\n @Input() public id: string;\n\n @Input() labelContext: InputLabelContext;\n\n public get context(): InputLabelContext {\n return (\n this.labelContext || {\n id: this.id,\n label: this.label,\n info: this.info,\n infoPlacement: this.infoPlacement,\n infoTriggers: this.infoTriggers,\n infoContainer: this.infoContainer,\n required: this.required,\n disabled: this.disabled,\n type: this.type,\n labelClasses: this.labelClasses,\n isString: this.isString.bind(this) as boolean\n }\n );\n }\n\n /**\n * Input label.\n * if `string` then use default template\n * `TemplateRef` will insert\n */\n @Input() public label: string | TemplateRef;\n /**\n * Label info. Append info icon as tooltip.\n */\n @Input() public info: string;\n\n /**\n * Label tooltip position\n */\n @Input() public infoPlacement = 'auto';\n\n /**\n * Label position\n */\n @Input() public labelPosition: 'left' | 'right' | 'top' | 'bottom';\n\n /**\n * Centered Label position. only for checkboxes and radio with \"top\" and \"bottom\" `position` property\n */\n @Input() public center: boolean;\n\n /**\n * Specifies events that should trigger the tooltip\n */\n @Input() public infoTriggers = 'hover focus';\n\n /**\n * A selector specifying the element the tooltip should be appended to.\n * Currently only supports \"body\".\n */\n @Input() public infoContainer: string;\n\n /**\n * Append red `*` after label for `string` type\n */\n @Input() public required = false;\n\n /**\n * Text size for Default label template;\n */\n @Input() public labelSize: MbsLabelSize;\n\n /**\n * Add font-weight-bold;\n */\n @Input() public boldLabel: boolean;\n\n /*\n * Disable state\n */\n @Input()\n public set disabled(value: boolean) {\n this._disabled = value;\n }\n public get disabled() {\n return this._disabled;\n }\n private _disabled = false;\n get disabledState(): boolean {\n return !isNil(this._disabled) && this._disabled !== false;\n }\n\n @Input() public type: 'checkbox' | 'radio' | 'form' = 'form';\n @Input() public labelClasses: MbsNgClass;\n public labelClassesInner: string;\n private labelClassesDefault = '';\n\n /**\n * CSS Classes for label content wrapper\n */\n @Input() public labelContentClasses: MbsNgClass;\n private labelContentClassesDefault = '';\n public labelContentClassesInner = '';\n\n ngOnInit(): void {\n if (!this.labelPosition) {\n this.labelPosition = this.type === 'form' ? 'top' : 'right';\n }\n this.labelClassesDefault = `mbs-${this.type}_label`;\n this.labelContentClassesDefault = `mbs-${this.type}_label-content`;\n this.labelClassesInner = this.getCurrentClasses(this.labelClasses, this.labelClassesDefault);\n if (this.disabledState) {\n this.labelClassesInner += ' -disabled';\n }\n if (this.center && this.type !== 'form' && (this.labelPosition === 'top' || this.labelPosition === 'bottom')) {\n this.labelClassesInner += ' -center';\n }\n if (this.type !== 'form' && !this.label) {\n this.labelClassesInner += ' -no-text';\n }\n if (this.labelSize) {\n this.labelClassesInner += ` -${this.labelSize}`;\n }\n this.labelClassesInner += ' -' + this.labelPosition;\n this.labelContentClassesInner =\n this.getCurrentClasses(this.labelContentClasses, this.labelContentClassesDefault) + ' ' + this.getSizeClass();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.labelContentClasses || changes.labelSize) {\n this.labelContentClassesInner =\n this.getCurrentClasses(this.labelContentClasses, this.labelContentClassesDefault) + ' ' + this.getSizeClass();\n }\n if (changes.labelClasses || changes.disabled || changes.label || changes.labelSize) {\n this.labelClassesInner = this.getCurrentClasses(this.labelClasses, this.labelClassesDefault);\n if (this.disabledState) {\n this.labelClassesInner += ' -disabled';\n }\n if (this.type !== 'form' && changes.label && !changes.label.currentValue) {\n this.labelClassesInner += ' -no-text';\n }\n if (this.labelSize) {\n this.labelClassesInner += ` -${this.labelSize}`;\n }\n }\n }\n\n public isString(source: any): boolean {\n return isNil(source) || typeof source === 'string';\n }\n\n getCurrentClasses(classes: MbsNgClass, defaultClass = ''): string {\n return convertCssClassesToString(classes, defaultClass, !isNil(this.label));\n }\n\n getSizeClass(): string {\n return this.labelSize ? 'text-' + this.labelSize.toString() : '';\n }\n}\n","import { MbsNgClass } from '../../form/input-base/input-label/input-label.model';\nimport { isNil } from 'lodash';\n\n/**\n * This function is useful when it's need to get CSS classes from @Input and concat it with some inner classes for further usage in template;\n * @param {MbsNgClass} classes\n * @param {string} defaultClass\n * @param {boolean} hasLabel\n * @return {string}\n */\nexport function convertCssClassesToString(classes: MbsNgClass, defaultClass = '', hasLabel = true): string {\n if (isNil(classes) || !hasLabel) {\n return defaultClass;\n }\n switch (true) {\n case typeof classes === 'string': {\n // linter do not understand that classes is 100% string, so toString is required but useless\n return defaultClass.toString() + ' ' + classes.toString();\n }\n case Array.isArray(classes): {\n // It is 100% Array, but linter don't understand =(\n return [defaultClass].concat(classes as Array).join(' ');\n }\n case typeof classes === 'object': {\n // Set or Object\n if (Object.prototype.hasOwnProperty.call(classes, 'add')) {\n // same stuff as previous but with Set\n return [defaultClass].concat(Array.from(classes as Set)).join(' ');\n } else {\n // classes is object\n const activeClasses = Object.entries(classes)\n .filter(([key, val]) => Boolean(val))\n .map(([key, val]) => key);\n return [defaultClass].concat(activeClasses).join(' ');\n }\n }\n }\n return '';\n}\n","\n \n \n \n\n\n\n \n \n\n\n\n","import {\n Attribute,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n Output,\n Renderer2,\n TemplateRef\n} from '@angular/core';\nimport { InputButton } from './input-button';\n\nexport type Position = 'prepend' | 'append';\n\n@Component({\n selector: 'mbs-input-pre-append',\n templateUrl: './input-pre-append.component.html'\n})\nexport class InputPreAppendComponent {\n @Input() customClasses: string;\n @Input() data: InputButton[];\n @Input() disabled: boolean;\n @Input('dataTemplate') set myDataTemplate(template: TemplateRef) {\n this.dataTemplate = template;\n }\n\n /**\n * Radio size `lg` or `sm`. From parent input.\n */\n @Input() public size: 'lg' | 'sm' = null;\n\n @Output() buttonClick = new EventEmitter();\n @Output() keyupEnter = new EventEmitter();\n @ContentChild(TemplateRef, { read: TemplateRef, static: true }) dataTemplate: TemplateRef;\n\n constructor(@Attribute('position') position: Position, private el: ElementRef, renderer2: Renderer2) {\n renderer2.addClass(el.nativeElement, 'input-group-' + position);\n }\n\n generateButtonClasses(button: InputButton): string[] {\n const size = button.size || this.size;\n return ['btn', 'btn-' + button.type || '', size ? 'btn-' + size : '', button.loading ? '-loading' : '', this.customClasses || ''];\n }\n\n @HostListener('document:keyup.enter', ['$event'])\n handleKeyupEnter(event: InputButton): void {\n if (!event) return;\n this.keyupEnter.emit(event);\n }\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[mbsInputPrepend]'\n})\nexport class InputPrependDirective {\n constructor(public templateRef: TemplateRef) {}\n}\n","
\n \n \n \n \n
\n \n \n
\n \n -\n \n
\n \n
\n
\n \n \n
\n
\n","import { Component, ContentChild, EventEmitter, Input, Output } from '@angular/core';\nimport { InputButton, InputComponent } from '../index';\nimport { MbsSize } from '../../utils';\n\n@Component({\n selector: 'mbs-input-range',\n templateUrl: './input-range.component.html'\n})\nexport class InputRangeComponent {\n @Input() disabled = false;\n @Input() loading = false;\n @Input() label: string;\n @Input() appendButtons: InputButton[];\n @Input() prependButtons: InputButton[];\n @Input() size: MbsSize.xs | MbsSize.sm | MbsSize.md | MbsSize.lg = null;\n\n @Output() buttonClick = new EventEmitter();\n\n @ContentChild('startDate') startInput: InputComponent;\n @ContentChild('endDate') endInput: InputComponent;\n\n get sizeClass(): string {\n return this.size ? 'form-control-' + this.size : '';\n }\n\n get sizeGroupClass(): string {\n return this.size ? 'input-group_control-' + this.size : '';\n }\n\n get classes(): { [key: string]: boolean } {\n const newClass: { [key: string]: boolean } = { focus: this.isFocus, disabled: this.disabled };\n\n if (this.size) {\n newClass['form-control-' + this.size] = true;\n newClass['d-flex'] = true;\n newClass['align-items-center'] = true;\n }\n\n return newClass;\n }\n\n public isFocus = false;\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ButtonModule } from '../../button/button.module';\nimport { InputBaseModule } from '../input-base/input-base.module';\nimport { InputModule } from '../input/input.module';\nimport { InputRangeComponent } from './input-range.component';\n\n@NgModule({\n imports: [ReactiveFormsModule, FormsModule, CommonModule, InputBaseModule, ButtonModule, InputModule],\n declarations: [InputRangeComponent],\n exports: [InputRangeComponent]\n})\nexport class InputRangeModule {}\n","
\n\n \n\n \n\n \n\n \n\n
\n\n \n \n\n
\n\n \n\n \n\n \n \n \n\n
\n\n \n\n
\n\n \n
\n\n \n\n
\n\n \n\n \n\n
\n\n
\n\n \n \n \n\n
\n\n \n \n\n
\n\n \n\n \n\n
\n\n

\n {{ errorTooltipTitle }}\n

\n\n
    \n
  • \n {{ item.message }}\n
  • \n
\n\n
\n\n
\n\n
\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n OnInit,\n Optional,\n Output,\n QueryList,\n Self,\n SimpleChanges,\n ViewChild,\n ViewChildren\n} from '@angular/core';\nimport { NgControl, Validators } from '@angular/forms';\nimport { NgbTypeaheadSelectItemEvent } from '@ng-bootstrap/ng-bootstrap';\nimport IMask from 'imask';\nimport { Observable, of } from 'rxjs';\nimport { isTemplate } from '../../utils';\nimport { MbsValidators } from '../../utils/mbs-validators';\nimport { InputButton } from '../index';\nimport { InputBase } from '../input-base/input-base';\nimport { DOMEvent, InputClasses, ValidClasses } from '../input-base/input-base.model';\nimport {IMaskDirective} from \"angular-imask\";\n\nexport type MaskedOptions = IMask.AnyMaskedOptions;\nexport type MaskElement = IMask.MaskElement;\n\n@Component({\n selector: 'mbs-input',\n templateUrl: './input.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class InputComponent extends InputBase implements OnInit, OnChanges, AfterViewInit {\n @Input() maxHeight?: string;\n @Input() imaskOpts?: MaskedOptions;\n @Input() unmask?: boolean | 'typed';\n @Input() imaskElement: (elementRef: ElementRef, directiveRef: any) => MaskElement = (elementRef) => elementRef.nativeElement;\n\n @Input() filePlaceholderOverflow = true;\n\n @Input() public customClasses = ''\n\n /**\n * @ignore\n */\n public get isLabelTemplate(): boolean {\n return isTemplate(this.label);\n }\n\n /**\n * @ignore\n */\n public get bindClasses(): string[] {\n const classesObject: InputClasses = Object.assign, ValidClasses>(\n { '-clearable': this.clearButton || this.loading },\n this.validClasses\n );\n return Object.entries(classesObject)\n .filter(([k, v]) => !!v)\n .map(([k]) => k)\n .concat([this.sizeClass])\n .concat([this.customClasses])\n }\n\n constructor(@Optional() @Self() ngControl: NgControl, protected cd: ChangeDetectorRef) {\n super(ngControl, cd);\n }\n /**\n * Set maxLength\n */\n @Input() maxLength = 1000;\n\n /**\n * Set maxLength\n */\n @Input() minLength = 0;\n\n /**\n * Show clear button\n */\n @Input() clearButton = false;\n /**\n * Show spinner\n */\n @Input() loading = false;\n\n /**\n * If `type=textarea` then bind rows count\n */\n @Input() rows = 1;\n /**\n * If `type=textarea` then bind style\n */\n @Input() resize: 'none' | 'both' | 'horizontal' | 'vertical' | 'initial';\n\n @Input() public trim = true;\n /**\n * `type=\"file\"` only
\n * If `true` allows to upload multiple files at a time.\n */\n @Input() multiple = true;\n\n /**\n * Any support HTML type.\n * Please don't use non-text types (e.g. checkbox, radio etc)\n */\n @Input() public type = 'text';\n\n private myValidationWhitespace = false;\n\n @Input() set validationWhitespace(value: boolean) {\n this.myValidationWhitespace = String(value) !== 'false';\n this.handleWhitespaceValidation(this.myValidationWhitespace);\n }\n\n /**\n * Add font-weight-bold;\n */\n @Input() public boldLabel = true;\n\n /**\n * It defines the file types the file input should accept.\n * This string is a comma-separated list of unique file type specifiers\n *\n * @example\n * \n */\n @Input() public accept: string;\n\n @Input() buttonClickOnEnter = false;\n @Input() buttonClickOnEnterIndex = 0;\n\n @Input() showErrorsInTooltip = false;\n @Input() errorTooltipTitle = '';\n\n @Input() container = 'body';\n @Input() placement = 'bottom-left bottom-right top-left top-right';\n @Input() tooltipClass = 'tooltip-xl';\n\n @Input() autoClose = false;\n\n @Input() public typeahead: (text: Observable) => Observable = () => of([]);\n\n /**\n * Emit event after clear button click.\n * Work until `clearButton = true`\n */\n @Output() clear = new EventEmitter();\n @Output() buttonClick = new EventEmitter();\n\n /**\n * File input control\n * `ViewChild` don't work after `ngIf`\n */\n @ViewChildren('fileInputElement', { read: ElementRef }) fileInputElement: QueryList>;\n\n @ViewChild('errorsTooltip', { static: false }) errorsTooltip: any;\n @ViewChild(IMaskDirective, { read: IMaskDirective, static: false }) maskDirective: IMaskDirective;\n\n @HostListener('document:keyup.enter', ['$event'])\n enterClickHandler(event: DOMEvent): void {\n if (this.buttonClickOnEnter && event.target && event.target.value) {\n if (this['trim'] && this.value && (this.value as string)['trim']) {\n this.myValue = (this.value as string).trim();\n if (this.onChange) this.onChange(this.value);\n }\n if (this.appendButtons && !!this.appendButtons.length) {\n this.buttonClick.emit(this.appendButtons[this.buttonClickOnEnterIndex]);\n }\n }\n }\n\n ngOnInit(): void {\n if (this.ngControl.valueChanges) {\n this.ngControl.valueChanges.subscribe(() => {\n if (this.type === 'file') {\n this.onTouched(); // fix event touched field for safari\n }\n this.cd.markForCheck();\n });\n }\n if (this.ngControl.statusChanges) {\n this.ngControl.statusChanges.subscribe((status) => {\n if (this.showErrorsInTooltip && this.errorsTooltip) {\n if (this.ngControl.errors) {\n const hasMessage = Object.keys(this.ngControl.errors).some((key) => this.ngControl.errors[key].message);\n if (status === 'INVALID' && hasMessage) this.errorsTooltip.open();\n else this.errorsTooltip.close();\n } else this.errorsTooltip.close();\n }\n this.cd.markForCheck();\n });\n }\n }\n\n getErrorsArray(): string[] {\n return this.ngControl?.errors ? Object.values(this.ngControl.errors) : [];\n }\n\n ngAfterViewInit(): void {\n this.handleWhitespaceValidation(this.myValidationWhitespace);\n }\n\n /**\n * Raise event and clear `value`\n * @param {MouseEvent} event\n * @param {HTMLInputElement} elem\n */\n handleClear(event: MouseEvent = null, elem: HTMLInputElement = null): void {\n if (event && elem) {\n event.preventDefault();\n elem.value = '';\n }\n this.value = '';\n this.clear.emit(this.value as string);\n this.ngControl.control.markAsPristine();\n }\n\n handleChange(event: DOMEvent, fileValue = null): void {\n this.value = this.type === 'file' ? event.target.files : event;\n }\n\n handleTypeaheadItemSelected(event: NgbTypeaheadSelectItemEvent) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n this.value = event.item;\n }\n\n loadFileHandler(event: InputButton, elem: HTMLInputElement): void {\n elem.click();\n this.buttonClick.emit(event);\n }\n\n handleWhitespaceValidation(state: boolean): void {\n if (this.ngControl?.control && state !== false) {\n const extendValidators = Validators.compose([this.ngControl.control.validator, MbsValidators.whitespaceValidator]);\n this.ngControl.control.setValidators(extendValidators);\n }\n }\n\n writeValue(obj: any): void {\n super.writeValue(obj);\n if (!obj && this.type === 'file' && this.fileInputElement) {\n this.fileInputElement.first.nativeElement.value = '';\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes?.showErrorsInTooltip && this.errorsTooltip) {\n if (!changes?.showErrorsInTooltip?.currentValue) this.errorsTooltip.close();\n else if (this.ngControl.errors && Object.keys(this.ngControl.errors).some((key) => this.ngControl.errors[key].message)) {\n this.errorsTooltip.open();\n }\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgbTooltipModule, NgbTypeaheadModule } from '@ng-bootstrap/ng-bootstrap';\nimport { IMaskModule } from 'angular-imask';\nimport { ButtonModule } from '../../button/button.module';\nimport { InputBaseModule } from '../input-base/input-base.module';\nimport { InputComponent } from './input.component';\n\n@NgModule({\n imports: [\n ReactiveFormsModule,\n FormsModule,\n CommonModule,\n NgbTooltipModule,\n IMaskModule,\n InputBaseModule,\n NgbTypeaheadModule,\n ButtonModule\n ],\n declarations: [InputComponent],\n exports: [InputComponent]\n})\nexport class InputModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\nimport { IMaskModule } from 'angular-imask';\nimport { InputBaseModule } from '../input-base/input-base.module';\nimport { IPAddressComponent } from './ip-address.component';\n\n@NgModule({\n declarations: [IPAddressComponent],\n imports: [CommonModule, FormsModule, NgbTooltipModule, IMaskModule, InputBaseModule],\n exports: [IPAddressComponent],\n providers: []\n})\nexport class IPAddressModule {\n constructor() {\n // empty\n }\n}\n","
\n\n \n
\n \n\n \n\n \n\n \n\n = max\"\n icon=\"ico ico-PlusThin mr-0\"\n (click)=\"changeValueHandler()\">\n\n \n\n \n\n \n\n \n\n
\n\n \n
\n","import { ChangeDetectorRef, Component, Input, OnInit, Optional, Self, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { IMaskDirective } from 'angular-imask';\nimport IMask from 'imask';\nimport { isNil } from 'lodash';\nimport { InputBase } from '../input-base/input-base';\nimport { DOMEvent, InputClasses, ValidClasses } from '../input-base/input-base.model';\n\nexport type MaskedOptions = IMask.AnyMaskedOptions;\nexport type MaskElement = IMask.MaskElement;\n\n@Component({\n selector: 'app-number,mbs-number',\n templateUrl: './number.component.html'\n})\nexport class NumberComponent extends InputBase implements OnInit, ControlValueAccessor {\n @Input() public max: number = Number.MAX_SAFE_INTEGER;\n @Input() public min: number = Number.MIN_SAFE_INTEGER;\n @Input() public step = 1;\n @Input() imaskOpts?: MaskedOptions;\n /**\n * HTML tabindex\n */\n @Input() tabindex = 0;\n /**\n * Toggles showing '+' and '-' buttons\n */\n @Input() showButtons = true;\n /**\n * Add font-weight-bold;\n */\n @Input() public boldLabel = true;\n\n @Input() public containerClasses = '';\n\n /**\n * @ignore\n */\n public get bindClasses(): string[] {\n const classesObject: InputClasses = Object.assign, ValidClasses>({}, this.validClasses);\n return Object.entries(classesObject)\n .filter(([k, v]) => !!v)\n .map(([k]) => k)\n .concat([this.sizeClass]);\n }\n public elementSelectors = {\n id: {\n btnUp: 'mbs-button-up',\n btnDown: 'mbs-button-down'\n }\n };\n\n protected labelContentClassesDefault = 'mbs-number_label-content';\n\n @ViewChild(IMaskDirective, { read: IMaskDirective, static: true }) maskDirective: IMaskDirective;\n constructor(@Optional() @Self() ngControl: NgControl, protected cd: ChangeDetectorRef) {\n super(ngControl, cd);\n }\n\n ngOnInit(): void {\n this.maskDirective.writeValue(String(this.myValue));\n }\n\n writeValue(obj: any): void {\n this.myValue = !isNil(obj) ? +obj : 0;\n this.maskDirective.writeValue(String(this.myValue));\n this.cd.markForCheck();\n }\n\n changeValueHandler(isIncrement = true): void {\n this.checkRanges(isIncrement);\n this.onTouched && this.onTouched();\n this.maskDirective.writeValue(String(this.value));\n }\n\n numberChangeHandler(event: Event): void {\n event.stopPropagation();\n }\n\n checkRanges(isIncrement: boolean): void {\n if (isIncrement) {\n this.value = this.max && +this.value + +this.step > this.max ? +this.max : +this.value + +this.step;\n } else {\n this.value = this.min && this.value - +this.step < this.min ? +this.min : +this.value - +this.step;\n }\n }\n\n get calculatedContainerClasses(): string {\n return this.containerClasses ? `${this.containerClasses} input-group` : 'input-group';\n }\n\n numberHandleBlur(event: DOMEvent): void {\n if (!event?.target || this.imaskOpts) {\n return this.handleBlur(event);\n }\n\n const num = Number(event.target.value);\n if (isNil(this.imaskOpts) && isNaN(num)) {\n const newValue = this.min || 0;\n this.value = newValue;\n event.target.value = String(newValue);\n\n return this.handleBlur(event);\n }\n\n if (num < this.min) {\n event.preventDefault();\n event.target.value = String(this.min);\n this.value = this.min;\n } else if (num > this.max) {\n event.preventDefault();\n event.target.value = String(this.max);\n this.value = this.max;\n } else {\n this.value = num;\n }\n\n this.handleBlur(event);\n }\n\n updateMaskValue(): void {\n setTimeout(() => {\n if (!isNaN(+this.value)) {\n if (this.max && this.value > this.max) this.value = +this.max;\n if (this.min && this.value < this.min) this.value = +this.min;\n this.maskDirective.writeValue(String(this.value));\n }\n });\n }\n\n handleInput(event: DOMEvent): void {\n if (this.imaskOpts) {\n this.updateMaskValue();\n return;\n }\n // if number\n if (/^-?(\\d+(\\.|(\\.\\d+)?))?$/.test(event.target.value)) {\n const num = Number(event.target.value);\n this.value = num > this.max ? this.max : num < this.min ? this.min : num;\n\n return;\n }\n\n event.preventDefault();\n event.target.value = String(this.myValue);\n }\n\n handleAccept(event): void {\n this.value = +event;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\nimport { IMaskModule } from 'angular-imask';\nimport { ButtonModule } from '../../button/button.module';\nimport { InputBaseModule } from '../input-base/input-base.module';\nimport { NumberComponent } from './number.component';\n\n@NgModule({\n declarations: [NumberComponent],\n imports: [CommonModule, FormsModule, NgbTooltipModule, IMaskModule, InputBaseModule, ButtonModule],\n exports: [NumberComponent],\n providers: []\n})\nexport class NumberModule {\n constructor() {\n // empty\n }\n}\n","
\n \n \n\n \n \n
\n\n
{{subtitle}}
\n\n
\n \n
\n","import {\n AfterViewChecked,\n ChangeDetectorRef,\n Component,\n ContentChild,\n Directive,\n Input,\n OnInit,\n Optional,\n Self,\n TemplateRef\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { InputBase } from '../input-base/input-base';\nimport { DOMEvent } from '../input-base/input-base.model';\n\n@Directive({\n selector: '[radioDescription]'\n})\nexport class RadioDescription {\n @Input() hide = false;\n constructor(public template: TemplateRef) {}\n}\n\n/**\n * Component that can be presented as `checkbox` or `radio-input`; based on `type` parameter\n */\n@Component({\n selector: 'app-radio,mbs-radio',\n templateUrl: './radio.component.html'\n})\nexport class RadioComponent extends InputBase implements ControlValueAccessor, OnInit, AfterViewChecked {\n @Input() subtitle: string;\n @Input() subtitleClasses: string;\n @Input() subtitleHide = false;\n @Input() subtitleOutside = true;\n\n @Input() descriptionOutside = true;\n @Input() descriptionClasses: string;\n\n @Input() centerRadio = true;\n\n /**\n * Add font-weight-bold;\n */\n @Input() public boldLabel = false;\n\n @Input() public set value(value: T) {\n this.myValue = value;\n this.myChecked = this.modelValue === this.value;\n }\n public get value(): T {\n return this.myValue;\n }\n protected labelContentClassesDefault = 'mbs-radio_label-content';\n private get modelValue(): T {\n return this.ngControl.value as T;\n }\n\n protected myChecked = false;\n /**\n * context for label template\n */\n @Input() labelContext: any;\n\n /**\n * Native checked radio button\n * @param {boolean} state\n */\n @Input() public set checked(state: boolean) {\n this.myChecked = state;\n if (this.onChange) {\n this.onChange(this.value);\n }\n this.change.emit(this.value);\n }\n public get checked(): boolean {\n return this.myChecked;\n }\n\n @Input() labelClasses = '';\n\n @ContentChild(RadioDescription, { static: true, read: RadioDescription }) radioDescription: RadioDescription;\n\n constructor(@Optional() @Self() ngControl: NgControl, protected cd: ChangeDetectorRef) {\n super(ngControl, cd);\n }\n\n ngAfterViewChecked(): void {\n if (this.ngControl) {\n this.ngControl.valueChanges.subscribe({\n next: val => this.writeValue(val)\n });\n }\n }\n\n /**\n * Default change method. Can be replaced.\n * @param {DOMEvent}event - native DOM input event\n */\n handleChange(event: DOMEvent): void {\n event.stopPropagation();\n this.checked = event.target.checked;\n this.onTouched && this.onTouched();\n }\n\n writeValue(obj: any): void {\n this.myChecked = obj === this.value;\n this.cd.markForCheck();\n }\n\n ngOnInit(): void {\n if (this.label && !this.id) {\n console.error(`Radio id must be specified if label in use`);\n }\n if (this.value === null || typeof this.value === undefined) {\n console.error('Radio value must be specified');\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { InputBaseModule } from '../input-base/input-base.module';\nimport { RadioComponent, RadioDescription } from './radio.component';\n\n@NgModule({\n declarations: [RadioComponent, RadioDescription],\n imports: [CommonModule, FormsModule, InputBaseModule],\n exports: [RadioComponent, RadioDescription],\n providers: []\n})\nexport class RadioModule {\n constructor() {\n // empty\n }\n}\n","
\n \n \n\n \n \n
\n {{ items?.length }}\n
\n \n {{ labelForCounter }}\n \n
\n
\n\n \n \n\n \n \n\n \n\n \n\n \n \n \n\n
\n\n \n\n
\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Optional,\n Output,\n QueryList,\n Self,\n SimpleChanges,\n TemplateRef,\n ViewChild\n} from '@angular/core';\n\nimport { AbstractControl, FormControl, NgControl, Validators } from '@angular/forms';\n\nimport {\n DropdownPosition,\n NgFooterTemplateDirective,\n NgHeaderTemplateDirective,\n NgLabelTemplateDirective,\n NgLoadingSpinnerTemplateDirective,\n NgLoadingTextTemplateDirective,\n NgMultiLabelTemplateDirective,\n NgNotFoundTemplateDirective,\n NgOptgroupTemplateDirective,\n NgOptionComponent,\n NgOptionTemplateDirective,\n NgSelectComponent,\n NgTagTemplateDirective,\n NgTypeToSearchTemplateDirective\n} from '@ng-select/ng-select';\n\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\n\nimport { Subject } from 'rxjs';\n\nimport { MbsValidators } from '../../utils';\n\nimport { InputBase } from '../input-base/input-base';\nimport { isEqual } from 'lodash';\n\nexport declare type AddTagFn = (term: string) => any | Promise;\nexport declare type CompareWithFn = (a: any, b: any) => boolean;\nexport declare type GroupValueFn = (key: string | any, children: any[]) => string | any;\n\nexport interface SearchState {\n term: string;\n items: any[];\n}\n\nlet id = 0;\n\n@UntilDestroy()\n@Component({\n selector: 'mbs-select',\n templateUrl: './select.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SelectComponent extends InputBase implements OnInit, AfterViewInit, OnChanges {\n @Input() id = `mbs-select-${id++}`\n @Input() bindLabel: string;\n @Input() bindValue: string;\n @Input() markFirst = true;\n @Input() placeholder: string;\n @Input() notFoundText = 'Items not found';\n @Input() typeToSearchText: string;\n @Input() addTagText: string;\n @Input() loadingText: string;\n @Input() clearAllText: string;\n @Input() appearance: string;\n @Input() dropdownPosition: DropdownPosition = 'auto';\n @Input() appendTo: string; // Should be .modal-content for placement in modal\n @Input() loading = false;\n @Input() closeOnSelect = true;\n @Input() hideSelected = false;\n @Input() selectOnTab = false;\n @Input() openOnEnter: boolean;\n @Input() maxSelectedItems: number;\n @Input() groupBy: string | (() => any);\n @Input() bufferAmount = 4;\n @Input() virtualScroll: boolean;\n @Input() selectableGroup = false;\n @Input() selectableGroupAsModel = true;\n @Input() searchFn = null;\n @Input() trackByFn = null;\n @Input() clearOnBackspace = true;\n @Input() labelForId = null;\n @Input() labelForCounter: string;\n @Input() isCounterShowing = false;\n @Input() inputAttrs: { [key: string]: string } = {};\n @Input() tabIndex: number;\n @Input() readonly = false;\n @Input() searchWhileComposing = true;\n @Input() minTermLength = 0;\n @Input() editableSearchTerm = false;\n @Input() keyDownFn = (arg: KeyboardEvent) => true;\n @Input() hideOn: Array<'scroll'> = ['scroll']; // In future possible to add 'blur', 'esc', etc\n @Input() multiple = false;\n @Input() addTag: boolean | AddTagFn = false;\n @Input() searchable = true;\n @Input() clearable = true;\n @Input() isCheckboxSelect = false;\n @Input() isOpen = null;\n @Input() isAutoWidth = false;\n\n @Input() itemTemplate: TemplateRef;\n\n @Input() public required = false;\n\n @Input() public typeahead: Subject;\n\n @Input() set compareWith(fn: CompareWithFn) {\n this.ngSelect.compareWith = fn;\n }\n\n @Input() clearSearchOnAdd: boolean;\n\n @Input() items: any[] = [];\n @Input() selectedItemsFirst = false;\n\n /**\n * Add font-weight-bold;\n */\n @Input() public boldLabel = true;\n\n @Output('blur') blurEvent = new EventEmitter();\n @Output('focus') focusEvent = new EventEmitter();\n @Output('change') changeEvent = new EventEmitter();\n @Output('open') openEvent = new EventEmitter();\n @Output('close') closeEvent = new EventEmitter();\n @Output('search') searchEvent = new EventEmitter<{ term: string; items: any[] }>();\n @Output('clear') clearEvent = new EventEmitter();\n @Output('add') addEvent = new EventEmitter();\n @Output('remove') removeEvent = new EventEmitter();\n @Output('scroll') scroll = new EventEmitter<{ start: number; end: number }>();\n @Output('scrollToEnd') scrollToEnd = new EventEmitter();\n\n @ContentChild(NgOptionTemplateDirective, { read: TemplateRef, static: true }) optionTemplate: TemplateRef;\n @ContentChild(NgOptgroupTemplateDirective, { read: TemplateRef, static: true }) optgroupTemplate: TemplateRef;\n @ContentChild(NgLabelTemplateDirective, { read: TemplateRef, static: true }) labelTemplateSelect: TemplateRef;\n @ContentChild(NgMultiLabelTemplateDirective, { read: TemplateRef, static: true }) multiLabelTemplate: TemplateRef;\n @ContentChild(NgHeaderTemplateDirective, { read: TemplateRef, static: true }) headerTemplate: TemplateRef;\n @ContentChild(NgFooterTemplateDirective, { read: TemplateRef, static: true }) footerTemplate: TemplateRef;\n @ContentChild(NgNotFoundTemplateDirective, { read: TemplateRef, static: true }) notFoundTemplate: TemplateRef;\n @ContentChild(NgTypeToSearchTemplateDirective, { read: TemplateRef, static: true }) typeToSearchTemplate: TemplateRef;\n @ContentChild(NgLoadingTextTemplateDirective, { read: TemplateRef, static: true }) loadingTextTemplate: TemplateRef;\n @ContentChild(NgTagTemplateDirective, { read: TemplateRef, static: true }) tagTemplate: TemplateRef;\n @ContentChild(NgLoadingSpinnerTemplateDirective, { read: TemplateRef, static: true }) loadingSpinnerTemplate: TemplateRef;\n\n @ContentChildren(NgOptionComponent, { descendants: true }) ngOptions: QueryList;\n\n @ViewChild(NgSelectComponent, { static: true }) ngSelect: NgSelectComponent;\n\n protected labelContentClassesDefault = 'mbs-select_label-content';\n\n public searchState: SearchState;\n\n private myValidationWhitespace = false;\n @Input() set validationWhitespace(value: boolean) {\n this.myValidationWhitespace = String(value) !== 'false';\n this.handleWhitespaceValidation(this.myValidationWhitespace);\n }\n\n public get isAllItemsSelected(): boolean {\n return this.formControlSelect.value && this.formControlSelect.value?.length === this.items.length;\n }\n\n public get formControlSelect(): AbstractControl {\n return this.ngControl.control ? this.ngControl.control : new FormControl('', this.ngControl.validator, this.ngControl.asyncValidator);\n }\n\n private scrollHandler: (this: Window, ev: Event) => unknown;\n\n constructor(@Optional() @Self() ngControl: NgControl, protected cd: ChangeDetectorRef) {\n super(ngControl, cd);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes?.items?.currentValue && this.selectedItemsFirst) {\n this.sortByAlphabet();\n this.sortBySelection();\n }\n }\n\n ngOnInit(): void {\n if (this.ngControl.valueChanges) {\n this.ngControl.valueChanges.pipe(untilDestroyed(this)).subscribe(() => this.cd.markForCheck());\n }\n if (this.ngControl.statusChanges) {\n this.ngControl.statusChanges.pipe(untilDestroyed(this)).subscribe(() => this.cd.markForCheck());\n }\n }\n\n ngAfterViewInit(): void {\n this.handleWhitespaceValidation(this.myValidationWhitespace);\n\n if (this.optionTemplate) this.ngSelect.optionTemplate = this.optionTemplate;\n if (this.optgroupTemplate) this.ngSelect.optgroupTemplate = this.optgroupTemplate;\n this.ngSelect.labelTemplate = this.labelTemplateSelect;\n if (this.multiLabelTemplate) this.ngSelect.multiLabelTemplate = this.multiLabelTemplate;\n if (this.headerTemplate) this.ngSelect.headerTemplate = this.headerTemplate;\n this.ngSelect.footerTemplate = this.footerTemplate;\n this.ngSelect.notFoundTemplate = this.notFoundTemplate;\n this.ngSelect.typeToSearchTemplate = this.typeToSearchTemplate;\n this.ngSelect.loadingTextTemplate = this.loadingTextTemplate;\n this.ngSelect.tagTemplate = this.tagTemplate;\n this.ngSelect.loadingSpinnerTemplate = this.loadingSpinnerTemplate;\n this.ngSelect.ngOptions = this.ngOptions;\n\n this.ngSelect.ngAfterViewInit();\n }\n\n ngOnDestroy() {\n if (this.scrollHandler) {\n this.getAppendToElement().removeEventListener('scroll', this.scrollHandler);\n }\n }\n\n ngSelectChangeHandler(event: T): void {\n if (event && this.bindValue) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-return\n this.value = this.multiple && Array.isArray(event) ? event.map((i) => i[this.bindValue]) : event[this.bindValue];\n } else {\n this.value = event;\n }\n\n this.changeEvent.emit(this.value);\n }\n\n handleWhitespaceValidation(state: boolean): void {\n if (this.ngControl?.control && state !== false) {\n const extendValidators = Validators.compose([this.ngControl.control.validator, MbsValidators.whitespaceValidator]);\n this.ngControl.control.setValidators(extendValidators);\n }\n }\n\n handleOpen(): void {\n queueMicrotask(() => {\n const dropdownElement = document.querySelector(`#${this.ngSelect.dropdownId}`);\n\n if (dropdownElement) {\n this.updateDropdownClasses(dropdownElement);\n }\n\n this.manageHideOn();\n });\n\n this.openEvent.emit();\n }\n\n handleClose(event) {\n if (this.selectedItemsFirst) {\n this.sortByAlphabet();\n this.sortBySelection();\n }\n if (this.isCounterShowing) {\n this.clearSearch();\n }\n this.closeEvent.emit(event);\n this.clearSearch();\n }\n\n sortBySelection() {\n const first = [];\n const last = [];\n\n this.items.forEach((item) => {\n const value = item[this.bindValue];\n\n if (this.value?.includes(value)) {\n first.push(item);\n } else {\n last.push(item);\n }\n });\n this.items = [...first, ...last];\n }\n\n sortByAlphabet() {\n this.items = this.items.sort((a, b) => a[this.bindLabel].localeCompare(b[this.bindLabel]));\n if (typeof this.groupBy === 'string') {\n this.items.sort((a, b) => a[this.groupBy as string].localeCompare(b[this.groupBy as string]));\n }\n }\n\n updateDropdownClasses(dropdownElement: Element) {\n dropdownElement.classList.remove('ng-select-sm');\n dropdownElement.classList.remove('ng-select-lg');\n const cssClass = this.size ? 'ng-select-' + this.size : '';\n if (cssClass) {\n dropdownElement.classList.add(cssClass);\n }\n }\n\n public onSearch(event: { term: string; items: any[] }) {\n this.searchState = event;\n }\n\n public clearSearch() {\n this.searchState = null;\n }\n\n public isSomeItemsSelected(group?): boolean {\n const values = this.formControlSelect.value;\n\n return group ? group.children?.some((child) => values?.includes(child.value.value)) : values?.length && !this.isAllItemsSelected;\n }\n\n private manageHideOn(): void {\n if (this.scrollHandler) {\n this.getAppendToElement().removeEventListener('scroll', this.scrollHandler);\n }\n\n if (!this.hideOn.length) {\n return;\n }\n\n this.scrollHandler = () => {\n this.hideOn.forEach((strategy) => {\n // eslint-disable-next-line sonarjs/no-small-switch\n switch (strategy) {\n case 'scroll': {\n this.manageHideOnScroll();\n\n break\n }\n default: break\n }\n })\n }\n\n this.getAppendToElement().addEventListener('scroll', this.scrollHandler);\n }\n\n private manageHideOnScroll(): void {\n if (this.ngSelect.isOpen) {\n this.ngSelect.close();\n }\n\n if (this.scrollHandler) {\n this.getAppendToElement().removeEventListener('scroll', this.scrollHandler);\n }\n }\n\n private getAppendToElement(): HTMLElement | null {\n const appendTo = this.appendTo;\n\n if (!appendTo || appendTo === 'body') {\n return document.body;\n }\n\n if (appendTo === '.modal-content') {\n return document.querySelector(appendTo)?.querySelector('.modal-body') || document.body;\n }\n\n if (typeof appendTo === 'string') {\n return document.querySelector(appendTo);\n }\n\n return null;\n }\n}\n","import { CommonModule } from '@angular/common';\r\rimport { NgModule } from '@angular/core';\r\rimport { FormsModule,ReactiveFormsModule } from '@angular/forms';\r\rimport { NgSelectModule } from '@ng-select/ng-select';\r\rimport { TextEllipsisModule } from \"../../text-ellipsis\";\r\rimport { CheckboxModule } from '../checkbox/checkbox.module';\r\rimport { InputBaseModule } from '../input-base/input-base.module';\r\rimport { SelectComponent } from './select.component';\r\r\r@NgModule({\r declarations: [SelectComponent],\r imports: [CommonModule, FormsModule, NgSelectModule, InputBaseModule, ReactiveFormsModule, CheckboxModule, TextEllipsisModule],\r exports: [SelectComponent, NgSelectModule],\r providers: []\r})\rexport class SelectModule {\r constructor() {\r // empty\r }\r}\r","\n\n\n\n
\n {{ subtitle }}\n
\n\n
\n \n
\n\n\n {{ label }}\n\n","import {\n ChangeDetectorRef,\n Component,\n ContentChild,\n Directive,\n EventEmitter,\n Input,\n OnInit,\n Optional,\n Output,\n Self,\n SimpleChanges,\n TemplateRef\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { isNil } from 'lodash';\nimport { Observable } from 'rxjs';\nimport { MbsSize, isTemplate } from '../../utils';\nimport { InputBase } from '../input-base/input-base';\nimport { DOMEvent } from '../input-base/input-base.model';\n\n@Directive({\n selector: '[switcherDescription]'\n})\nexport class SwitcherDescription {\n @Input() hide = false;\n constructor(public template: TemplateRef) {}\n}\nenum Switch {\n on = 'On',\n off = 'Off'\n}\n/**\n * Component that presents a `checkbox`\n */\n@Component({\n selector: 'app-switcher,mbs-switcher',\n templateUrl: './switcher.component.html'\n})\nexport class SwitcherComponent extends InputBase implements ControlValueAccessor, OnInit {\n @Input() public boldLabel = true;\n\n private _statusWidth: string | number = '38px';\n\n public readonly MbsSize = MbsSize;\n public readonly Switch = Switch;\n public readonly isTemplate = isTemplate;\n\n public labelSizeClass = '';\n\n /**\n * if showStatus = true, you have to set custom width, depending on the length of the text in the status\n * By default for text `On/Off` is 38px\n * @param {string | number} value\n */\n @Input() set statusWidth(value: string | number) {\n if (!isNil(value)) {\n this._statusWidth = this.getStatusWidth(value);\n }\n }\n get statusWidth(): string | number {\n return this._statusWidth;\n }\n /**\n * Display status between switcher and label\n */\n @Input() showStatus = false;\n @Input() subtitle: string;\n @Input() subtitleClasses: string;\n @Input() subtitleHide = false;\n @Input() subtitleOutside = true;\n\n @Input() descriptionOutside = true;\n @Input() descriptionClasses: string;\n\n @Input() public selected = false;\n /**\n * Visible label for input\n */\n @Input() public label: string | TemplateRef;\n /**\n * Add .text-overflow to label text\n */\n @Input() public textOverflow = false;\n /**\n * context for label template\n */\n @Input() labelContext: any;\n /**\n * `required`\n * Native input's `name` attribute.\n */\n @Input() public name: string;\n /**\n * Id for label binding\n */\n @Input() public id: string;\n /**\n * Classes for label\n */\n @Input() labelClasses = '';\n /**\n * Possible values of switcher.
\n * Must contain **exactly** two values. First one for checked and second one for non-checked state;
\n */\n @Output() change = new EventEmitter();\n\n private onTouchedCallback: () => void;\n private onChangeCallback: (_) => void;\n /**\n * Side of the label position\n */\n @Input() public labelPosition: 'left' | 'right' = 'right';\n /**\n * Side of the status position\n */\n @Input() statusPosition: 'left' | 'right' = 'left';\n /**\n * Use 100% width for label\n */\n @Input() expandLabel = false;\n /**\n * Align of the label when expandLabel enabled\n */\n @Input() expandedLabelPosition: 'left' | 'right' = 'left';\n\n @Output() beforeUpdate: EventEmitter<{ currentValue: boolean; nextValue: boolean; stop: () => void }> = new EventEmitter<{\n currentValue: boolean;\n nextValue: boolean;\n stop: () => boolean;\n }>();\n @Output() afterUpdate: EventEmitter = new EventEmitter();\n\n @Input() loading$: Observable;\n\n @ContentChild(SwitcherDescription, { static: true, read: SwitcherDescription }) switcherDescription: SwitcherDescription;\n\n constructor(@Optional() @Self() ngControl: NgControl, protected cd: ChangeDetectorRef) {\n super(ngControl, cd);\n }\n\n ngOnInit(): void {\n this.updateLabelSizeClass();\n }\n\n writeValue(value: boolean): void {\n this.selected = value;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.labelSize || this.label) {\n this.updateLabelSizeClass();\n }\n }\n\n /**\n * Default change method. Can be replaced.\n * @param {DOMEvent}event - native DOM input event\n * @return {boolean | void}\n */\n handleChange(event: DOMEvent): boolean | void {\n event.stopPropagation();\n if (!this.readonly) {\n let performUpdate = true;\n this.beforeUpdate.emit({\n currentValue: this.selected,\n nextValue: event.target.checked,\n stop: () => {\n performUpdate = false;\n event.preventDefault();\n event.stopImmediatePropagation();\n event.target.checked = this.selected;\n }\n });\n if (!performUpdate) return false;\n this.selected = !this.selected;\n this.change.emit(event);\n if (this.onChangeCallback) {\n this.onChangeCallback(this.selected);\n }\n this.afterUpdate.emit(this.selected);\n }\n }\n\n handleClick(event: DOMEvent): void {\n this.readonly && event.preventDefault();\n event.stopPropagation();\n }\n\n registerOnChange(fn: (value) => void): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedCallback = fn;\n }\n\n private getStatusWidth = (width: string | number): string => {\n const ONLY_NUMBER_REGEX = /^\\d+$/g;\n\n if (typeof width === 'number' || (typeof width === 'string' && new RegExp(ONLY_NUMBER_REGEX).test(width))) {\n return `${width}px`;\n }\n if (width === 'string') {\n return width as string;\n }\n return '';\n };\n\n updateLabelSizeClass() {\n this.labelSizeClass = this.labelSize ? 'text-' + this.labelSize.toString() : '';\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { StatusModule } from '../../status/status.module';\nimport { SwitcherComponent, SwitcherDescription } from './switcher.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, StatusModule],\n declarations: [SwitcherComponent, SwitcherDescription],\n exports: [SwitcherComponent, SwitcherDescription]\n})\nexport class SwitcherModule {\n constructor() {\n // empty\n }\n}\n","
\n\n \n\n \n\n \n\n \n\n
\n\n \n \n {{ item.name }}\n \n \n\n \n
\n Show All\n
\n
\n\n \n Hide All\n \n\n \n\n \n
\n\n \n\n
250 ? container.offsetWidth : 250\"\n aria-labelledby=\"tags-menu-button\"\n ngbDropdownMenu>\n\n \n \n {{ actionButton }} {{ inputControl.value }}\n \n \n\n \n\n
\n\n
\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Host,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self,\n SkipSelf,\n ViewChild\n} from '@angular/core';\nimport { AbstractControl, ControlContainer, FormControl, NgControl } from '@angular/forms';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { KeyCode, MbsSize } from '../../utils';\nimport { InputBase } from '../input-base/input-base';\nimport { TagInputItem } from './tags-input.types';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { isEqual } from 'lodash';\nimport { BehaviorSubject } from 'rxjs';\nimport { NgbDropdown } from '@ng-bootstrap/ng-bootstrap';\n\nenum Mode {\n Collapsed = 'collapsed',\n Opened = 'opened'\n}\n\n@UntilDestroy()\n@Component({\n selector: 'mbs-tags-input',\n templateUrl: './tags-input.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TagsInputComponent extends InputBase implements OnInit, OnDestroy, AfterContentInit {\n @ViewChild('container', { static: true }) container: ElementRef;\n\n public control: AbstractControl;\n public readonly idPrefix = 'mbs-input-tag-';\n public isFocused = false;\n public filteredSuggestions = [];\n public inputControl = new FormControl('');\n public dropdownClass = 'mbs-tags-input_dropdown';\n\n private passedSuggestions = [];\n private observer: MutationObserver;\n\n public mode: Mode = Mode.Collapsed;\n public showExtendButton$: BehaviorSubject = new BehaviorSubject(null);\n public scrollHeight = null;\n public readonly modeEnum = Mode;\n\n /** Skips adding tags from input. Tags can be added from suggestions only */\n @Input() fromSuggestionsOnly?: boolean;\n\n @Input() formControlName?: string;\n\n @Input() actionButton?: string;\n\n @Input() loading?: boolean;\n\n /**\n * Add font-weight-bold;\n */\n @Input() public boldLabel = true;\n\n @Input() set suggestions(suggestions: string[]) {\n this.passedSuggestions = suggestions;\n this.prepareSuggestions(this.inputControl.value);\n }\n\n @Input() resetInnerValue?: BehaviorSubject;\n\n /* Need add input with dropdown */\n @Input() isStatic = false;\n\n @Input() isCollapseMode = false;\n @Input() collapseHeight: number;\n\n /* Need for empty tags wrapper */\n @Input() minHeight: number;\n @Input() inputSize: MbsSize;\n\n /**\n * Symbols for separate tags\n */\n @Input() separators: string[] = [','];\n\n @Output() innerValue = new EventEmitter();\n\n @Output() addItem: EventEmitter = new EventEmitter();\n\n @ViewChild(NgbDropdown, { static: true }) public dropdown: NgbDropdown;\n @ViewChild('inputField') public inputField: ElementRef;\n\n constructor(\n @Optional() @Host() @SkipSelf() private controlContainer: ControlContainer,\n @Optional() @Self() protected ngControl: NgControl,\n @Optional() protected cdRef: ChangeDetectorRef\n ) {\n super(ngControl, cdRef);\n }\n\n ngOnInit() {\n if (this.controlContainer) {\n if (this.formControlName) {\n this.control = this.controlContainer.control.get(this.formControlName);\n } else {\n console.warn('Missing formControlName directive');\n }\n } else {\n this.control = this.ngControl.control;\n }\n\n this.prepareSuggestions(this.inputControl.value);\n\n this.inputControl.valueChanges.pipe(untilDestroyed(this)).subscribe((val) => {\n this.prepareSuggestions(val);\n this.innerValue.emit(this.inputControl.valid ? val : null);\n this.dropdown?.open();\n });\n\n this.control.valueChanges.pipe(\n distinctUntilChanged((prev, current) => isEqual(prev, current)),\n untilDestroyed(this)\n ).subscribe((value) => {\n if (value[value.length - 1]?.name === this.inputControl?.value) {\n this.inputControl.patchValue('');\n }\n })\n\n this.control.statusChanges.pipe(\n untilDestroyed(this)\n ).subscribe((value) => {\n this.cdRef.detectChanges();\n })\n\n this.resetInnerValue && this.resetInnerValue\n .pipe(untilDestroyed(this))\n .subscribe((reset) => {\n reset && this.inputControl.patchValue('', { emitEvent: false });\n });\n }\n\n ngOnDestroy(): void {\n this.isCollapseMode && this.observer?.disconnect();\n }\n\n ngAfterContentInit(): void {\n this.isCollapseMode && this.createObserver();\n }\n\n createObserver() {\n const callback = () => {\n this.showExtendButton$.next(null);\n this.scrollHeight = this.container.nativeElement.scrollHeight;\n\n if (this.scrollHeight > this.collapseHeight) {\n this.showExtendButton$.next(this.mode);\n }\n };\n\n this.observer?.disconnect();\n this.observer = new MutationObserver(callback);\n this.observer.observe(this.container.nativeElement, {\n attributes: true,\n childList: true,\n subtree: false\n });\n }\n\n writeValue(val: TagInputItem[]) {\n super.writeValue(val);\n this.value = val;\n }\n\n public get bindClasses(): string[] {\n return Object.entries(this.validClasses)\n .filter(([, v]) => !!v)\n .map(([k]) => k)\n .concat([this.inputSizeClass || this.sizeClass]);\n }\n\n private get inputSizeClass(): string {\n return this.inputSize ? 'form-control-' + this.inputSize : '';\n }\n\n public handleKeyDown({ target, keyCode }): void {\n if (keyCode === KeyCode.Enter && !this.fromSuggestionsOnly) {\n const value = this.getPreparedInputValue(target.value);\n\n if (this.inputControl.valid) {\n this.writeValue([...this.value, ...this.getPreparedUpdateValue(value)]);\n this.inputControl.patchValue('');\n this.prepareSuggestions(this.inputControl.value);\n this.inputField?.nativeElement?.focus();\n }\n }\n\n if (keyCode === KeyCode.BackSpace && !this.inputControl.value && this.value?.length) {\n this.writeValue(this.value.slice(0, this.value.length - 1));\n this.inputField?.nativeElement?.focus();\n }\n }\n\n public handleChange({ target }): void {\n if (!this.separators.some((s) => target.value.endsWith(s)) || this.fromSuggestionsOnly) return;\n\n if (target.value.length > 1) {\n const value = this.getPreparedInputValue(target.value);\n\n if (this.inputControl.valid) {\n this.writeValue([...this.value, ...this.getPreparedUpdateValue(value)]);\n this.inputField?.nativeElement?.focus();\n this.inputControl.patchValue('');\n } else {\n this.inputControl.patchValue(target.value.substring(0, target.value.length - 1));\n }\n } else {\n this.inputControl.patchValue('');\n }\n }\n\n private getPreparedInputValue(value: string): TagInputItem[] {\n let strArr: string[] = [value];\n\n this.separators.forEach((sep) => {\n const newStrArr = [];\n strArr.forEach((str) => newStrArr.push(...str.split(sep).filter(Boolean)));\n strArr = newStrArr;\n });\n\n return strArr.map((el) => ({ name: el.trim(), errors: [] }));\n }\n\n public handleClose(idx: number): void {\n const value = [...this.value.slice(0, idx), ...this.value.slice(idx + 1, this.value.length)];\n\n this.writeValue(value);\n this.inputField?.nativeElement?.focus();\n this.prepareSuggestions(this.inputControl.value);\n }\n\n public handleBlur(): void {\n this.isFocused = false;\n }\n\n public handleFocus(): void {\n this.isFocused = true;\n }\n\n public onSuggestionItemClick(suggestion: string): void {\n this.writeValue([...this.value, ...[{ name: suggestion, errors: [] }]]);\n this.inputField?.nativeElement?.focus();\n this.inputControl.patchValue('');\n this.prepareSuggestions(this.inputControl.value);\n }\n\n public onActionButtonPressed() {\n this.addItem.emit(this.inputControl.value);\n this.inputControl.patchValue('');\n }\n\n private getPreparedUpdateValue(elements: TagInputItem[]): TagInputItem[] {\n return Array.from(new Set(elements)).map((el) => ({ name: this.trimWhiteSpaces(el.name), errors: el.errors }));\n }\n\n private trimWhiteSpaces(el: string) {\n return el.split(' ').filter(Boolean).join(' ');\n }\n\n private prepareSuggestions(val: string): void {\n this.filteredSuggestions = this.passedSuggestions.filter((s) => {\n return !(this.value || []).some((tag) => tag.name === s) && s.toLowerCase().includes(val.toLowerCase());\n });\n\n const needToDisplayActionButton =\n this.actionButton &&\n this.inputControl.valid &&\n this.inputControl.value &&\n !this.value?.some((item) => item.name === this.inputControl.value) &&\n !this.passedSuggestions?.includes(this.inputControl.value);\n\n this.dropdownClass =\n this.filteredSuggestions.length || needToDisplayActionButton ? 'mbs-tags-input_dropdown' : 'mbs-tags-input_dropdown-empty';\n }\n}\n","
\n \n \n \n \n\n
\n \n \n\n
\n\n \n\n
\n \n
\n\n
\n \n
\n
\n\n \n \n\n \n \n
\n\n \n
\n","import {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { NgbDropdown } from '@ng-bootstrap/ng-bootstrap';\nimport { PlacementArray } from '@ng-bootstrap/ng-bootstrap/util/positioning';\nimport IMask from 'imask';\nimport moment from 'moment';\nimport { MaskedOptions, MaskElement } from '../index';\nimport { isNil } from 'lodash';\nimport { TIME_12_FORMAT_WITHOUT_SECONDS_REGEXP } from '../../utils/constants';\nimport { InputBase } from '../input-base/input-base';\nimport { DOMEvent, InputClasses, ValidClasses } from '../input-base/input-base.model';\n/**\n * Component that provides a timepicker. Based on\n * NgbTimepicker\n * and NgbDropdown\n */\n@Component({\n selector: 'app-timepicker,mbs-timepicker',\n templateUrl: 'timepicker.component.html',\n host: {\n class: 'mbs-timepicker'\n }\n})\nexport class TimepickerComponent extends InputBase implements OnInit, OnDestroy, ControlValueAccessor {\n /**\n * @private time formats for moment.js\n */\n private momentFormat12 = 'hh:mm A';\n private momentFormat24 = 'HH:mm';\n private lastValidState = '12:00 AM';\n private testRegExp = new RegExp(TIME_12_FORMAT_WITHOUT_SECONDS_REGEXP);\n protected labelContentClassesDefault = 'mbs-timepicker_label-content';\n\n @Input() imaskOptions?: MaskedOptions;\n @Input() unmask?: boolean | 'typed';\n @Input() imaskElement: (elementRef: ElementRef, directiveRef: any) => MaskElement = (elementRef) => elementRef.nativeElement;\n @ViewChild('dropdown', { static: false }) dropdown: NgbDropdown;\n /**\n * Whether to display 12H or 24H mode. 12H if `true`.
\n * Input always displays value in 24H mode.\n */\n @Input() meridian = false;\n /**\n * If `true`, it is possible to select seconds\n */\n @Input() showSeconds = false;\n /**\n * CSS-Class to customize dropdown\n */\n @Input() dropdownClass: string;\n /**\n * The preferred placement of the dropdown.\n * See details in NgBootstrap docs\n */\n @Input() placement: PlacementArray = 'bottom-left';\n /**\n * If `true`, the spinners above and below inputs are visible. (only for dropdown)\n */\n @Input() spinners = true;\n /**\n * The number of hours to add/subtract when clicking hours spinners.\n */\n @Input() hourStep = 1;\n /**\n * The number of minutes to add/subtract when clicking minutes spinners.\n */\n @Input() minuteStep = 1;\n /**\n * The number of seconds to add/subtract when clicking seconds spinners.\n */\n @Input() secondStep = 1;\n /**\n * Show clear button\n */\n @Input() clearButton = false;\n /**\n * Show spinner\n */\n @Input() loading = false;\n /**\n * if [isErrorsShow]=\"false\" we hidden mbs-input-errors\n */\n @Input() isShowErrors = true;\n\n @Input() needChangeInvalid = false;\n /**\n * Add font-weight-bold;\n */\n @Input() public boldLabel = true;\n /**\n * @ignore\n */\n @Output() change = new EventEmitter();\n /**\n * @ignore\n */\n @Output() buttonClickPrepend = new EventEmitter();\n /**\n * @ignore\n */\n @Output() buttonClickAppend = new EventEmitter();\n\n /**\n * dynamic setting converted value in form\n * @param {string}time\n */\n public set value(time: string) {\n let newTime = 'invalid time format';\n if (this.testRegExp.test(time)) {\n newTime = this.convertTime(time, this.momentFormat12, this.momentFormat24);\n if (this.needChangeInvalid) this.lastValidState = time;\n this.myValue = time;\n } else {\n if (this.needChangeInvalid) this.myValue = this.lastValidState;\n else this.myValue = time;\n newTime = this.convertTime(this.myValue, this.momentFormat12, this.momentFormat24);\n }\n if (this.onChange) {\n this.onChange(newTime);\n }\n this.cd.markForCheck();\n this.change.emit(newTime);\n }\n\n /**\n * get converted time from input\n */\n public get value(): string {\n return this.myValue;\n }\n\n /**\n * @ignore\n */\n public get bindClasses(): string[] {\n const classesObject: InputClasses = Object.assign, ValidClasses>(\n { '-clearable': this.clearButton || this.loading },\n this.validClasses\n );\n return Object.entries(classesObject)\n .filter(([k, v]) => !!v)\n .map(([k]) => k)\n .concat([this.sizeClass]);\n }\n\n constructor(@Optional() @Self() ngControl: NgControl, protected cd: ChangeDetectorRef) {\n super(ngControl, cd);\n /**\n * The options of imask time format.\n * See details here https://imask.js.org/guide.html#masked-base\n */\n this.imaskOptions = {\n mask: this.momentFormat12,\n overwrite: true,\n autofix: true,\n lazy: false,\n blocks: {\n HH: {\n mask: IMask.MaskedRange,\n placeholderChar: '_',\n from: 0,\n to: 23,\n maxLength: 2\n } as IMask.AnyMaskedOptions,\n hh: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 12,\n placeholderChar: '_'\n } as IMask.AnyMaskedOptions,\n mm: {\n mask: IMask.MaskedRange,\n placeholderChar: '_',\n from: 0,\n to: 59,\n maxLength: 2\n } as IMask.AnyMaskedOptions,\n A: {\n mask: IMask.MaskedEnum,\n enum: ['AM', 'am', 'PM', 'pm', 'aM', 'Am', 'pM', 'Pm']\n } as IMask.AnyMaskedOptions\n }\n };\n }\n\n ngOnInit(): void {\n if (this.label && !this.id) {\n console.error('Timepicker requires Id if label in use');\n }\n }\n\n ngOnDestroy(): void {\n if (this.dropdown) {\n this.dropdown.ngOnDestroy();\n }\n }\n\n timePickerBlurHandler(event: DOMEvent): void {\n if (this.needChangeInvalid) {\n event.target.value = this.lastValidState;\n this.value = this.lastValidState;\n }\n this.handleBlur(event);\n }\n\n /**\n * first time setting converted value in initialized input\n * @param {string}time\n */\n writeValue(time: string): void {\n if (!isNil(time)) {\n const newTime = this.convertTime(time, this.momentFormat24, this.momentFormat12);\n setTimeout(() => {\n if (this.needChangeInvalid && this.testRegExp.test(newTime)) this.lastValidState = newTime;\n });\n super.writeValue(newTime);\n } else super.writeValue(this.value);\n }\n\n /**\n * Convert time from current format to another format using moment.js\n * @param {string} time - current time\n * @param {string} from - current time format\n * @param {to} to - format in which the time will be converted\n * @return {string}\n */\n convertTime(time: string, from: string, to: string): string {\n return moment(time, from, false).format(to);\n }\n\n handleChange(event: DOMEvent): void {\n // replacing extra symbol from imask and making in upperCase am/pm to AM/PM\n this.value = event.target.value.replace('_', '').toUpperCase();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NgbTimeAdapter, NgbTimeStruct } from '@ng-bootstrap/ng-bootstrap';\nimport { pad } from '../../../utils/constants';\n\n@Injectable()\nexport class NgbTimeStringAdapterFormat12 extends NgbTimeAdapter {\n private readonly meridian = 12;\n\n fromModel(value: string | null): NgbTimeStruct | null {\n if (!value) return null;\n\n if (typeof value == 'string') {\n const parseTime = /[ :]/;\n const [hours, minutes, meridian] = value.split(parseTime);\n\n return {\n hour: this.setHours(hours, meridian),\n minute: parseInt(minutes, 10),\n second: null\n };\n } else {\n return value;\n }\n }\n\n toModel(time: NgbTimeStruct | null): string | null {\n if (!time) return null;\n\n const { hour, minute } = time;\n const isNoon = hour == this.meridian;\n const isMidnight = hour == 0;\n const isPm = hour >= this.meridian;\n const isAm = hour < this.meridian;\n\n if (isPm) return `${!isNoon ? pad(hour - this.meridian) : this.meridian}:${pad(minute)} PM`;\n if (isAm) return `${!isMidnight ? pad(hour) : this.meridian}:${pad(minute)} AM`;\n\n return null;\n }\n\n private setHours(hours: string, meridian: string): number {\n if (!hours || !meridian) return null;\n\n const m = meridian.toLowerCase();\n const h = +hours;\n\n if (h == this.meridian && m == 'am') return 0;\n if (h != this.meridian && m == 'am') return parseInt(hours, 10);\n if (h == this.meridian && m == 'pm') return this.meridian;\n if (h != this.meridian && m == 'pm') return parseInt(hours, 10) + this.meridian;\n\n return 0;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgbDropdownModule, NgbTimeAdapter, NgbTimepickerModule } from '@ng-bootstrap/ng-bootstrap';\nimport { IMaskModule } from 'angular-imask';\nimport { InputBaseModule } from '../input-base/input-base.module';\nimport { NgbTimeStringAdapterFormat12 } from './ngb-time-adapters/ngb-time-string-adapter-format-12';\nimport { TimepickerComponent } from './timepicker.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, NgbTimepickerModule, InputBaseModule, IMaskModule, NgbDropdownModule],\n declarations: [TimepickerComponent],\n exports: [TimepickerComponent],\n providers: [{ provide: NgbTimeAdapter, useClass: NgbTimeStringAdapterFormat12 }]\n})\nexport class TimepickerModule {\n constructor() {\n // empty\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { AdvancedSelectComponent } from './advanced-select.component';\n\n@NgModule({\n declarations: [AdvancedSelectComponent],\n imports: [CommonModule, FormsModule, NgSelectModule],\n exports: [AdvancedSelectComponent],\n providers: []\n})\nexport class AdvancedSelectModule {\n constructor() {\n // empty\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DebugPipe } from './debug.pipe';\nimport { SafePipe } from './safe.pipe';\nimport { SizeConverterPipe } from './size.pipe';\n\nconst pipes = [SafePipe, DebugPipe, SizeConverterPipe];\n\n@NgModule({\n imports: [CommonModule],\n declarations: pipes,\n exports: pipes\n})\nexport class SharedPipesModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ButtonModule } from '../button/button.module';\nimport { SharedPipesModule } from '../utils/Pipes/pipes.module';\nimport { AlertContainerComponent } from './alert-container/alert-container.component';\nimport { AlertComponent } from './alert/alert.component';\n\n@NgModule({\n imports: [CommonModule, ButtonModule, SharedPipesModule],\n declarations: [AlertComponent, AlertContainerComponent],\n exports: [AlertComponent, AlertContainerComponent]\n})\nexport class AlertModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ButtonModule } from '../button/button.module';\nimport { BreadcrumbsComponent } from './breadcrumbs.component';\n\n@NgModule({\n declarations: [BreadcrumbsComponent],\n exports: [BreadcrumbsComponent],\n imports: [CommonModule, ButtonModule]\n})\nexport class BreadcrumbsModule {\n constructor() {\n // empty\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\nimport { CardFooterComponent } from './card-footer.component';\nimport { CardGroupHeaderComponent } from './card-group-header.component';\nimport { CardGroupComponent } from './card-group.component';\nimport { CardHeaderComponent } from './card-header.component';\nimport { CardComponent } from './card.component';\n\nconst components = [CardComponent, CardHeaderComponent, CardGroupComponent, CardGroupHeaderComponent, CardFooterComponent];\n\n@NgModule({\n imports: [CommonModule, NgbTooltipModule],\n declarations: components,\n exports: components\n})\nexport class CardModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormGroupComponent } from './form-group.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [FormGroupComponent],\n exports: [FormGroupComponent]\n})\nexport class FormGroupModule {\n constructor() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormSectionComponent } from './form-section.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [FormSectionComponent],\n exports: [FormSectionComponent]\n})\nexport class FormSectionModule {\n constructor() {}\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Optional, Output, Self } from '@angular/core';\nimport { AbstractControl, FormControl, FormGroup, NgControl, ValidationErrors } from '@angular/forms';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { isNil } from 'lodash';\nimport { InputBase } from '../input-base/input-base';\n\n@UntilDestroy()\n@Component({\n selector: 'mbs-input-password',\n templateUrl: './input-password.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class InputPasswordComponent extends InputBase implements OnInit {\n @Input() validationWhitespace = true;\n @Input() disabledEye = false;\n /**\n * Add font-weight-bold;\n */\n @Input() public boldLabel = false;\n /**\n * Disable input with ignore FormControl warnings\n */\n @Input() public disabledSelf = false;\n /** Displaying '*' for required fields is the default behavior, but can be overridden. */\n @Input() public showRequiredMark = true;\n\n @Output() input = new EventEmitter();\n\n public form = new FormGroup({ password: new FormControl('', this.passwordValidator.bind(this)) });\n\n @Input() passwordInputType: 'password' | 'text' = 'password';\n\n constructor(@Optional() @Self() ngControl: NgControl, protected cd: ChangeDetectorRef) {\n super(ngControl, cd);\n }\n\n ngOnInit(): void {\n this.form.valueChanges.pipe(untilDestroyed(this)).subscribe({ next: (value) => this.handleInput(value.password) });\n\n if (this.ngControl.statusChanges) {\n this.ngControl.statusChanges.subscribe((status: string) => {\n this.setFormStatusAfterControlStatusChange(status);\n this.cd.markForCheck();\n });\n }\n }\n\n setFormStatusAfterControlStatusChange(status: string): void {\n if (status === 'DISABLED') return this.form.get('password').disable({ emitEvent: false });\n\n if (status === 'INVALID' && this.form.enabled && (!this.form.touched || !this.form.dirty || this.form.status !== status)) {\n this.form.get('password').markAsTouched();\n this.form.get('password').markAsDirty();\n this.form.get('password').updateValueAndValidity();\n }\n\n if (this.form.get('password').disabled) return this.form.get('password').enable({ emitEvent: false });\n\n if (status !== 'VALID' || this.form.status === status) return;\n\n if (!this.ngControl.dirty && !this.ngControl.touched) this.form.get('password').reset(this.form.get('password').value);\n else this.form.get('password').updateValueAndValidity();\n }\n\n passwordValidator(control: AbstractControl): ValidationErrors | null {\n return this.ngControl?.errors ? { ...this.ngControl.errors } : null;\n }\n\n changeTypePassword(): void {\n this.passwordInputType = this.passwordInputType === 'password' ? 'text' : 'password';\n }\n\n inputPassHandler(value: any): void {\n if (!isNil(value?.target?.value) && this.form.invalid) {\n this.form.get('password').reset(value?.target?.value);\n this.form.get('password').markAsDirty();\n this.form.get('password').markAsTouched();\n }\n }\n\n handleInput(value: string): void {\n this.value = value;\n }\n\n writeValue(obj: string): void {\n super.writeValue(obj);\n }\n}\n","\n \n \n \n \n\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule,ReactiveFormsModule } from '@angular/forms';\nimport { NgbTooltipModule,NgbTypeaheadModule } from '@ng-bootstrap/ng-bootstrap';\nimport { IMaskModule } from 'angular-imask';\nimport { ButtonModule } from '../../button';\nimport { InputBaseModule } from '../input-base/input-base.module';\nimport { InputModule } from '../input/input.module';\nimport { InputPasswordComponent } from './input-password.component';\n\n@NgModule({\n imports: [\n ReactiveFormsModule,\n FormsModule,\n CommonModule,\n NgbTooltipModule,\n IMaskModule,\n InputModule,\n InputBaseModule,\n NgbTypeaheadModule,\n ButtonModule\n ],\n declarations: [InputPasswordComponent],\n exports: [InputPasswordComponent]\n})\nexport class InputPasswordModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const APP_READONLY_MODE = new InjectionToken(\n 'The application is read-only. All creation and editing dialogs will be skipped.',\n { providedIn: 'root', factory: (): boolean => false }\n);\n","import { Component, EventEmitter, forwardRef, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormControl,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n ValidatorFn,\n Validators\n} from '@angular/forms';\n\n@Component({\n selector: 'app-list-editor,mbs-list-editor',\n templateUrl: './list-editor.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n // eslint-disable-next-line no-use-before-define\n useExisting: forwardRef(() => ListEditorComponent)\n }\n ]\n})\nexport class ListEditorComponent implements OnInit, OnChanges, ControlValueAccessor {\n /**\n * Current value in FormControl\n * @ignore\n */\n currentValue: FormControl;\n /**\n * Copy source data\n * @ignore\n */\n copyData: Set;\n\n /**\n * Source data\n */\n @Input() data: any[];\n\n /**\n * Input validation function @type ValidatorFn\n */\n @Input() validators: ValidatorFn[] = [];\n\n /**\n * Input type\n */\n @Input() inputType: 'text' | 'password' = 'text';\n\n /**\n * Identifier DOM element for mapping label and input\n */\n @Input() id = 'listAppend';\n\n /**\n * Append entity name\n */\n @Input() entityName: string;\n\n /**\n * Show label control\n */\n @Input() showLabel = true;\n\n /**\n * Save event on append items\n */\n @Output() save = new EventEmitter();\n\n /**\n * Close event\n */\n @Output() cancel: EventEmitter = new EventEmitter();\n\n onChange: (value) => void;\n onTouched: () => void;\n\n constructor() {\n // empty\n }\n\n ngOnInit(): void {\n const uniqueValidator = (control: AbstractControl): null | ValidationErrors => {\n if (this.copyData && this.copyData.has(control.value)) {\n return { unique: { message: 'This value has already been added' } };\n }\n return null;\n };\n\n this.currentValue = new FormControl('', this.validators.concat([Validators.required, uniqueValidator]));\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.data) {\n this.copyData = new Set(this.data);\n }\n }\n\n /**\n * Append new value to list\n */\n handleAddValue() {\n if (this.checkValid()) {\n return;\n }\n this.copyData.add(this.currentValue.value);\n this.handleReset();\n if (this.onChange) {\n this.onChange(this.copyData);\n }\n }\n\n /**\n * Checking valid\n * @return {boolean}\n */\n checkValid(): boolean {\n return this.currentValue.value.length === 0 || (this.currentValue.invalid && (this.currentValue.dirty || this.currentValue.touched));\n }\n\n /**\n * Emit cancel\n */\n handleCancel(): void {\n this.cancel.emit();\n }\n\n /**\n * Emit appended items\n */\n handleSave(): void {\n this.currentValue.reset('');\n this.save.emit(this.copyData);\n }\n\n /**\n * Delete item by index\n * @param {any} item\n */\n handleDeleteValue(item): void {\n this.copyData.delete(item);\n if (this.onChange) {\n this.onChange(this.copyData);\n }\n }\n\n /**\n * Reset input after clear or add\n */\n handleReset(): void {\n this.currentValue.reset('');\n }\n\n writeValue(obj: Array): void {\n this.copyData = new Set(obj ? Array.from(obj) : []);\n }\n\n registerOnChange(fn: (value) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ButtonModule } from '../button/button.module';\nimport { InputModule } from '../form/input/input.module';\nimport { ListEditorComponent } from './list-editor.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ReactiveFormsModule, InputModule, ButtonModule],\n declarations: [ListEditorComponent],\n exports: [ListEditorComponent]\n})\nexport class ListEditorModule {}\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable, Renderer2, RendererFactory2, TemplateRef } from '@angular/core';\nimport { NgbModal, NgbModalOptions, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\nimport { Observable } from 'rxjs';\nimport { ButtonType } from '../button';\nimport { isTemplate, MbsSize } from '../utils';\nimport { ModalComponent, ModalSize } from './modal.component';\nimport { isNil } from 'lodash';\n\nclass Button {\n show?: boolean;\n text?: string;\n type?: ButtonType;\n loading$?: Observable;\n disabled$?: Observable;\n}\n\nclass Header {\n title?: string;\n headerCustomClasses?: string;\n textOverflow?: boolean;\n icon?: string;\n size?: MbsSize.sm | MbsSize.lg;\n showCloseCross?: boolean;\n showExpandedCross?: boolean;\n}\n\nclass Footer {\n show?: boolean;\n okButton?: Button;\n cancelButton?: Button;\n}\n\nexport class ModalSettings {\n header?: Header | TemplateRef | string;\n container?: string;\n size?: ModalSize;\n responsive?: boolean;\n footer?: Footer;\n beforeDismiss?: () => boolean | Promise;\n data?: any;\n backdrop?: string;\n keyboard?: boolean;\n isCustom?: boolean = false;\n collapsing?: boolean = false;\n titleTextOverflow?: boolean = false;\n freezeBody?: boolean = false;\n permissions?: string[];\n missingPermissionActionName?: string;\n}\n\n@Injectable()\nexport class ModalService {\n private readonly body: HTMLElement;\n private renderer: Renderer2;\n private randomString: string;\n private overflow = 'overflow-y: auto;';\n\n constructor(protected modalService: NgbModal, protected rendererFactory: RendererFactory2, @Inject(DOCUMENT) protected document: Document) {\n this.renderer = rendererFactory.createRenderer(null, null);\n this.body = this.document.body;\n }\n\n private getRandomString(): string {\n return Math.random().toString(36).substr(2, 10);\n }\n\n /**\n * Open confirm modal\n * @param {ModalSettings} settings\n * @param {string} message\n * @return {Promise}\n */\n public confirm(settings: ModalSettings, message: string): Promise {\n this.randomString = this.getRandomString();\n const options = this.getOptions(settings);\n if (settings) {\n options.size = this.getSizeClass(settings.size, settings.responsive);\n }\n const modalRef = this.modalService.open(ModalComponent, options);\n this.setSettings(modalRef.componentInstance as ModalComponent, settings);\n\n (modalRef.componentInstance as ModalComponent).message = message;\n if (settings && settings.container && settings.container !== 'body') {\n this.restoreDocumentScroll();\n }\n if (!settings?.freezeBody && (!settings || !settings.container || settings.container === 'body')) {\n this.renderer.setAttribute(this.body, 'style', this.overflow);\n }\n this.toggleOptionCollapsing(settings && settings.collapsing);\n return modalRef.result as Promise;\n }\n\n /**\n * Open common modal.\n * @param settings modal settings\n * @param body custom template\n */\n public open(settings: ModalSettings, body: TemplateRef | string): Promise;\n public open(settings: ModalSettings, body: TemplateRef | string): Promise {\n this.randomString = this.getRandomString();\n const modalRef = this.openModal(ModalComponent, settings);\n this.setSettings(modalRef.componentInstance as ModalComponent, settings);\n (modalRef.componentInstance as ModalComponent).body = body;\n\n if (settings && settings.container && settings.container !== 'body') {\n this.restoreDocumentScroll();\n }\n if (!settings?.freezeBody && (!settings || !settings.container || settings.container === 'body')) {\n this.renderer.setAttribute(this.body, 'style', this.overflow);\n }\n this.toggleOptionCollapsing(settings && settings.collapsing);\n return modalRef.result as Promise;\n }\n\n /**\n * Open custom modal\n * @param {any}content\n * @param {ModalSettings}settings\n * @return {Promise}\n */\n public openCustom(content: any, settings?: ModalSettings): Promise {\n this.randomString = this.getRandomString();\n this.toggleOptionCollapsing(settings && settings.collapsing);\n return this.openRef(content, settings).result as Promise;\n }\n\n /**\n * Open wizard modal with settings\n * @param {any} content Wizard component or template\n * @param {NgbModalOptions} settings Modal settings.\n * @return {Promise}\n */\n public openWizard(content: any, settings?: NgbModalOptions): Promise {\n const wizardSettings: ModalSettings = {\n size: MbsSize.lg,\n backdrop: 'static',\n keyboard: false\n };\n\n return this.openCustom(content, Object.assign(wizardSettings, settings));\n }\n\n /**\n * Open modal with settings.\n * Return link an modal instance\n * @param {any} content\n * @param {ModalSettings} settings\n * @return {NgbModalRef}\n */\n public openRef(content: any, settings?: ModalSettings): NgbModalRef {\n this.randomString = this.getRandomString();\n\n if (!settings) {\n settings = new ModalSettings();\n }\n settings.isCustom = true;\n const modalRef = this.openModal(content, settings);\n\n if (settings && settings.container && settings.container !== 'body') {\n this.restoreDocumentScroll();\n }\n\n if (!settings?.freezeBody && (!settings || !settings.container || settings.container === 'body')) {\n this.renderer.setAttribute(this.body, 'style', this.overflow);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n this.setSettings((modalRef.componentInstance.baseModal || modalRef.componentInstance) as ModalComponent, settings);\n this.toggleOptionCollapsing(settings && settings.collapsing);\n\n return modalRef;\n }\n\n /**\n * Dismisses all currently displayed modal windows with the supplied reason.\n */\n public dismissAll(): void {\n this.modalService.dismissAll();\n }\n\n /**\n * Indicates if there are currently any open modal windows in the application.\n * @return {boolean}\n */\n public hasOpenModals(): boolean {\n return this.modalService.hasOpenModals();\n }\n\n protected openModal(content: any, options?: ModalSettings): NgbModalRef {\n return this.modalService.open(content, this.getOptions(options));\n }\n\n protected getOptions(settings: ModalSettings): NgbModalOptions {\n const options: NgbModalOptions = { keyboard: true, backdrop: 'static', centered: true, beforeDismiss: () => true };\n const randomModalClass = settings && settings.collapsing ? 'modal-' + this.randomString : '';\n if (settings && settings.size) {\n options.size = this.getSizeClass(settings.size, settings.responsive);\n }\n if (settings && settings.container) {\n options.container = settings.container;\n options.backdropClass = 'modal-backdrop-inside';\n options.windowClass = `modal-inside mbs-modal ${randomModalClass}`;\n options.beforeDismiss = settings.beforeDismiss ? settings.beforeDismiss : () => true;\n } else {\n options.windowClass = randomModalClass;\n }\n return options;\n }\n\n private setSettings(component: ModalComponent, settings: ModalSettings): void {\n if (!settings) {\n settings = new ModalSettings();\n }\n component.header = settings.header;\n // conditions for support Header types\n if (settings.header && typeof settings.header === 'object' && !isTemplate(settings.header)) {\n const header = settings.header as Header;\n component.title = header.title;\n component.titleIconClass = header.icon;\n component.headerSize = header.size;\n component.showExpandedCross = isNil(header.showExpandedCross) ? component.showExpandedCross : header.showExpandedCross;\n component.showCloseCross = isNil(header.showCloseCross) ? component.showCloseCross : header.showCloseCross;\n component.titleTextOverflow = header.textOverflow;\n }\n if (settings.footer) {\n component.showFooter = settings.footer.show !== undefined ? !!settings.footer.show : true;\n }\n\n component.size = settings.size;\n component.responsive = settings.responsive;\n\n if (settings.footer && settings.footer.okButton) {\n component.okButtonText = settings.footer.okButton.text || 'OK';\n component.okButtonDisabled$ = settings.footer.okButton.disabled$;\n component.okButtonLoading$ = settings.footer.okButton.loading$;\n component.okButtonType = settings.footer.okButton.type || 'primary';\n const okShow = settings.footer.okButton.show;\n component.showOkButton = isNil(okShow) ? true : okShow;\n } else {\n component.okButtonText = 'OK';\n component.showOkButton = true;\n }\n\n if (settings.footer && settings.footer.cancelButton) {\n component.cancelButtonText = settings.footer.cancelButton.text || 'Cancel';\n const cancelShow = settings.footer.cancelButton.show;\n component.showCancelButton = isNil(cancelShow) ? true : cancelShow;\n } else {\n component.cancelButtonText = 'Cancel';\n component.showCancelButton = true;\n }\n if (settings.data) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n component.data = settings.data;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-member-access\n component.context = settings.data.context;\n }\n component.isCustomModal = settings.isCustom;\n component.collapsing = settings.collapsing;\n }\n\n private getSizeClass(size: string, responsive?: boolean): string {\n let tmp = '';\n if (responsive) {\n tmp += 'res-';\n }\n return tmp + size;\n }\n\n private restoreDocumentScroll(): void {\n this.renderer.removeClass(this.body, 'modal-open');\n this.renderer.setAttribute(this.body, 'style', '');\n }\n\n private toggleOptionCollapsing(condition): void {\n setTimeout(() => {\n const $modalContent = this.body.querySelector(`.modal-${this.randomString} .modal-content`);\n if (condition) {\n this.renderer.addClass($modalContent, '-collapsing');\n }\n }, 0);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ButtonModule } from '../button/button.module';\nimport { LoaderModule } from '../loader/loader.module';\nimport { ModalFooterDirective } from './modal-footer.directive';\nimport { ModalComponent } from './modal.component';\nimport { ModalService } from './modal.service';\n\n@NgModule({\n declarations: [ModalComponent, ModalFooterDirective],\n imports: [CommonModule, LoaderModule, ButtonModule],\n exports: [ModalComponent, ModalFooterDirective],\n providers: [ModalService]\n})\nexport class ModalModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { PageFooterComponent } from './page-footer.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [PageFooterComponent],\n exports: [PageFooterComponent]\n})\nexport class PageFooterModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ProgressBarComponent } from './progress-bar.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [ProgressBarComponent],\n exports: [ProgressBarComponent]\n})\nexport class ProgressBarModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\nimport { I18NextModule } from 'angular-i18next';\nimport { NgScrollbarModule } from 'ngx-scrollbar';\nimport { ButtonModule } from '../button/button.module';\nimport { LoaderModule } from '../loader/loader.module';\nimport { SidepanelComponent } from './sidepanel.component';\n\n@NgModule({\n imports: [CommonModule, ButtonModule, LoaderModule, NgScrollbarModule, I18NextModule, NgbTooltipModule],\n exports: [SidepanelComponent],\n declarations: [SidepanelComponent]\n})\nexport class SidepanelModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgbDropdownModule, NgbTypeaheadModule } from '@ng-bootstrap/ng-bootstrap';\nimport { ButtonModule } from '../button/button.module';\nimport { SmartSearchConfig } from './smart-search-config';\nimport { SmartSearchKeywordDirective } from './smart-search-keyword.directive';\nimport { SmartSearchComponent } from './smart-search.component';\n\n@NgModule({\n declarations: [SmartSearchComponent, SmartSearchKeywordDirective],\n imports: [CommonModule, NgbDropdownModule, NgbTypeaheadModule, FormsModule, ButtonModule],\n exports: [SmartSearchComponent, SmartSearchKeywordDirective],\n providers: [SmartSearchConfig]\n})\nexport class SmartSearchModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ButtonModule } from '../button/button.module';\nimport { InputModule } from '../form/input/input.module';\nimport { StepComponent } from './step/step.component';\nimport { StepsComponent } from './steps.component';\n\n@NgModule({\n declarations: [StepsComponent, StepComponent],\n exports: [StepsComponent, StepComponent],\n imports: [CommonModule, ButtonModule, InputModule, FormsModule]\n})\nexport class StepsModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { LoaderModule } from '../loader/loader.module';\nimport { TabsetContentDirective } from './directives/tabset-content.directive';\nimport { TabsetGroupTriggerDirective } from './directives/tabset-group-trigger.directive';\nimport { TabsetGroupDirective } from './directives/tabset-group.directive';\nimport { TabsetItemDirective } from './directives/tabset-item.directive';\nimport { TabsetLinkDirective } from './directives/tabset-link.directive';\nimport { TabsetDirective } from './directives/tabset.directive';\nimport { TabsetDestroyerDirective, TabsetItemValidDirective, TabsetValidatedDirective } from './tabs.service';\nimport { TabsetContentOutlet } from './tabset-content-outlet.component';\n\nconst declarations = [\n TabsetGroupTriggerDirective,\n TabsetItemDirective,\n TabsetLinkDirective,\n TabsetContentDirective,\n TabsetContentOutlet,\n TabsetGroupDirective,\n TabsetValidatedDirective,\n TabsetItemValidDirective,\n TabsetDestroyerDirective,\n TabsetDirective\n];\n\n@NgModule({\n imports: [CommonModule, LoaderModule],\n exports: declarations,\n declarations: declarations\n})\nexport class TabsetModule {\n constructor() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NgbToastModule } from '@ng-bootstrap/ng-bootstrap';\nimport { ButtonModule } from '../button/button.module';\nimport { SharedPipesModule } from '../utils/Pipes/pipes.module';\nimport { ToastComponent } from './toast.component';\n\n@NgModule({\n imports: [CommonModule, NgbToastModule, SharedPipesModule, ButtonModule],\n declarations: [ToastComponent],\n exports: [ToastComponent]\n})\nexport class ToastModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NgbModalModule, NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\nimport { ButtonModule } from '../button/button.module';\nimport { LoaderModule } from '../loader/loader.module';\nimport { ModalModule } from '../modal/modal.module';\nimport { WizardStepComponent } from './wizard-step.component';\nimport { WizardTitle } from './wizard-title.directive';\nimport { WizardComponent, WizardFooterPrependDirective } from './wizard.component';\n@NgModule({\n imports: [CommonModule, LoaderModule, ModalModule, NgbModalModule, ButtonModule, NgbTooltipModule],\n declarations: [WizardComponent, WizardStepComponent, WizardTitle, WizardFooterPrependDirective],\n exports: [WizardComponent, WizardStepComponent, WizardTitle, WizardFooterPrependDirective]\n})\nexport class WizardModule {}\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { NgScrollbarModule } from 'ngx-scrollbar';\nimport { AccordionModule } from './accordion/accordion.module';\nimport { AdvancedSearchModule } from './advanced-search/advanced-search.module';\nimport { AdvancedSelectModule } from './advanced-select/advanced-select.module';\nimport { AlertModule } from './alert/alert.module';\nimport { ButtonModule } from './button/button.module';\nimport { CardModule } from './card/card.module';\nimport { SharedDirectivesModule } from './directives/directives.module';\nimport { TagsInputModule } from './form';\nimport { FormGroupModule } from './form-group/form-group.module';\nimport { FormSectionModule } from './form-section/form-section.module';\nimport { CheckboxModule } from './form/checkbox/checkbox.module';\nimport { DatepickerRangeModule } from './form/datepicker-range/datepicker-range.module';\nimport { DatepickerModule } from './form/datepicker/datepicker.module';\nimport { DropFileModule } from './form/drop-file/drop-file.module';\nimport { InputBaseModule } from './form/input-base/input-base.module';\nimport { InputPasswordModule } from './form/input-password/input-password.module';\nimport { InputRangeModule } from './form/input-range/input-range.module';\nimport { InputModule } from './form/input/input.module';\nimport { IPAddressModule } from './form/ip-address/ip-address.module';\nimport { NumberModule } from './form/number/number.module';\nimport { RadioModule } from './form/radio/radio.module';\nimport { SelectModule } from './form/select/select.module';\nimport { SwitcherModule } from './form/switcher/switcher.module';\nimport { TimepickerModule } from './form/timepicker/timepicker.module';\nimport { ListEditorModule } from './list-editor/list-editor.module';\nimport { ListSelectModule } from './list-select/list-select.module';\nimport { LoaderModule } from './loader/loader.module';\nimport { ModalModule } from './modal/modal.module';\nimport { PageFooterModule } from './page-footer/page-footer.module';\nimport { ProgressBarModule } from './progress-bar/progress-bar.module';\nimport { SHARED_PERSISTENT_STATE_PROVIDERS } from './services/storage/shared-persistent-state.provider';\nimport { SidepanelModule } from './sidepanel/sidepanel.module';\nimport { SmartSearchModule } from './smart-search/smart-search.module';\nimport { StatusModule } from './status/status.module';\nimport { StepsModule } from './steps/steps.module';\nimport { TableGridModule } from './table-grid/table-grid.module';\nimport { TabsetModule } from './tabset/tabset.module';\nimport { TagModule } from './tag/tag.module';\nimport { TextEllipsisModule } from './text-ellipsis/text-ellipsis.module';\nimport { TileModule } from './tile/tile.module';\nimport { ToastModule } from './toast/toast.module';\nimport { TreeModule } from './tree/tree.module';\nimport { SharedPipesModule } from './utils/Pipes/pipes.module';\nimport { WizardModule } from './wizard/wizard.module';\n\nconst internalModules = [\n SharedPipesModule,\n SharedDirectivesModule,\n LoaderModule,\n ListSelectModule,\n ListEditorModule,\n CheckboxModule,\n RadioModule,\n NumberModule,\n SwitcherModule,\n TimepickerModule,\n DatepickerModule,\n DatepickerRangeModule,\n WizardModule,\n ModalModule,\n SelectModule,\n AdvancedSelectModule,\n AdvancedSearchModule,\n TableGridModule,\n SidepanelModule,\n InputPasswordModule,\n InputModule,\n InputRangeModule,\n DropFileModule,\n ButtonModule,\n AccordionModule,\n InputBaseModule,\n TagModule,\n CheckboxModule,\n StatusModule,\n StepsModule,\n TabsetModule,\n PageFooterModule,\n CardModule,\n ProgressBarModule,\n SmartSearchModule,\n TileModule,\n TextEllipsisModule,\n TreeModule,\n ToastModule,\n AlertModule,\n NgScrollbarModule,\n FormGroupModule,\n FormSectionModule,\n IPAddressModule,\n TagsInputModule\n];\n\n@NgModule({\n declarations: [],\n imports: [internalModules],\n exports: [internalModules],\n providers: [SHARED_PERSISTENT_STATE_PROVIDERS],\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class MbsUiKitModule {}\n","export enum ConfirmReason {\n NOOP = 0,\n SAVE = 1 << 0,\n BACK = 1 << 1,\n DISCARD = 1 << 2,\n CAN_CLOSE = SAVE | DISCARD,\n CANNOT_CLOSE = BACK\n}\n","import { QueueAction } from './QueueAction';\nimport { QueueScheduler } from './QueueScheduler';\nexport const queueScheduler = new QueueScheduler(QueueAction);\nexport const queue = queueScheduler;\n","import { AsyncScheduler } from './AsyncScheduler';\nexport class QueueScheduler extends AsyncScheduler {\n}\n","import { AsyncAction } from './AsyncAction';\nexport class QueueAction extends AsyncAction {\n constructor(scheduler, work) {\n super(scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n }\n schedule(state, delay = 0) {\n if (delay > 0) {\n return super.schedule(state, delay);\n }\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n }\n execute(state, delay) {\n return delay > 0 || this.closed ? super.execute(state, delay) : this._execute(state, delay);\n }\n requestAsyncId(scheduler, id, delay = 0) {\n if ((delay != null && delay > 0) || (delay == null && this.delay > 0)) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n scheduler.flush(this);\n return 0;\n }\n}\n","import { reduce } from './reduce';\nimport { operate } from '../util/lift';\nconst arrReducer = (arr, value) => (arr.push(value), arr);\nexport function toArray() {\n return operate((source, subscriber) => {\n reduce(arrReducer, [])(source).subscribe(subscriber);\n });\n}\n","import { zip } from '../observable/zip';\nimport { joinAllInternals } from './joinAllInternals';\nexport function zipAll(project) {\n return joinAllInternals(zip, project);\n}\n","import { identity } from '../util/identity';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { pipe } from '../util/pipe';\nimport { mergeMap } from './mergeMap';\nimport { toArray } from './toArray';\nexport function joinAllInternals(joinFn, project) {\n return pipe(toArray(), mergeMap((sources) => joinFn(sources)), project ? mapOneOrManyArgs(project) : identity);\n}\n","import { scanInternals } from './scanInternals';\nimport { operate } from '../util/lift';\nexport function reduce(accumulator, seed) {\n return operate(scanInternals(accumulator, seed, arguments.length >= 2, false, true));\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { asapScheduler, Observable, of, queueScheduler, scheduled } from 'rxjs';\nimport { catchError, map, take, zipAll } from 'rxjs/operators';\nimport { APP_READONLY_MODE } from '../../injection-tokens';\nimport { ModalService, ModalSettings } from '../../modal/modal.service';\nimport { modalText } from '../../sidepanel';\nimport { TabsService } from '../../tabset/tabs.service';\nimport { EnumHelper } from '../../utils/enum-helper';\nimport { ConfirmReason } from './ConfirmReason';\nimport { DataChangeWatcherBase } from './data-change-watcher-base.directive';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DataChangeWatcherService {\n private components: Array = [];\n\n constructor(\n private modalService: ModalService,\n public tabsService: TabsService,\n @Inject(APP_READONLY_MODE) private readonlyMode: boolean\n ) {}\n\n /**\n * Attach observable component to pool for prevent route change with unsaved changes\n * @param {DataChangeWatcherBase} component DataChangeWatcherBase component instance\n */\n public attachComponent(component: DataChangeWatcherBase): void {\n this.components.push(component);\n }\n\n /**\n * Remove observable component from pool\n * @param {DataChangeWatcherBase} component DataChangeWatcherBase component instance\n */\n public deattachComponent(component: DataChangeWatcherBase): void {\n const index = this.components.indexOf(component);\n\n if (index > -1) {\n this.components.splice(index, 1);\n }\n }\n\n /**\n * Find component in observable pool\n * @param {DataChangeWatcherBase} component DataChangeWatcherBase component instance\n * @return {DataChangeWatcherBase}\n */\n public find(component: DataChangeWatcherBase): DataChangeWatcherBase {\n return this.components.find((c) => c === component);\n }\n\n /**\n * Return boolean state can change page\n * @return {Observable | Promise}\n */\n public detectChanges(): Observable {\n if (this.components.length > 0 && !this.readonlyMode) {\n const detectChanges$ = this.components.filter(Boolean).map((c) => c.detectChanges$.pipe(take(1)));\n\n return scheduled(detectChanges$, queueScheduler).pipe(\n zipAll(),\n map((reasons) => !reasons.some((reason) => EnumHelper.HasFlag(reason, ConfirmReason.CANNOT_CLOSE)))\n );\n } else {\n return of(true);\n }\n }\n\n public showSaveModal(component: DataChangeWatcherBase): Observable {\n if (this.readonlyMode) {\n return of(ConfirmReason.CAN_CLOSE);\n }\n const allValid = component.isValidSidepanel();\n // @TODO refractor. `component` can be a simple page\n const modalText = component && (component as any).genericPanel ? ((component as any).genericPanel.modalText as modalText) : null;\n\n const modalSettings: ModalSettings = this.getModalSettings(allValid, modalText);\n const modalTitle = allValid\n ? (modalText && modalText.text) || 'All changes will be lost'\n : (modalText && modalText.textInvalid) || 'Not all fields are filled in correctly';\n\n return scheduled(this.modalService.confirm(modalSettings, modalTitle), asapScheduler).pipe(\n map(() => {\n if (!allValid) {\n this.tabsService.openFirstError();\n return ConfirmReason.BACK;\n }\n return ConfirmReason.SAVE;\n }),\n catchError(() => of(ConfirmReason.DISCARD))\n );\n }\n\n private getModalSettings(valid: boolean, modalText: modalText): ModalSettings {\n return {\n header: { title: (modalText && modalText.title) || 'Unsaved Changes' },\n footer: {\n okButton: { text: valid ? (modalText && modalText.save) || 'Save' : (modalText && modalText.back) || 'Back' },\n cancelButton: { text: (modalText && modalText.cancel) || 'Discard Changes' }\n }\n };\n }\n}\n","import { Directive, forwardRef, Inject } from '@angular/core';\nimport { cloneDeep, isEqual } from 'lodash';\nimport { defer, iif, Observable, of } from 'rxjs';\nimport { ConfirmReason } from './ConfirmReason';\nimport { DataChangeWatcherService } from './data-change-watcher.service';\n\nexport type ObservableObject = {\n obj: any;\n getRawData: (obj: any) => any;\n previousData: any;\n};\n\n@Directive()\nexport abstract class DataChangeWatcherBase {\n abstract isValidSidepanel(): boolean;\n\n public canDiscardWithChanges = false;\n public detectChanges$: Observable;\n\n protected changeDetector: DataChangeWatcherService;\n protected observableObjects: Array = [];\n\n protected constructor(@Inject(forwardRef(() => DataChangeWatcherService)) changeDetector: DataChangeWatcherService) {\n this.changeDetector = changeDetector;\n this.changeDetector.attachComponent(this);\n this.detectChanges$ = iif(\n () => this.isChanged && !this.canDiscardWithChanges,\n defer(() => this.changeDetector.showSaveModal(this)),\n of(ConfirmReason.DISCARD)\n );\n }\n\n protected attachObject(obj: T, getRawData: (obj: T) => any): void {\n this.observableObjects = this.observableObjects.filter((ob) => ob.obj != obj);\n this.observableObjects.push({ obj, getRawData: getRawData, previousData: cloneDeep(getRawData(obj)) });\n }\n\n protected hold(obj?: any): void {\n if (obj) {\n const find = this.observableObjects.find((ob) => ob.obj == obj);\n find.previousData = find.getRawData(find.obj);\n } else {\n this.observableObjects.forEach((ob) => (ob.previousData = cloneDeep(ob.getRawData(ob.obj)) as unknown));\n }\n }\n\n get isChanged(): boolean {\n return this.observableObjects?.some((ob) => !isEqual(ob.getRawData(ob.obj), ob.previousData));\n }\n\n destroy(): void {\n this.changeDetector.deattachComponent(this);\n }\n}\n","import { defer } from './defer';\nexport function iif(condition, trueResult, falseResult) {\n return defer(() => (condition() ? trueResult : falseResult));\n}\n","import { AfterViewInit, Directive, EventEmitter, OnDestroy, Output, ViewChild } from '@angular/core';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { cloneDeep, isNil } from 'lodash';\nimport { Observable, Subject, merge, of } from 'rxjs';\nimport { filter, finalize, map, switchMap, tap } from 'rxjs/operators';\nimport { ConfirmReason } from '../services/data-change-watcher/ConfirmReason';\nimport { DataChangeWatcherBase } from '../services/data-change-watcher/data-change-watcher-base.directive';\nimport { DataChangeWatcherService } from '../services/data-change-watcher/data-change-watcher.service';\nimport { TabsetDirective } from '../tabset/directives/tabset.directive';\nimport { EnumHelper, GuidEmpty } from '../utils';\nimport { Sidepanel } from './Sidepanel';\nimport { SidepanelComponent } from './sidepanel.component';\n\n@UntilDestroy()\n@Directive()\nexport abstract class SidepanelCrudBase extends DataChangeWatcherBase implements Sidepanel, AfterViewInit, OnDestroy {\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() close = new EventEmitter();\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() open = new EventEmitter();\n @Output() add = new EventEmitter();\n @Output() save = new EventEmitter();\n @Output() delete = new EventEmitter();\n @ViewChild(SidepanelComponent, { static: true }) genericPanel: SidepanelComponent;\n @ViewChild(TabsetDirective, { read: TabsetDirective, static: false }) tabset: TabsetDirective;\n\n private loadingDataAcc: { [key: string]: boolean } = {};\n private loadingDataInternal = false;\n private readonly defaultLoadingDataKey = 'data';\n\n protected manualTabInitialisation = false;\n\n protected mergeClose = merge(this.save, this.close, this.delete)\n .pipe(untilDestroyed(this))\n .subscribe(() => this.genericPanel.close());\n\n public data$: Subject = new Subject();\n public dataCopy: T;\n public create = false;\n\n public get loadingData(): boolean {\n return this.loadingDataInternal;\n }\n\n public set loadingData(value: boolean) {\n this.setLoadingByKey(this.defaultLoadingDataKey, value);\n }\n\n abstract updateData(data: T): void;\n abstract handleSave(): Observable;\n abstract handleDelete(): Observable;\n\n protected constructor(protected cdNew: DataChangeWatcherService) {\n super(cdNew);\n\n this.detectChanges$ = this.detectChanges$.pipe(\n switchMap((modalResult: ConfirmReason) => {\n if (modalResult === ConfirmReason.SAVE) {\n return this.handleSave().pipe(map(() => modalResult));\n }\n\n return of(modalResult);\n })\n );\n\n this.data$\n .pipe(\n filter(Boolean),\n switchMap((data) => {\n return this.genericPanel.show ? this.canUpdateData().pipe(map((canUpdate) => (canUpdate ? data : undefined))) : of(data);\n }),\n filter(Boolean), // after modal result check again\n untilDestroyed(this)\n )\n .subscribe((data) => {\n const id = (data['Id'] || data['id']) as string | number;\n\n this.create = isNil(data) || isNil(id) || id === GuidEmpty;\n this.genericPanel.isCreate = this.create;\n !this.manualTabInitialisation && this.tabset && this.tabset.select(this.tabset.items.first.id);\n this.updateData(cloneDeep(data));\n this.genericPanel.open();\n this.dataCopy = cloneDeep(data);\n });\n }\n\n ngOnDestroy(): void {\n // Called once, before the instance is destroyed.\n this.destroy();\n }\n\n ngAfterViewInit(): void {\n this.genericPanel.saveEvent\n .pipe(\n tap(() => {\n if (!this.isValidSidepanel() && this.tabset?.activeId) {\n this.tabset.afterUpdate.emit(this.tabset.activeId);\n }\n this.genericPanel.internalLoadingForSave.next(true);\n }),\n switchMap(() => this.handleSave().pipe(finalize(() => this.genericPanel.internalLoadingForSave.next(false)))),\n untilDestroyed(this)\n )\n .subscribe();\n this.genericPanel.deleteEvent\n .pipe(\n tap(() => this.genericPanel.internalLoadingForDelete.next(true)),\n switchMap(() => this.handleDelete().pipe(finalize(() => this.genericPanel.internalLoadingForDelete.next(false)))),\n untilDestroyed(this)\n )\n .subscribe();\n this.genericPanel.panelClosed\n .pipe(\n switchMap(() => this.handleClose()),\n untilDestroyed(this)\n )\n .subscribe();\n this.genericPanel.panelOpened.pipe(untilDestroyed(this)).subscribe(() => this.open.emit());\n\n this.changeTabsetItemsStatusLoadingAndDisabled(this.loadingData);\n }\n\n public setLoadingByKey(key: string, value: boolean): void {\n this.loadingDataAcc = { ...this.loadingDataAcc, [key]: value };\n this.loadingDataInternal = Object.values(this.loadingDataAcc).some(Boolean);\n this.changeTabsetItemsStatusLoadingAndDisabled(this.loadingData);\n }\n\n public changeTabsetItemsStatusLoadingAndDisabled(value: boolean): void {\n if (this.tabset?.items) {\n this.tabset.items.forEach((item) => {\n item.forceDisabled = value;\n item.forceLoading = value;\n });\n }\n }\n\n public handleClose(): Observable {\n return this.canUpdateData().pipe(\n tap((canClose) => {\n if (canClose) {\n this.hold();\n this.close.emit();\n }\n })\n );\n }\n\n public isValidSidepanel(): boolean {\n if (this.tabset?.items) {\n return this.cdNew.tabsService.allTabsValid;\n }\n\n return true;\n }\n\n protected canUpdateData(): Observable {\n return this.detectChanges$.pipe(map((modalResult: ConfirmReason) => EnumHelper.HasFlag(modalResult, ConfirmReason.CAN_CLOSE)));\n }\n}\n","import {\n ApplicationRef,\n ComponentFactoryResolver,\n ComponentRef,\n EventEmitter,\n Injectable,\n Injector,\n Renderer2,\n RendererFactory2,\n Type,\n ViewContainerRef\n} from '@angular/core';\nimport { get, isNil } from 'lodash';\nimport { Observable, of, queueScheduler, scheduled } from 'rxjs';\nimport { map, switchMap, tap, zipAll } from 'rxjs/operators';\nimport { ModalService } from '../modal/modal.service';\nimport { Sidepanel } from './Sidepanel';\nimport { SidepanelCrudBase } from './SidepanelCrudBase';\n\nexport type SidepanelInfoEvent = {\n name: string;\n id: string;\n};\n\ntype SidepanelInstance = {\n panel: ComponentRef;\n destroy: () => void;\n};\n\nexport interface SidepanelConfig {\n isCreate?: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class SidepanelService {\n /**\n * All created sidepanels\n *\n * Instance - destroy function\n */\n private panels: SidepanelInstance[] = [];\n private renderer: Renderer2;\n\n public onOpen = new EventEmitter(true);\n public onClose = new EventEmitter(true);\n\n constructor(\n private componentFactoryResolver: ComponentFactoryResolver,\n private appRef: ApplicationRef,\n private injector: Injector,\n rendererFactory: RendererFactory2,\n private modalService: ModalService\n ) {\n this.renderer = rendererFactory.createRenderer(null, null);\n }\n\n /**\n * Registration sidepanel into service.\n * @param {Type} type sidepanel type\n * @param {ViewContainerRef} vc default\n * @param {Injector} injector default\n *\n * @return {T}\n */\n add(type: Type, vc?: ViewContainerRef, injector?: Injector): T {\n const panel = this.panels.find((p) => p.panel.instance instanceof type);\n if (panel) {\n return panel.panel.instance as T;\n }\n\n let componentRef: ComponentRef;\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(type);\n\n if (vc) {\n componentRef = vc.createComponent(factory, vc.length, injector || vc.injector);\n const index = vc.indexOf(componentRef.hostView);\n this.panels.push({\n panel: componentRef,\n destroy: () => {\n vc.remove(index);\n }\n });\n } else {\n componentRef = factory.create(injector || this.injector);\n const appRootNode: HTMLElement = this.appRef.components[0].location.nativeElement as HTMLElement;\n // Attach incoming component to the appRef so that it's inside the ng component tree\n this.appRef.attachView(componentRef.hostView);\n // Get DOM element from incoming component\n const contentElem: HTMLElement = componentRef.location.nativeElement as HTMLElement;\n // Append DOM element to the body\n this.renderer.appendChild(appRootNode, contentElem);\n\n componentRef.changeDetectorRef.detectChanges();\n // add panel to array of active panels\n this.panels.push({\n panel: componentRef,\n destroy: () => {\n this.renderer.removeChild(appRootNode, contentElem);\n componentRef.destroy();\n\n // remove panel from array of active panels\n this.panels = this.panels.filter((p) => p.panel != componentRef);\n }\n });\n }\n\n componentRef.instance.genericPanel.panelClosed.subscribe(() =>\n this.onClose.emit({ id: componentRef.instance.genericPanel.id, name: componentRef.componentType.name })\n );\n\n return componentRef.instance;\n }\n\n addAndOpenByType(type: Type, vc?: ViewContainerRef, injector?: Injector): Observable {\n return this.closeAll().pipe(\n switchMap(() => {\n this.add(type, vc, injector);\n return this.openByType(type);\n })\n );\n }\n\n /**\n * Check exists sidepanel\n * @param {Type} type sidepanel type\n * @return {boolean}\n */\n contains(type: Type): boolean {\n return this.panels.some((p) => p.panel.instance instanceof type);\n }\n\n /**\n * Try get exists sidepanel\n * @param {Type}type sidepanel type\n * @return {T}\n */\n get(type: Type): T {\n const componentRef = this.panels.find((p) => p.panel.instance instanceof type);\n return componentRef ? (componentRef.panel.instance as T) : undefined;\n }\n\n /**\n * Try get exists sidepanel\n * @param {Type}type sidepanel type\n * @return {T}\n */\n isOpened(type: Type): boolean {\n const componentRef = this.panels.find((p) => p.panel.instance instanceof type);\n\n if (!componentRef) return false;\n\n return (componentRef.panel.instance as T).genericPanel.show;\n }\n\n /**\n * Remove sidepanel from virtual and real DOM by type\n * @param {Type} type sidepanel type\n * @return {boolean}\n */\n removeByType(type: Type): boolean {\n const componentRef = this.panels.find((x) => x.panel.instance instanceof type);\n return this.removeComponent(componentRef);\n }\n\n /**\n * Remove sidepanel from virtual and real DOM by specified id\n * @param {string} id sidepanel identification\n * @return {boolean}\n */\n remove(id: string): boolean {\n const panel = this.panels.find((x) => x.panel.instance.genericPanel.id === id);\n return this.removeComponent(panel);\n }\n\n /**\n * Remove all sidepanels from virtual and real DOM\n * @return {boolean}\n */\n removeAll(): boolean {\n let allRemoved = true;\n this.panels.forEach((panel) => {\n allRemoved = allRemoved && this.removeComponent(panel);\n });\n return allRemoved;\n }\n\n /**\n * Remove component from virtual and real DOM\n * @param {SidepanelInstance} sidepanel component reference\n * @return {SidepanelInstance}\n */\n private removeComponent(sidepanel: SidepanelInstance): boolean {\n if (sidepanel) {\n // remove panel from array of active panels\n this.panels = this.panels.filter((p) => p != sidepanel);\n\n sidepanel.destroy();\n return true;\n }\n return false;\n }\n\n /**\n * Open sidepanel by specified id\n * @param {string} id sidepanel identification\n * @return {Observable}\n */\n open(id: string): Observable {\n // open panel specified by id\n const panel = this.panels.find((x) => x.panel.instance.genericPanel.id === id);\n return this.openSidepanel(panel);\n }\n\n /**\n * Open sidepanel by type\n * @param {Type} type sidepanel type\n * @return {Observable}\n */\n openByType(type: Type): Observable {\n const panel = this.panels.find((x) => x.panel.instance instanceof type);\n return this.openSidepanel(panel);\n }\n\n /**\n * Toggle loading specified sidepanel by `Type`\n * @param {Type} type sidepanel type\n * @param {SidepanelConfig} config\n * @return {Observable}\n */\n toggleLoadingDataByType>(type: Type, config?: SidepanelConfig): Observable {\n const sidepanel = this.panels.find((x) => x.panel.instance instanceof type);\n if (sidepanel.panel.instance instanceof SidepanelCrudBase) {\n return this.toggleLoadingData(sidepanel.panel.instance, config);\n } else {\n return of(false);\n }\n }\n\n /**\n * Open sidepanel\n * @param {SidepanelInstance} sidepanel component reference\n * @return {Observable}\n */\n private openSidepanel(sidepanel: SidepanelInstance): Observable {\n if (sidepanel) {\n return this.closeAll(sidepanel.panel.instance.genericPanel.id).pipe(\n tap((result) => {\n if (result) {\n const panelInfo = { name: sidepanel.panel.componentType.name, id: sidepanel.panel.instance.genericPanel.id };\n this.onOpen.emit(panelInfo);\n sidepanel.panel.instance.genericPanel.open();\n }\n })\n );\n }\n return of(false);\n }\n\n /**\n * Toggle loading data sidepanelCrudBase\n * @param {SidepanelCrudBase} sidepanel component reference\n * @param {SidepanelConfig} config\n * @return {Observable}\n */\n private toggleLoadingData(sidepanel: SidepanelCrudBase, config?: SidepanelConfig): Observable {\n if (sidepanel) {\n if (!isNil(config)) {\n sidepanel.genericPanel.isCreate = config.isCreate;\n }\n sidepanel.loadingData = !sidepanel.loadingData;\n return of(true);\n }\n return of(false);\n }\n\n /**\n * Close sidepanel by specified id\n * @param {string} id sidepanel identification\n * @return {Observable}\n */\n close(id: string): Observable {\n const sidepanel = this.panels.find((x) => x.panel.instance.genericPanel.id === id);\n return this.closeSidepanel(sidepanel.panel);\n }\n\n /**\n * Close sidepanel by type\n * @param {Type} type sidepanel type\n * @return {Observable}\n */\n closeByType(type: Type): Observable {\n const sidepanel = this.panels.find((x) => x.panel.instance instanceof type);\n return this.closeSidepanel(sidepanel.panel);\n }\n\n /**\n * Close sidepanel\n * @param {ComponentRef} componentRef component reference\n * @return {Observable}\n */\n private closeSidepanel(componentRef: ComponentRef): Observable {\n if (componentRef) {\n return componentRef.instance.handleClose().pipe(\n tap((result) => {\n const panelInfo = { name: componentRef.componentType.name, id: componentRef.instance.genericPanel.id };\n return result && this.onClose.emit(panelInfo);\n })\n );\n }\n\n return of(this.hasOpenModals());\n }\n\n /**\n * Close all open sidepanels\n * @param {string} id exclude sidepanel id\n * @return {Observable}\n */\n closeAll(id?: string): Observable {\n const closeablePanels = this.panels\n .filter((p) => p.panel.instance.genericPanel.show && p.panel.instance.genericPanel.id !== id)\n .map((p) =>\n p.panel.instance\n .handleClose()\n .pipe(tap((result) => result && this.onClose.emit({ id: p.panel.instance.genericPanel.id, name: p.panel.componentType.name })))\n );\n return closeablePanels.length > 0\n ? scheduled(closeablePanels, queueScheduler).pipe(\n zipAll(),\n map((closeResults) => closeResults.every((r) => r))\n )\n : of(true);\n }\n\n /**\n * Detects at least one of the modals is opened\n * @return {boolean}\n */\n private hasOpenModals(): boolean {\n return this.modalService.hasOpenModals();\n }\n\n /**\n * Toggle specified sidepanel by `ID`\n * @param {string} id\n * @param {any} state\n */\n toggle(id: string, state): void {\n if (state) {\n this.open(id).subscribe();\n } else {\n this.close(id).subscribe();\n }\n }\n\n /**\n * For calc table padding and start animation. Skip expanded panels\n * @param {string} panelIds sidepanels names\n * @return {number}\n */\n getPanelsOffsetWidth(panelIds: string[]): number {\n return Math.max(\n ...this.panels\n .filter(\n (x) =>\n x.panel?.instance?.genericPanel?.show &&\n !x.panel?.instance?.genericPanel?.isExpanded &&\n panelIds.includes(x.panel?.instance?.genericPanel?.id)\n )\n .map((panel) => panel.panel?.instance?.genericPanel?.sidePanel?.nativeElement?.offsetWidth ?? 0),\n 0\n );\n }\n\n /**\n * For calc table padding and start animation\n * @param {Sidepanel} panel\n * @return {number}\n */\n getPanelOffsetWidthByType(panel: Sidepanel): number {\n return get(panel, 'genericPanel.sidePanel.nativeElement.offsetWidth', 0);\n }\n}\n","import { AfterViewInit, Directive, EventEmitter, Output, ViewChild } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { Sidepanel } from './Sidepanel';\nimport { SidepanelComponent } from './sidepanel.component';\n\n@Directive({})\nexport abstract class SidepanelBase implements Sidepanel, AfterViewInit {\n @ViewChild(SidepanelComponent, { static: true }) genericPanel: SidepanelComponent;\n\n @Output() close = new EventEmitter();\n @Output() open = new EventEmitter();\n\n ngAfterViewInit(): void {\n this.genericPanel.panelClosed.subscribe((event) => this.close.emit(event));\n this.genericPanel.panelOpened.subscribe(() => this.open.emit());\n this.close.subscribe(() => this.genericPanel.close());\n }\n handleClose(): Observable {\n this.close.emit();\n return of(true);\n }\n}\n","
\n
\n
\n
\n
\n
\n \n {{ status === 'success' || singleStep ? '' : number }}\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n \n
\n
\n","import { ChangeDetectorRef, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'mbs-step',\n templateUrl: './step.component.html'\n})\nexport class StepComponent {\n @Input() number = 1;\n @Input() status: 'active' | 'success' = null;\n @Input() readOnly = false;\n @Input() bodyClasses = '';\n lastStep = false;\n singleStep = false;\n\n constructor(private cd: ChangeDetectorRef) {}\n\n activate(): void {\n this.status = 'active';\n }\n\n complete(): void {\n this.status = 'success';\n }\n\n pending(): void {\n this.status = null;\n }\n}\n","import {\n AfterContentInit,\n Component,\n ContentChildren,\n Input,\n QueryList\n} from '@angular/core';\nimport { StepComponent } from './step/step.component';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\n\n@UntilDestroy()\n@Component({\n selector: 'mbs-steps',\n templateUrl: './steps.component.html'\n})\nexport class StepsComponent implements AfterContentInit {\n @ContentChildren(StepComponent) steps: QueryList;\n myActiveStep: number | string;\n @Input() set activeStep(value: number | string) {\n this.myActiveStep = value;\n this.handleActiveStep(value);\n }\n\n ngAfterContentInit(): void {\n if (this.steps.length === 0) {\n return;\n }\n this.handleActiveStep(this.myActiveStep || this.steps.first.number);\n this.steps.changes.pipe(untilDestroyed(this)).subscribe(() => {\n this.steps.forEach((step, index) => {\n step.lastStep = index === this.steps.length - 1;\n })\n })\n }\n\n handleActiveStep(value: number | string): void {\n setTimeout(() => {\n if (!this.steps) {\n return;\n }\n this.steps.first.singleStep = this.steps.length == 1;\n this.steps.last.lastStep = true;\n let activeStepIndex = this.steps.length;\n this.steps.forEach((s, index) => {\n if (index < activeStepIndex) {\n s.complete();\n }\n if (s.number == value) {\n activeStepIndex = index;\n s.activate();\n }\n if (index > activeStepIndex) {\n s.pending();\n }\n });\n });\n }\n}\n","
\n \n
\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n ViewRef\n} from '@angular/core';\nimport { FormControlDirective, FormControlName, FormGroupDirective, FormGroupName, NgForm, NgModel } from '@angular/forms';\nimport { isNil } from 'lodash';\nimport { Subject } from 'rxjs';\nimport { WizardStep } from './WizardStep';\n\n@Component({\n selector: 'mbs-wizard-step',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'activated ? \"-active\" : \"\"'\n }\n})\nexport class WizardStepComponent implements OnDestroy {\n @Input() title = 'Some Step';\n @Input() changes: boolean;\n @Input() blockEnterIfControlFocus = true;\n @Input() helpLink: string;\n @Input()\n public set valid(v: boolean) {\n this.myValid = v;\n this.change.next();\n }\n public get valid(): boolean {\n return this.myValid;\n }\n public get visible(): boolean {\n return this.myVisible;\n }\n public set visible(v: boolean) {\n this.myVisible = v;\n if (!(this.cd as ViewRef).destroyed) {\n this.cd.markForCheck();\n }\n }\n public get hasChanges(): boolean {\n if (!isNil(this.changes)) {\n return this.changes;\n }\n return (\n (this.ngModel && this.ngModel.dirty) ||\n (this.ngFormControlName && this.ngFormControlName.dirty) ||\n (this.ngFormControlDirective && this.ngFormControlDirective.dirty) ||\n (this.ngFormGroupDirective && this.ngFormGroupDirective.dirty) ||\n (this.ngFormGroupName && this.ngFormGroupName.dirty) ||\n (this.ngForm && this.ngForm.dirty) ||\n false\n );\n }\n\n public completed = false;\n public activated = false;\n public disabled = false;\n public canOpen = false;\n public change = new Subject();\n public changesBeforeValidation = false;\n public isNext = true;\n public isSave = false;\n\n private myVisible = false;\n private myValid = false;\n\n @Output('next') nextEvent = new EventEmitter();\n\n @ContentChild(NgModel, { static: false }) ngModel: NgModel;\n @ContentChild(FormControlName, { static: false }) ngFormControlName: FormControlName;\n @ContentChild(FormControlDirective, { static: false }) ngFormControlDirective: FormControlDirective;\n @ContentChild(FormGroupDirective, { static: false }) ngFormGroupDirective: FormGroupDirective;\n @ContentChild(FormGroupName, { static: false }) ngFormGroupName: FormGroupName;\n @ContentChild(NgForm, { static: false }) ngForm: NgForm;\n\n constructor(private cd: ChangeDetectorRef) {}\n\n ngOnDestroy(): void {\n this.cd.detach();\n this.change.unsubscribe();\n }\n\n activate(): void {\n this.activated = true;\n this.completed = false;\n this.canOpen = true;\n this.visible = true;\n this.disabled = false;\n }\n\n notActivate(): void {\n this.completed = this.valid;\n this.activated = false;\n this.visible = false;\n }\n\n complete(): void {\n this.activated = false;\n this.completed = this.valid;\n this.canOpen = true;\n this.visible = false;\n this.disabled = false;\n }\n\n reset(): void {\n this.disabled = true;\n this.canOpen = false;\n this.visible = false;\n this.activated = false;\n this.completed = false;\n }\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[wizardTitle]'\n})\nexport class WizardTitle {\n constructor(public template: TemplateRef) {}\n}\n","import { BehaviorSubject } from 'rxjs';\n\ninterface WizardActionMark {\n description: string;\n important?: boolean;\n}\n\nexport interface WizardMarkableActions {\n back?: WizardActionMark;\n next?: WizardActionMark;\n save?: WizardActionMark;\n}\n\n/**\n * Abstraction for marking wizard buttons directly from its steps\n * It`s semi-finished class. Now it works only for \"save\" button\n * *\n * How to use:\n * // Add mark reason. Important will block button\n * instance.addMark('foo', {\n * back: { description: 'Back important reason', important: true },\n * save: { description: 'Important reason', important: true }\n * });\n * ...\n * instance.getMark('foo', 'back').description; // Will return 'Back important reason'\n * instance.needBlock('foo', 'back'); // TRUE because current step is foo\n * instance.needBlock('save'); // TRUE because for save button current step isn`t matter\n */\nexport class WizardStepMarks {\n public $markedSteps: BehaviorSubject> = new BehaviorSubject>([]);\n public get isEmpty(): boolean {\n return !Object.keys(this.marks).length;\n }\n\n private pause: { back?: boolean; next?: boolean; save?: boolean } = {};\n private marks: { [stepName: string]: WizardMarkableActions } = {};\n\n public getMark(stepName: string, action: keyof WizardMarkableActions): WizardActionMark {\n const step = this.marks[stepName] || {};\n const mark = (step[action] || {}) as WizardActionMark;\n\n return { description: mark.description || '' };\n }\n\n public needBlock(action: keyof Pick): boolean;\n public needBlock(stepName: string, action: keyof Omit): boolean;\n public needBlock(...args: string[]): boolean {\n let stepName: string;\n let action: keyof WizardMarkableActions;\n\n if (args.length === 2) {\n stepName = args[0];\n action = args[1] as keyof WizardMarkableActions;\n\n const step = this.marks[stepName] || {};\n const mark = (step[action] || {}) as Partial;\n\n return !!mark.important;\n }\n\n action = args[0] as keyof WizardMarkableActions;\n\n return !!this.pause[action];\n }\n\n public addMark(stepName: string, actions: WizardMarkableActions): void {\n this.marks[stepName] = { ...(this.marks[stepName] || {}), ...actions };\n\n this.cleanUp();\n this.updatePause();\n\n this.$markedSteps.next(Object.keys(this.marks));\n }\n\n public removeMark(stepName: string, actions: Array): void {\n const step = this.marks[stepName] || {};\n\n actions.forEach((action) => delete step[action]);\n\n this.cleanUp();\n this.updatePause();\n\n this.$markedSteps.next(Object.keys(this.marks));\n }\n\n public clear(): void {\n this.marks = {};\n this.pause = {};\n this.$markedSteps.next([]);\n }\n\n public updatePause(): void {\n const steps = Object.keys(this.marks);\n\n this.pause = steps.reduce((result, step) => {\n Object.keys(this.marks[step]).forEach((mark) => {\n if (this.marks[step][mark].important) {\n result[mark] = true;\n }\n });\n\n return result;\n }, {});\n }\n\n private cleanUp(): void {\n const steps = Object.keys(this.marks);\n\n steps.forEach((step) => {\n if (!Object.keys(this.marks[step]).length) {\n delete this.marks[step];\n }\n });\n }\n}\n","
\n
\n
\n
\n {{ title }}\n
\n \n
\n
\n \n \n
\n
\n
\n\n
\n \n
\n \n
\n
    \n
  • \n \n
  • \n
\n
\n
\n
\n \n
\n \n
    \n
  • \n
    {{step.title}}
    \n
  • \n
\n
\n \n \n \n \n
\n\n
\n
\n
\n\n \n \n \n
\n\n
\n \n
\n \n
\n \n \n \n {{ backButton.text }}\n \n \n \n {{ nextButton.text }}\n \n \n\n \n \n {{ saveButton.text }}\n \n\n \n \n {{ saveButtonGroupItem.text }}\n \n\n \n \n {{ cancelButton.text }}\n \n
\n","import { DOCUMENT } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n Directive,\n EventEmitter,\n forwardRef,\n HostListener,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { addBreadcrumb, SeverityLevel } from '@sentry/browser';\nimport { isNil } from 'lodash';\nimport { merge, Observable, of } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { DOMEvent } from '../form/input-base/input-base.model';\nimport { InputButton } from '../form/input-base/input-pre-append/input-button';\nimport { ModalService, ModalSettings } from '../modal/modal.service';\nimport { BootstrapTheme } from '../utils';\nimport { WizardStepComponent } from './wizard-step.component';\nimport { WizardTitle } from './wizard-title.directive';\nimport { WizardStepQueue } from './wizard/queue';\nimport { WizardStepMarks } from './wizard/marks';\nimport { WizardStep } from './WizardStep';\n\nconst WIZARD_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n // eslint-disable-next-line no-use-before-define\n useExisting: forwardRef(() => WizardComponent),\n multi: true\n};\n\nconst discardChangesText = 'Discard Changes';\n\n@Directive({\n selector: '[mbsWizardFooterPrepend]'\n})\nexport class WizardFooterPrependDirective {\n @Input() hide = false;\n constructor(public template: TemplateRef) {}\n}\n\n@UntilDestroy()\n@Component({\n selector: 'mbs-wizard',\n templateUrl: './wizard.component.html',\n styleUrls: ['./wizard.component.scss'],\n providers: [WIZARD_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class WizardComponent implements OnInit, OnDestroy, OnChanges, AfterContentInit, AfterViewChecked, ControlValueAccessor {\n public readonly defaultWizardHeight = '598px';\n\n @Input() ignoreSteps: string[] = [];\n @Input() height: string | number = this.defaultWizardHeight;\n @Input() loading = false;\n @Input() buttonLoadingMode = false;\n @Input() stepQueue: WizardStepQueue = null;\n @Input() stepMarks: WizardStepMarks = new WizardStepMarks();\n @Input() nextAndBackButtonType: BootstrapTheme = 'primary';\n @Input() hideNextAndBackButtons? = false;\n @Input() backButton: InputButton = { text: 'Back' };\n @Input() nextButton: InputButton = { text: 'Next' };\n @Input() saveButton: InputButton = { text: 'Save' };\n @Input() saveButtonGroup?: InputButton[];\n @Input() cancelButton: InputButton = { text: 'Cancel' };\n @Input() disableSpinner = false;\n @Input() hideCrossButton? = false;\n @Input() showSaveBtnOnClose = false;\n @Input() scrollableStepContent = false;\n\n @Input() firstStepTitle;\n\n /**\n * `True` - wizard will close modal\n * @param {boolean} value\n */\n @Input() set canClosed(value: boolean) {\n if (value) {\n setTimeout(() => {\n this.spinnerShow = false;\n this.activeModal.close('Save');\n }, 100);\n }\n }\n\n /**\n * If `false` wizard will not display whole footer.\n */\n @Input() showFooter = true;\n\n /**\n * If `false` wizard will not check changes by itself, when it closes.\n */\n @Input() checkChanges = true;\n\n /**\n * Wizard title\n */\n @Input() title = 'Wizard Title';\n /**\n * Steps orientation.\\\n * if value is not set, the steps location will be based on the number of steps.\\\n * 5 > is `vertical` else `horizontal`\n */\n @Input() stepsOrientation: 'horizontal' | 'vertical';\n /**\n * Set false to hide steps.\n */\n @Input() showSteps = true;\n /**\n * Custom complete style step\n */\n @Input() completeClass = 'success';\n @Input() invalidClass = 'invalid';\n /**\n * Custom active style step\n */\n @Input() activeClass = 'active';\n\n @Input() isOpenSteps = false;\n\n @Input() stepsContainerClass = '';\n\n @Input() blockEnterIfControlFocus = true;\n\n /**\n * Disable internal @HostListener if the wizard has complex logic\n * Next step action on Enter key will be disabled\n * Previous step action on Backspace will be disabled\n */\n @Input() disableStepChangeOnKeyboardKey = false;\n\n /**\n * Pass 'true' to prevent 'Unsaved Changes' modal showing\n */\n @Input() canCloseWithoutSave = false;\n\n /**\n * Custom handler, which called on close button click\n */\n @Input() closeHandler?: () => Observable;\n\n /**\n * Pass 'true' in case of initial data loading.\n * Difference between this prop and 'loading' in a loader-content position\n * In case of 'initialLoading' loader occupies all content area. Step tabs doesn't display\n */\n @Input() initialLoading = false;\n\n /**\n * Emit on finish save click. Wizard don't close self after the save emit.\\\n * You need to set `canClosed` flag to close it.\n */\n @Output('save') saveEvent = new EventEmitter();\n @Output('next') nextEvent = new EventEmitter();\n\n @Output() stepSelected = new EventEmitter();\n\n @Output() stepScroll = new EventEmitter();\n /**\n * Find all available steps @see WizardStepComponent\n */\n @ContentChildren(WizardStepComponent) steps: QueryList;\n @ContentChild(WizardTitle, { static: true, read: WizardTitle }) wizardTitle: WizardTitle;\n @ContentChild(WizardFooterPrependDirective, { static: false, read: WizardFooterPrependDirective })\n public sanitizedHeight: SafeStyle = this.defaultWizardHeight;\n public spinnerShow = false;\n public prepend: WizardFooterPrependDirective;\n\n private internalStep: WizardStepComponent;\n private confirmClose: boolean;\n\n set currentStep(value: WizardStepComponent) {\n this.nextEvent.emit(value);\n this.internalStep.nextEvent.emit(this.internalStep);\n this.updateStepState(value);\n this.internalStep = value;\n this.notifyValueChange();\n this.stepQueue?.registerStepDisplay(value.title);\n }\n\n get currentStep(): WizardStepComponent {\n return this.internalStep;\n }\n\n get allStepValid(): boolean {\n return !this.steps?.some(s => s.valid === false);\n }\n\n get saveButtonDisabled(): boolean {\n return this.saveButton.loading\n || this.saveButton.disabled\n || (!this.disableSpinner && this.spinnerShow)\n || (this.buttonLoadingMode && this.loading)\n || this.stepMarks?.needBlock('save')\n || (!this.isOpenSteps && this.steps?.last !== this.currentStep && !this.disableSpinner)\n }\n\n get saveButtonTooltip(): string[] {\n const text = this.saveButtonDisabled ? this.stepMarks.getMark(this.currentStep.title, 'save').description : null\n\n return text ? [text] : null;\n }\n\n constructor(\n public activeModal: NgbActiveModal,\n private cd: ChangeDetectorRef,\n private modalService: ModalService,\n private sanitizer: DomSanitizer,\n @Inject(DOCUMENT) private document: Document\n ) {}\n\n ngAfterViewChecked(): void {\n if (this.height && !this.sanitizedHeight) this.setSanitizedHeight();\n }\n\n onChange: (value) => void;\n onTouched: () => void;\n\n @HostListener('window:keydown.esc', ['$event'])\n closeWizard(event: KeyboardEvent): void {\n const modalList = this.document.querySelectorAll('ngb-modal-window');\n const listLength = modalList.length;\n\n if (listLength > 1 && !modalList[listLength - 1].querySelector('mbs-wizard')) return;\n else {\n event.preventDefault();\n event.stopPropagation();\n }\n\n if (this.confirmClose) return;\n\n const reason = 'keyboard:escape';\n\n if (!this.currentStep.hasChanges && !this.steps.some((s) => s.changesBeforeValidation)) this.activeModal.close(reason);\n else this.closeWithConfirm(reason);\n }\n\n closeWithConfirm(reason: string): void {\n if (\n this.checkChanges &&\n (this.steps.toArray().indexOf(this.currentStep) > 0 || this.currentStep.hasChanges) &&\n !this.canCloseWithoutSave\n ) {\n this.confirmClose = true;\n const canSave = (this.allStepValid && this.currentStep === this.steps.last) || this.showSaveBtnOnClose;\n const modalSettings: ModalSettings = {\n header: { title: 'Unsaved Changes' },\n footer: { okButton: { text: canSave ? 'Save' : 'Back' }, cancelButton: { text: discardChangesText } }\n };\n const modalTitle =\n this.allStepValid || this.currentStep !== this.steps.last ? 'All changes will be lost' : 'Not all fields are filled in correctly';\n\n this.modalService\n .confirm(modalSettings, modalTitle)\n .then(() => {\n this.confirmClose = false;\n canSave ? this.handleSave() : this.goToErrorStep();\n })\n .catch(() => this.confirmClose && this.activeModal.close(discardChangesText));\n } else {\n this.activeModal.close(reason);\n }\n }\n\n @HostListener('document:keyup.enter', ['$event'])\n nextStepWizard(event: KeyboardEvent & DOMEvent): void {\n if (this.disableStepChangeOnKeyboardKey) return;\n if (\n !this.loading &&\n !this.spinnerShow &&\n (!this.blockEnterIfControlFocus ||\n !this.currentStep.blockEnterIfControlFocus ||\n (event.target && (event.target.classList.contains('mbs-wizard_nav-tabs') || isNil(event.target.type))))\n ) {\n this.steps.last === this.currentStep ? this.handleSave() : this.changeStep(1);\n }\n }\n\n @HostListener('document:keyup.backspace', ['$event'])\n backStepWizard(event: KeyboardEvent & DOMEvent): void {\n if (this.disableStepChangeOnKeyboardKey) return;\n\n if (!this.loading && isNil(event?.target?.type) && this.steps.first !== this.currentStep) this.changeStep(-1);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.steps && changes && changes.isOpenSteps && changes.isOpenSteps.currentValue) {\n this.steps.forEach(step => (step.completed = true));\n }\n\n if (changes && changes.height) {\n this.setSanitizedHeight();\n }\n }\n\n ngAfterContentInit(): void {\n if (this.isOpenSteps) this.steps.forEach(step => (step.completed = true));\n\n this.steps.changes.subscribe((v: WizardStepComponent[]) => this.initWizardSteps(v));\n this.initWizardSteps(this.steps.toArray());\n merge(...this.steps.map(s => s.change))\n\n merge(...this.steps.map((s) => s.change))\n .pipe(untilDestroyed(this))\n .subscribe(() => {\n this.resetConfirmClose();\n this.markForCheck();\n });\n\n this.steps.changes.subscribe((steps: WizardStepComponent[]) => {\n if (this.isOpenSteps) steps.forEach(step => (step.completed = true));\n });\n\n if (this.height) this.setSanitizedHeight();\n\n if (this.firstStepTitle) this.setFirstStep(this.steps.toArray());\n\n this.markForCheck();\n }\n\n setSanitizedHeight(): void {\n const height = typeof this.height === 'number' ? String(this.height) + 'px' : String(this.height);\n\n this.sanitizedHeight = this.sanitizer.bypassSecurityTrustStyle(height);\n this.cd.detectChanges();\n }\n\n resetConfirmClose(): void {\n if (!isNil(this.confirmClose) && this.confirmClose) this.confirmClose = false;\n }\n\n handleSave(action?: () => void): void {\n const hasQueue = this.stepQueue?.getQueue().length;\n const allStepValid = this.allStepValid;\n\n if (allStepValid && !hasQueue) {\n this.spinnerShow = true;\n return void (action ? action() : this.saveEvent.emit());\n }\n\n this.currentStep.isSave = true;\n allStepValid ? this.goToRequiredStep(true) : this.goToErrorStep(true);\n\n if (!this.currentStep.valid) {\n this.currentStep.nextEvent.emit(this.currentStep);\n }\n }\n\n handleClose(): void {\n const handler$ = this.closeHandler ? this.closeHandler() : of(null);\n\n handler$.pipe(untilDestroyed(this), take(1)).subscribe(() => {\n this.activeModal.close(discardChangesText);\n });\n }\n\n private initWizardSteps(newSteps: WizardStepComponent[]): void {\n if (!this.stepsOrientation) {\n this.stepsOrientation = newSteps.length > 5 ? 'vertical' : 'horizontal';\n }\n\n this.internalStep = this.internalStep || newSteps[0];\n this.internalStep.visible = true;\n this.internalStep.activated = true;\n\n this.notifyValueChange();\n }\n\n goToRequiredStep(skipCurrentStep = false): void {\n const steps = this.steps.toArray();\n const queue = this.stepQueue.getQueue();\n const nextStep = steps.find(step => {\n return skipCurrentStep ? queue.includes(step.title) && step.title !== this.currentStep.title : queue.includes(step.title);\n });\n\n if (nextStep) this.currentStep = nextStep;\n }\n\n goToErrorStep(skipCurrentStep = false): void {\n const steps = this.steps.toArray();\n const idx = steps.findIndex(step => (!step.valid || !step.completed) && (!skipCurrentStep || step.title !== this.currentStep.title));\n\n if (~idx) this.currentStep = steps[idx];\n }\n\n /**\n * Change step to N positions\n * @param {number} direction\n */\n changeStep(direction: number): void {\n this.currentStep.isNext = direction >= 0;\n this.currentStep.isSave = false;\n this.internalStep.changesBeforeValidation = this.internalStep.hasChanges;\n\n if (!this.currentStep.valid && direction > 0) {\n this.currentStep.nextEvent.emit(this.currentStep);\n\n return;\n }\n\n this.currentStep = this.getStepByDirection(direction) || this.currentStep;\n }\n\n /**\n * Open some step\n * @param {DOMEvent} event\n * @param {WizardStepComponent} value\n */\n selectManualStep(event: DOMEvent, value: WizardStepComponent): void {\n const stepsArray = this.steps.toArray();\n const currentStepIndex = stepsArray.findIndex((s) => s.title === this.currentStep.title);\n const targetStepIndex = stepsArray.findIndex((s) => s.title === value.title);\n\n this.currentStep.isNext = targetStepIndex > currentStepIndex;\n\n if (event?.target) event.target.blur();\n\n this.stepSelected.emit(value);\n this.currentStep = value;\n }\n\n /**\n * Set active and complete classes for previous and current step\n * @param {WizardStepComponent} value\n */\n updateStepState(value: WizardStepComponent): void {\n const steps = this.steps.toArray();\n\n if (steps.indexOf(value) > steps.indexOf(this.internalStep)) {\n this.internalStep.complete();\n } else {\n this.internalStep.notActivate();\n }\n\n value.activate();\n\n this.markForCheck();\n }\n\n notifyValueChange(): void {\n if (this.onChange) {\n setTimeout(() => this.onChange(this.currentStep), 100);\n }\n }\n\n markForCheck(): void {\n if (!(this.cd as ViewRef).destroyed) {\n this.cd.markForCheck();\n }\n }\n\n writeValue(obj: { title: string }): void {\n if (!obj) return;\n\n this.selectManualStep(null, this.steps.find((g) => g.title === obj.title) || this.steps.first);\n }\n\n registerOnChange(fn: (value) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /**\n * Reset all follow steps after this step\n * @param {{title: string}} step Start step to reset\n */\n resetStepsAfter(step: { title: string }): void {\n const stepsArray = this.steps.toArray();\n const index = stepsArray.findIndex((s) => s.title === step.title);\n\n stepsArray.slice(index + 1).forEach((step) => step.reset());\n this.markForCheck();\n }\n\n stepContainerClasses(): string[] {\n const classesArr: string[] = [];\n\n if (this.stepsOrientation === 'vertical' && this.showSteps) classesArr.push('col-9');\n if (this.stepsOrientation === 'vertical' && !this.showSteps) classesArr.push('col-12');\n if (this.stepsContainerClass) classesArr.push(this.stepsContainerClass);\n\n return classesArr;\n }\n stepClasses(step: WizardStepComponent): any {\n const stepInQueue = this.stepQueue?.getQueue().includes(step.title);\n\n return {\n [this.activeClass]: step.activated,\n [this.invalidClass]: !step.valid,\n [this.completeClass]: (this.isOpenSteps && step.valid) || step.completed,\n [this.completeClass]: !stepInQueue && ((this.isOpenSteps && step.valid) || step.completed),\n disabled: !(step.completed || step.activated || step.canOpen) && !this.isOpenSteps\n };\n }\n\n ngOnInit(): void {\n const modal = this.document.querySelector('ngb-modal-window');\n\n if (modal) modal.focus();\n\n addBreadcrumb({\n category: 'wizard',\n timestamp: new Date().getTime() / 1000,\n message: `Open wizard '${this.title}'`,\n level: 'info' as SeverityLevel\n });\n }\n\n ngOnDestroy() {\n addBreadcrumb({\n category: 'wizard',\n timestamp: new Date().getTime() / 1000,\n message: `Close wizard '${this.title}'`,\n level: 'info' as SeverityLevel\n });\n }\n\n handleStepScroll(): void {\n this.stepScroll.emit();\n }\n\n private getStepByDirection(direction: number): WizardStepComponent {\n const s = this.steps.toArray();\n let index = direction;\n let step = s[s.indexOf(this.currentStep) + index];\n const isFirst = !this.currentStep.isNext && this.steps.first.title === step.title;\n const isLast = this.currentStep.isNext && this.steps.last.title === step.title;\n\n if (this.ignoreSteps.includes(step?.title) && !isLast && !isFirst) {\n step.complete();\n index = this.currentStep.isNext ? index + 1 : index - 1;\n step = s[s.indexOf(this.currentStep) + index];\n }\n\n return step;\n }\n\n private setFirstStep(steps: WizardStepComponent[]): void {\n const initialStep = steps.find((step) => step.title === this.firstStepTitle);\n\n initialStep && this.selectManualStep(null, initialStep);\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[mbsListSelectGroupCheck]'\n})\nexport class ListSelectGroupCheckDirective {\n constructor() {}\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[appListSelectGroupHeader]'\n})\nexport class ListSelectGroupHeaderDirective {\n constructor() {}\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[appListSelectGroupInnerItem]'\n})\nexport class ListSelectGroupInnerItemDirective {\n constructor() {}\n}\n","
\n\n \n\n
\n\n \n\n \n\n
\n\n
\n\n \n\n \n\n
\n\n
\n
\n 0\"\n [checked]=\"checkedTop\"\n [indeterminate]=\"indeterminateTop\"\n [label]=\"topControlsLabel\"\n (change)=\"topControlsCheckboxChangeHandler($event)\">\n
\n\n
\n {{ topControlsDescription }}\n
\n\n
\n\n
\n\n
\n\n \n \n\n
\n\n
\n\n \n\n \n\n \n {{ selectedData?.length }}\n \n\n \n\n \n\n
\n","import {\n Component,\n ContentChild,\n ContentChildren,\n Directive,\n EventEmitter,\n forwardRef,\n Input,\n OnChanges,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewChildren\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { noop } from 'rxjs';\nimport { AdvancedSearchModel, Template } from '../advanced-search';\nimport { CheckboxComponent } from '../form/checkbox/checkbox.component';\nimport { SortEvent } from '../table-grid';\nimport { TableCellDirective } from '../table-grid/directives/table-cell.directive';\nimport { TableColumn } from '../table-grid/table/table.component';\nimport { BootstrapTheme, MbsSize } from '../utils';\nimport { ListSelectGroupCheckDirective } from './directives/list-select-group-check.directive';\nimport { ListSelectGroupHeaderDirective } from './directives/list-select-group-header.directive';\nimport { ListSelectGroupInnerItemDirective } from './directives/list-select-group-inner-item.directive';\nimport { ListSelectGroupModel } from './list-select-group-model';\nimport { ListSelectItem } from './list-select.model';\n\n@Directive({\n selector: '[appendTopControlsLabel]'\n})\nexport class AppendTopControlsLabel {\n constructor(public template: TemplateRef) {}\n}\n\n@Directive({\n selector: '[prependTopControlsLabel]'\n})\nexport class PrependTopControlsLabel {\n constructor(public template: TemplateRef) {}\n}\n\nexport const LIST_SELECT_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ListSelectComponent),\n multi: true\n};\n\n@Component({\n selector: 'app-list-select,mbs-list-select',\n templateUrl: './list-select.component.html',\n providers: [LIST_SELECT_VALUE_ACCESSOR]\n})\nexport class ListSelectComponent implements ControlValueAccessor, OnChanges, OnInit {\n @Input() headers: TableColumn[] = [];\n @Input() checkboxCellClass: string;\n @Input() checkboxCellWidth = 'calc(1rem + 17px)';\n @Input() tableContentClass: string;\n @Input() striped = false;\n @Input() hover = true;\n @Input() loading: boolean;\n @Input() bordered: boolean;\n @Input() myClassesTable: string;\n @Input() loaderType: BootstrapTheme;\n @Input() multipleSelect = true;\n @Input() noDataMessage: string;\n @Input() selectRowClass = '-selected';\n @Input() isNeedSelectRow = true;\n @Input() showTopControlsCheckbox = true;\n @Input() rowClasses = '';\n\n @Input() keepState = false;\n\n /**\n * Table size\n */\n @Input() size: MbsSize.sm | MbsSize.lg = null;\n\n /**\n * Key of `data` element. Value of that key will be returned in `selected` array on `save` event.\n */\n @Input() bindSelected = 'id';\n\n @Input() changeSortState: SortEvent;\n\n /**\n * Identifier DOM element for mapping label and input\n */\n @Input() id = 'listSelect';\n\n /**\n * Search input placeholder\n */\n @Input() placeholder = '';\n\n /**\n * Search input label\n */\n @Input() filterLabel = '';\n\n /**\n * component filters data only by this field(s). Filtering is on `OR` logic.\n */\n @Input() filterFields: string | string[];\n\n /**\n * Table height value. More info in table component.\n * @deprecated since `release/1.1` use `maxHeight`\n * @param {string | number} value\n */\n @Input() set tableHeight(value: string | number) {\n this.maxHeight = typeof value === 'number' ? `${value}px` : value;\n }\n\n /**\n * Function that is used in filtering method before the main filters\n */\n @Input() prefilterFn: (data: any[], filterTerm: string, advancedSearchFilters: any) => any[];\n\n /**\n * Binding source data.\n */\n @Input() data: ListSelectItem[] = [];\n\n /**\n * Mode in which to display list-select (can be table/list)\n */\n @Input() listType: 'table' | 'list' = 'list';\n\n /**\n * Use advanced search instead of default mbs-input\n */\n @Input() useAdvancedSearch = false;\n\n /**\n * Templates for advanced search field\n */\n @Input() searchTemplates: Template[] = [];\n\n /**\n * Virtual scrolling\n */\n @Input() virtualScrolling = false;\n @Input() virtualItemSize = 50;\n @Input() virtualItemsNumber = 20;\n @Input() minVirtualScrollItemSize = 10;\n @Input() maxVirtualScrollItemSize = 40;\n @Input() virtualScrollItemSizeDivider = 10;\n @Input() minBufferPx = 1200;\n @Input() maxBufferPx = 1200;\n\n /**\n * term for filtering data\n */\n public filterTerm = '';\n /**\n * @ignore\n */\n public filtered: ListSelectItem[] = [];\n public checkedTop: boolean;\n public indeterminateTop: boolean;\n public advancedSearchFilters: AdvancedSearchModel = {};\n\n mySelectedGroups: ListSelectGroupModel[] = [];\n myCheckToggleSelectAllId = 'select-all-check';\n\n // otherwise get immediately push after `handleChangeItemChecked`\n // don't know how to do better\n\n private selectedFiltered: ListSelectItem[];\n\n /**\n * Same array as `selectedData` but consists of full data objects.\n */\n public get mySelectedData() {\n if (this.loadSource) {\n return this.data.filter((item) => this.selectedData.some((el) => el[this.bindSelected] === item[this.bindSelected]));\n }\n\n return this.data.filter((item) => this.selectedData.includes((item[this.bindSelected] || '').toString()));\n }\n\n public set mySelectedData(data: ListSelectItem[]) {\n let selectedData: ListSelectItem[];\n\n if (this.multipleSelect) {\n selectedData = this.data.filter((item) => data.some((el) => el[this.bindSelected] === item[this.bindSelected]));\n } else {\n selectedData = data.length ? [data[0]] : [];\n }\n\n if (!this.loadSource) {\n selectedData = selectedData.map((item) => item[this.bindSelected].toString());\n }\n\n this.selectedData = selectedData;\n }\n\n get classesTable(): string {\n let listClass = this.listType === 'list' ? 'mbs-list-select_list' : 'mbs-list-select_table';\n listClass += this.myClassesTable ? ` ${this.myClassesTable}` : '';\n\n return listClass;\n }\n\n /**\n * If `true` table will render search\n */\n @Input() showSearch = true;\n\n /**\n * If `true` table will render headers\n */\n @Input() showHeaders = this.listType === 'table';\n\n /**\n * If `true` counter with selected items will be rendered\n */\n @Input() showCounter = true;\n\n /**\n * Label for selected items counter\n */\n @Input() counterLabel = 'Selected: ';\n\n /**\n * If setted it will render `ctrl` with `UnselectAll` on click\n */\n @Input() unselectLabel = '';\n\n @Input() selectAllIgnoreDisabled = false;\n /**\n * Max height of inner table content\n */\n @Input() maxHeight: string;\n\n /**\n * If showTopControls = true main control block will be shown above the table\n */\n @Input() showTopControls = false;\n @Input() topControlsLabel = false;\n @Input() topControlsLabelSelected = false;\n @Input() topControlsDescription = '';\n\n @Input() showCheckboxes = true;\n\n /**\n * If true - select row only if click on checkbox\n */\n @Input() selectOnlyOnCheckboxClick = false;\n\n @Input() invalid = false;\n\n @Input() bindDisabledValues: { key: string; value: any };\n /**\n * If true return selected items as source entity otherwise return by bindSelected key\n */\n @Input() loadSource = true;\n @Input() selectedData: ListSelectItem[] = [];\n\n /**\n * Save event on selected items\n */\n @Output() save: EventEmitter = new EventEmitter();\n\n /**\n * Sort event on all items\n */\n @Output() sort: EventEmitter = new EventEmitter();\n\n /**\n * Selected array change event\n */\n @Output() changeSelected: EventEmitter = new EventEmitter();\n\n @Output() scrolled: EventEmitter = new EventEmitter();\n @Output() scrollEnd: EventEmitter = new EventEmitter();\n @Output() scrolledIndexChange: EventEmitter = new EventEmitter();\n @Output() scroll: EventEmitter = new EventEmitter();\n\n @ContentChildren(TableCellDirective, { read: TemplateRef }) tableTemplates: QueryList>;\n\n @ContentChild(ListSelectGroupHeaderDirective, {\n static: false,\n read: TemplateRef\n })\n groupHeaderTemplate: TemplateRef;\n @ContentChild(ListSelectGroupInnerItemDirective, {\n static: false,\n read: TemplateRef\n })\n groupInnerItemTemplate: TemplateRef;\n\n @ContentChild(PrependTopControlsLabel, { static: true, read: PrependTopControlsLabel }) prependTopControlsLabel: PrependTopControlsLabel;\n @ContentChild(AppendTopControlsLabel, { static: true, read: AppendTopControlsLabel }) appendTopControlsLabel: AppendTopControlsLabel;\n\n @ViewChildren(ListSelectGroupCheckDirective, { read: CheckboxComponent }) groupChecks: QueryList;\n @ViewChild('checkSelectAll', { read: CheckboxComponent, static: false }) selectAllGroupsCheck: CheckboxComponent;\n\n changeFn: (_: any) => void;\n touchedFn: () => void;\n\n ngOnInit(): void {\n this.showTopControls && this.updateMainCheckboxData();\n\n if (this.loadSource) {\n this.updateSelectedData();\n }\n }\n\n updateSelectedData(): void {\n if (Array.isArray(this.selectedData) && this.selectedData.length !== 0) {\n let newSelected: ListSelectItem[];\n\n if (this.selectedData.every((item) => typeof item === 'string')) {\n newSelected = this.data.filter((item) => this.selectedData.includes(item[this.bindSelected].toString()));\n } else {\n newSelected = this.data.filter((item) => this.selectedData.some((value) => value[this.bindSelected] === item[this.bindSelected]));\n }\n\n this.selectedData = Array.from(newSelected);\n this.mySelectedData = Array.from(newSelected);\n this.changeSelected.emit(newSelected);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.selectedData) this.updateMainCheckboxData();\n\n if (changes.isNeedSelectRow || changes.showCheckboxes) {\n this.showCheckboxes || this.isNeedSelectRow\n ? noop()\n : console.warn(\n `list-select with id \"${this.id}\" has props 'showCheckboxes' and 'isNeedSelectRow' setting to false.\n \\nYou will never see selected items in UI. Please set one of these props to true to see selection.`\n );\n }\n\n if (changes.data) this.filtered = changes.data.currentValue as ListSelectItem[];\n }\n\n updateMainCheckboxData(): void {\n const selectedLength = this.selectedData.length;\n const filteredLength = this.filtered.length;\n\n this.checkedTop = selectedLength === filteredLength && selectedLength !== 0;\n this.indeterminateTop = selectedLength !== 0 && selectedLength !== filteredLength;\n }\n\n topControlsCheckboxChangeHandler(event: boolean): void {\n if (!event) {\n this.mySelectedData = [];\n this.handleChangeItemChecked([]);\n\n return;\n }\n\n const filtered = Array.from(this.filtered);\n\n this.mySelectedData = filtered;\n this.handleChangeItemChecked(filtered);\n }\n\n /**\n * Unselect all items\n */\n unselectAll(): void {\n this.handleChangeItemChecked([]);\n }\n\n handleChangeItemChecked(items: ListSelectItem[]): void {\n if (this.filterTerm) {\n if (this.multipleSelect) {\n this.setSelectedItemsIfFiltered(items);\n } else {\n if (this.selectedFiltered || items.length) this.mySelectedData = Array.from(items);\n\n this.selectedFiltered = Array.from(items);\n }\n } else {\n this.selectedFiltered = null;\n this.mySelectedData = Array.from(items);\n }\n\n this.changeSelected.emit(this.selectedData);\n this.updateMainCheckboxData();\n\n if (this.changeFn) this.changeFn(this.selectedData);\n }\n\n setSelectedItemsIfFiltered(data: ListSelectItem[]): void {\n const result: ListSelectItem[] = [];\n const isString = this.selectedData?.length && typeof this.selectedData[0] === 'string';\n const needAdd = data.filter(\n (el) =>\n this.selectedData.findIndex((i) =>\n isString ? el[this.bindSelected].toString() === i : el[this.bindSelected].toString() === i[this.bindSelected].toString()\n ) === -1\n );\n\n if (this.selectedFiltered) {\n const same = this.selectedFiltered.filter(\n (el) =>\n ~this.selectedData.findIndex((i) => {\n return isString ? el[this.bindSelected].toString() === i : el[this.bindSelected].toString() === i[this.bindSelected].toString();\n })\n );\n const needDel = same.filter(\n (el) => data.findIndex((i) => el[this.bindSelected].toString() === i[this.bindSelected].toString()) === -1\n );\n\n if (needDel.length) {\n const withoutNeedDel = this.mySelectedData.filter(\n (el) => needDel.findIndex((i) => el[this.bindSelected].toString() === i[this.bindSelected].toString()) === -1\n );\n\n result.push(...withoutNeedDel);\n } else result.push(...this.mySelectedData);\n } else result.push(...this.mySelectedData);\n\n result.push(...needAdd);\n this.selectedFiltered = Array.from(data);\n this.mySelectedData = Array.from(result);\n }\n\n writeValue(obj: ListSelectItem[]): void {\n this.mySelectedData = obj || [];\n }\n\n registerOnChange(fn: (value) => void): void {\n this.changeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.touchedFn = fn;\n }\n\n updateFilters(event: AdvancedSearchModel): void {\n if (event) {\n this.advancedSearchFilters = event;\n this.filterTerm = event?.words.join(' ') || '';\n }\n\n this.setFilteredData();\n }\n\n searchChangeHandler(event): void {\n if (typeof event === 'string') this.setFilteredData();\n }\n\n filterByFieldsPredicate = (item: ListSelectItem): boolean => {\n if (!this.filterTerm) return true;\n\n if (Array.isArray(this.filterFields)) {\n return this.filterFields.some((field) =>\n item[field] ? (item[field] as string).toLowerCase().includes(this.filterTerm.toLowerCase()) : false\n );\n } else {\n return item[this.filterFields] ? (item[this.filterFields] as string).toLowerCase().includes(this.filterTerm.toLowerCase()) : false;\n }\n };\n\n setFilteredData(): void {\n this.filtered = this.filterTerm ? this.data.filter(this.filterByFieldsPredicate) : this.data;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ButtonModule } from '../button/button.module';\nimport { CheckboxModule } from '../form/checkbox/checkbox.module';\nimport { InputModule } from '../form/input/input.module';\nimport { TableGridModule } from '../table-grid/table-grid.module';\nimport { AccordionModule } from '../accordion/accordion.module';\nimport { AdvancedSearchModule } from '../advanced-search/advanced-search.module';\nimport { ListSelectGroupCheckDirective } from './directives/list-select-group-check.directive';\nimport { ListSelectGroupHeaderDirective } from './directives/list-select-group-header.directive';\nimport { ListSelectGroupInnerItemDirective } from './directives/list-select-group-inner-item.directive';\nimport { ListSelectGroupDirective } from './directives/list-select-group.directive';\nimport { AppendTopControlsLabel, ListSelectComponent, PrependTopControlsLabel } from './list-select.component';\n\n@NgModule({\n declarations: [\n AppendTopControlsLabel,\n ListSelectComponent,\n ListSelectGroupDirective,\n ListSelectGroupHeaderDirective,\n ListSelectGroupInnerItemDirective,\n ListSelectGroupCheckDirective,\n PrependTopControlsLabel\n ],\n imports: [CommonModule, FormsModule, CheckboxModule, TableGridModule, InputModule, ButtonModule, AccordionModule, AdvancedSearchModule],\n exports: [\n AppendTopControlsLabel,\n ListSelectComponent,\n ListSelectGroupDirective,\n ListSelectGroupHeaderDirective,\n ListSelectGroupInnerItemDirective,\n ListSelectGroupCheckDirective,\n PrependTopControlsLabel,\n TableGridModule\n ],\n providers: []\n})\nexport class ListSelectModule {}\n","import { AfterViewInit, Component, HostListener, Input } from '@angular/core';\nimport { BootstrapTheme } from '../utils';\n\n/**\n * Spinner animation for some works\n */\n@Component({\n selector: 'app-loader, mbs-loader',\n template: `\n
\n
\n
\n `\n})\nexport class LoaderComponent implements AfterViewInit {\n @Input() theme: BootstrapTheme;\n @Input() type: BootstrapTheme;\n @Input() useFixedDocumentSpinner = false;\n\n private _useFixedSize = false;\n private _hasVerticalScroll = false;\n @Input()\n public set useFixedSize(value: boolean) {\n this._useFixedSize = value;\n this.checkSpinnerPosition();\n }\n\n public spinnerSizeClass = '';\n\n private documentHasVerticalScrollbar = false;\n\n public get bgClass(): string {\n return this.type ? `bg-transparent-${this.type}` : '';\n }\n\n public get spinnerColorClass(): string {\n return this.theme ? `mbs-loader_spinner-${this.theme}` : '';\n }\n\n public get fixedSpinnerClass(): string {\n return this.useFixedDocumentSpinner && this.documentHasVerticalScrollbar ? 'mbs-loader_spinner_fixed' : '';\n }\n\n @Input()\n public set updatePosition(hasVerticalScroll: boolean) {\n this._hasVerticalScroll = hasVerticalScroll;\n this.checkSpinnerPosition();\n }\n\n /**\n * Spinner size.\n * * 'xsmall' - 35px * 35px\n * * 'small' - 75px * 75px\n * * 'default' - 150px * 150px\n * @param {'small' | 'default' | 'xsmall'} value\n */\n @Input()\n public set size(value: 'small' | 'default' | 'xsmall') {\n switch (value) {\n case 'small':\n this.spinnerSizeClass = 'mbs-loader_spinner-small';\n break;\n case 'xsmall':\n this.spinnerSizeClass = 'mbs-loader_spinner-xsmall';\n break;\n case 'default':\n default:\n break;\n }\n }\n\n @HostListener('window:resize', ['$event'])\n public onResize() {\n this.checkSpinnerPosition();\n }\n\n public ngAfterViewInit(): void {\n this.checkSpinnerPosition();\n }\n\n private checkSpinnerPosition(): void {\n if (!this.useFixedDocumentSpinner) return;\n\n if (this._useFixedSize) {\n this.documentHasVerticalScrollbar = this._hasVerticalScroll;\n } else {\n this.documentHasVerticalScrollbar = document.documentElement.scrollHeight > document.documentElement.clientHeight;\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { LoaderComponent } from './loader.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [LoaderComponent],\n exports: [LoaderComponent]\n})\nexport class LoaderModule {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[modalFooter]'\n})\nexport class ModalFooterDirective {\n constructor() {}\n}\n","\n
\n
\n
\n \n
\n
\n
\n {{ title }}\n \n \n \n
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n \n \n \n \n \n \n
\n
\n {{message}}\n \n
\n
\n \n \n \n \n \n \n \n \n
\n
\n \n {{okButtonText}}\n \n {{ cancelButtonText }}\n \n \n \n \n \n
\n
\n\n","import { DOCUMENT } from '@angular/common';\nimport {\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n RendererFactory2\n} from '@angular/core';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { addBreadcrumb, SeverityLevel } from '@sentry/browser';\nimport { Observable } from 'rxjs';\nimport { ButtonType } from '../button';\nimport { isTemplate, MbsSize } from '../utils';\nimport { ModalFooterDirective } from './modal-footer.directive';\n\nexport type ModalSize = MbsSize.sm | MbsSize.md | MbsSize.lg | MbsSize.xl;\n\n/**\n * Component that wrapping content into a `ngb-modal`\n */\n@Component({\n selector: 'app-modal, mbs-modal',\n templateUrl: './modal.component.html'\n})\nexport class ModalComponent implements OnInit, OnDestroy {\n private expandedClass = '-fullScreen';\n private modalDialog: HTMLElement;\n private readonly renderer: Renderer2;\n\n /**\n * Modal context\n */\n public context: any;\n /**\n * Expanded/collapsed modal state.\n */\n public isExpanded = false;\n\n /**\n * Text title in header modal\n */\n @Input()\n title: string;\n\n /**\n * Class for icon in header modal\n */\n @Input()\n titleIconClass: string;\n\n /**\n * Text for resolve button\n */\n @Input()\n okButtonText = 'Save';\n\n /**\n * Text for reject button\n */\n @Input()\n cancelButtonText = 'Close';\n\n /**\n * Color for resolve button\n */\n @Input()\n okButtonType: ButtonType = 'primary';\n\n /**\n * Disabled state resolve button\n */\n @Input()\n okButtonDisabled$: Observable;\n\n /**\n * Loading state resolve button\n */\n @Input()\n okButtonLoading$: Observable;\n\n /**\n * Will be inserted just as text to modal body. It's not templates context\n */\n @Input()\n message: string;\n\n /**\n * Header/string/HTML/Template\n * 1) `string`: if set `HTML` or `string` from `modalSettings` in external component\n * 2) `Template`: if set `TemplateRef` from `modalSettings` in external component\n * 3) `null/undefined`: it's possible if using custom template in modal. Will be use ng-content by [select]\n * 4) class Header: if `modalSettings` have prop `header`. It's default behavior\n */\n @Input()\n header: any;\n\n /**\n * Context for insert to template modal body\n */\n @Input()\n body: any;\n\n /**\n * Displaying footer modal\n */\n @Input()\n showFooter = true;\n\n /**\n * Displaying resolve button\n */\n @Input()\n showOkButton = true;\n\n /**\n * Displaying reject button\n */\n @Input()\n showCancelButton = true;\n\n /**\n * Modal size.\n *
\n * Possible values: `sm` | `md` | `lg` | `xl`.\n *
\n * You can use `enum` MbsSize\n */\n @Input()\n size: ModalSize = MbsSize.sm;\n\n /**\n * Header size by padding (will be set CSS styles)\n *
\n * Possible values: `sm` | `lg`.\n *
\n * You can use `enum` MbsSize\n */\n @Input()\n headerSize: MbsSize.sm | MbsSize.lg;\n\n /**\n * If `true` - modal title will be truncated and will take one line
\n * If `false` (default) modal title can take more than one line\n */\n @Input()\n titleTextOverflow = false;\n\n /**\n * If `true` - modal will be using responsive size\n */\n @Input()\n responsive = false;\n\n /**\n * If you need to get some data from an external component inside the modal, you can pass it using the `data` in modalSettings\n */\n @Input()\n data: T & { context: any };\n\n /**\n * If `true` - will be hiding default HTML and you can insert custom HTML into `...`\n */\n @Input()\n isCustomModal = false;\n\n /**\n * if `true` - will be showing `mbs-loader` instead of modal content\n */\n @Input()\n loading = false;\n\n /**\n * Displaying close modal button\n */\n @Input()\n showCloseCross = true;\n\n /**\n * Displaying button for expanding/collapsing modal\n */\n @Input() showExpandedCross = false;\n\n @Input() canExpand = false;\n\n @Input() bodyClasses = '';\n\n /**\n * Emit modal state from `isExpanded` property\n */\n @Output() expandedChange = new EventEmitter();\n\n /**\n * Directive for generating custom footer\n */\n @ContentChild(ModalFooterDirective, { static: true }) customFooter: any;\n collapsing: boolean;\n\n constructor(\n public activeModal: NgbActiveModal,\n private element: ElementRef,\n private rendererFactory: RendererFactory2,\n @Inject(DOCUMENT) private document: Document\n ) {\n this.renderer = rendererFactory.createRenderer(null, null);\n }\n\n ngOnInit(): void {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-member-access\n this.context = this.data && this.data.context ? Object.assign({}, this.data.context, this.activeModal) : this.activeModal;\n\n if (this.isCustomModal) {\n this.element.nativeElement.parentElement.classList.add('modal-content-inner');\n }\n // TODO: need to understand why the .modal-dialog element was not found directly.\n if (this.canExpand || this.showExpandedCross) this.modalDialog = this.element.nativeElement.closest('.modal-content').parentElement;\n\n addBreadcrumb({\n category: 'modal',\n timestamp: new Date().getTime() / 1000,\n message: `Open modal '${this.title}'`,\n level: 'info' as SeverityLevel\n });\n }\n\n ngOnDestroy() {\n addBreadcrumb({\n category: 'modal',\n timestamp: new Date().getTime() / 1000,\n message: `Close modal '${this.title}'`,\n level: 'info' as SeverityLevel\n });\n }\n\n public get computedBodyClass() {\n return this.bodyClasses ? `${this.bodyClasses} modal-body` : 'modal-body';\n }\n\n /**\n * Closes current modal\n */\n public close(): void {\n this.renderer.removeAttribute(this.document.body, 'style');\n this.activeModal.dismiss(false);\n }\n\n /**\n * Closes the current modal after saving\n * @param {any} result\n */\n public save(result?: any): void {\n this.activeModal.close(result ? result : true);\n }\n\n /**\n * Get header size class with a hyphen added\n * @return {string}\n */\n getHeaderSizeClass(): string {\n return (this.headerSize ? '-' + this.headerSize : '') + ' ' + (this.header?.headerCustomClasses || '');\n }\n\n /**\n * Toggle expanding/collapsing modal and generating event emit\n */\n toggleExpand(): void {\n this.isExpanded = !this.isExpanded;\n this.renderer[this.isExpanded ? 'addClass' : 'removeClass'](this.modalDialog, this.expandedClass);\n\n const expandedOverflow = this.isExpanded ? 'overflow-y: hidden' : 'overflow-y: auto';\n this.renderer.setAttribute(this.document.body, 'style', expandedOverflow);\n\n this.expandedChange.emit(this.isExpanded);\n }\n\n /**\n * Check on `string` if set `HTML` or `string` from `modalSettings`\n * @return {boolean}\n */\n isHeaderSettingsString(): boolean {\n return typeof this.header === 'string';\n }\n\n /**\n * Check on `null/undefined` if set `TemplateRef` from `modalSettings`\n * @return {boolean}\n */\n isHeaderSettingsTemplateRef(): boolean {\n return isTemplate(this.header);\n }\n}\n","import { HttpStatusCode } from '@angular/common/http';\n\nexport enum ErrorsEnum {\n // [HttpStatusCode(HttpStatusCode.InternalServerError)]\n // [Description(\"This kind of error is not classified. Probably the problem occurred because of the bad written code base.\")]\n Uknown = 0,\n // [HttpStatusCode(HttpStatusCode.Forbidden)]\n // [Description(\"Two-factor authentication enforced by the provider is not configured for a SubAdmin\")]\n Forced2FANotConfigured = 1,\n // [HttpStatusCode(HttpStatusCode.ServiceUnavailable)]\n // [Description(\"Error ocurred while recording a new entity to the database\")]\n DatabaseAccessLayerCreatingError = 2,\n // [HttpStatusCode(HttpStatusCode.ServiceUnavailable)]\n // [Description(\"Error ocurred while reading an entity from the database\")]\n DatabaseAccessLayerReadingError = 3,\n // [HttpStatusCode(HttpStatusCode.ServiceUnavailable)]\n // [Description(\"Error ocurred while updating an entity in the database\")]\n DatabaseAccessLayerUpdatingError = 4,\n // [HttpStatusCode(HttpStatusCode.ServiceUnavailable)]\n // [Description(\"Error ocurred while deleting an entity from the database\")]\n DatabaseAccessLayerDeletingError = 5,\n // [HttpStatusCode(HttpStatusCode.BadRequest)]\n // [Description(\"Invalid Model\")]\n InvalidModelError = 6,\n // [HttpStatusCode(HttpStatusCode.PreconditionFailed)]\n // [Description(\"Email not sent because notification service is not configured properly\")]\n EmailNotSentBecauseServiceNotConfiguredError = 7,\n // [HttpStatusCode(HttpStatusCode.PreconditionFailed)]\n // [Description(\"Entity was not found with given search parameters. Most probably the entity was removed or its parameters changed.\")]\n EntityNotFoundError = 8,\n // [HttpStatusCode(HttpStatusCode.BadRequest)]\n // [Description(\"This operation can only be executed once with these request parameters.\")]\n OperationCanBeDoneOnceError = 9,\n // [HttpStatusCode(HttpStatusCode.BadRequest)]\n // [Description(\"Settings are not configured for the requested operation.\")]\n SettingsNotConfiguredError = 10,\n // [Description(\"Web manager is not authorized with this permission.\")]\n WebManagerNotAuthorizedWithPermission = 11,\n // [Description(\"Enity can not be created with a not unique property.\")]\n NotUniqueProperty = 12,\n // [Description(\"Web manager is not authorized to change this company information.\")]\n WebManagerNotAuthorizedChangeCompanyInfo = 13,\n // [Description(\"Operation can be completed.\")]\n ImpossibleOperation = 14,\n\n // RMM agent section\n // DESCRIPTION: Counters initialization error\n RmmSummaryCounter = 5001,\n // DESCRIPTION: Parameter not found\n RmmParameterNotFound = 5002,\n // DESCRIPTION: Counters recovery error\n RmmCountersRecoveryError = 5003,\n // DESCRIPTION: Folder creating or access error\n RmmFolderCreatingOr = 5004,\n // DESCRIPTION: File operation error\n RmmFileOperationError = 5005,\n // DESCRIPTION: Process error\n RmmProcessError = 5006,\n // DESCRIPTION: TimeOut\n RmmTimeOut = 5007,\n // DESCRIPTION: The input parameter string is not in the correct format and the command cannot be recognized\n RmmTheInputParameter = 5008,\n // DESCRIPTION: Previous operation not completed, plugin is busy\n RmmPreviousOperationNot = 5009,\n // DESCRIPTION: File not exists\n RmmFileNotExists = 5010,\n // DESCRIPTION: Path not exists\n RmmPathNotExists = 5011,\n // DESCRIPTION: The remote management agent is in read-only mode. This command is blocked\n RmmReadonlyMode = 5012,\n // DESCRIPTION: PowerShell scripts are not allowed to run\n RmmPowerShellScriptsAre = 5013,\n // DESCRIPTION: An cancel request was received\n RmmAnCancelRequest = 5014,\n\n RmmHyperVNotFound = 5051,\n RmmHyperVServiceNotFound = 5052,\n RmmHyperVServiceNotRunning = 5053,\n\n RmmStartProcessAs = 5051,\n\n RmmUpdateDownloadError = 5051,\n RmmUpdateInstallationError = 5052,\n RmmUpdatesNotFound = 5053,\n RmmUpdatesListCorrupted = 5054,\n RmmThereMayBe = 5055,\n RmmInstalledUpdatesNot = 5056,\n RmmAvailableUpdatesNot = 5057,\n RmmUpdateNotInstalled = 5058,\n\n RmmHddErrorRetrievingSmart = 5051,\n RmmHddGetSmartRegisters = 5052,\n RmmHddConvertingHexValue = 5053,\n\n // RMM api section\n // RMM Access denied\n RmmAccessDenied = 5102,\n // Timeout error occurred while getting the list of computers.\n RmmTimeoutGettingComputers = 5100,\n // Timeout error occurred or client is not connected.\n RmmTimeoutClientConnect = 5101\n}\n\nexport enum ErrorPriority {\n Info = 1,\n Warning = 2,\n Minor = 3,\n Major = 4,\n Critical = 5\n}\n\nexport class ResponseError {\n code: ErrorsEnum | HttpStatusCode;\n detail: string;\n knownType: number;\n priority: ErrorPriority;\n title: string;\n type: string;\n ErrorMessage: string;\n\n constructor(init?: Partial) {\n if (init) {\n Object.assign(this, init);\n }\n }\n}\n","export type SortDirection = 'asc' | 'desc' | '';\n\nexport interface SortEvent {\n column: string;\n direction: SortDirection;\n}\n\nexport const rotate: { [key: string]: SortDirection } = {\n asc: 'desc',\n desc: '',\n '': 'asc'\n};\nexport const sortNumber: { [key: string]: number } = {\n asc: 1,\n desc: -1,\n '': 0\n};\n\nexport enum SortDirections {\n Ascending = 'asc',\n Descending = 'desc'\n}\n\nexport interface SortParams {\n column: string;\n direction: SortDirection;\n}\n\nexport const orderByParam = 'orderBy';\n","import { EventEmitter } from '@angular/core';\nimport { merge } from 'lodash';\n\nfunction create(type: new () => T): T {\n return new type();\n}\n\nexport abstract class PersistentStateServiceBase {\n public data: T;\n private myChange = new EventEmitter(true);\n private namespace = 'global';\n public change = this.myChange.asObservable();\n constructor(private type: new () => T, private namespace$: EventEmitter | string) {\n this.data = this.readData();\n\n if (typeof this.namespace$ === 'string') {\n this.namespace = this.namespace$;\n } else {\n this.namespace$.subscribe(userId => {\n this.namespace = userId || 'global';\n this.data = this.readData();\n });\n }\n }\n\n protected getEmitterInstance(): EventEmitter {\n return this.namespace$ as EventEmitter;\n }\n\n protected listenStorageChange(): void {\n window.addEventListener('storage', (event: StorageEvent) => {\n if (event.storageArea === localStorage && event.key === this.namespace) {\n this.data = this.readData();\n this.myChange.emit(this.data);\n }\n });\n }\n\n protected get(obj: Record, key: string): T {\n return obj['_' + key] as T;\n }\n\n protected set(obj: Record, key: string, value: any): void {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n obj['_' + key] = value;\n this.myChange.emit(this.data);\n localStorage.setItem(this.namespace, JSON.stringify(this.data));\n }\n\n protected readData(): T {\n const storageData = JSON.parse(localStorage.getItem(this.namespace)) as T;\n const clearData = create(this.type);\n const myData = merge(clearData, storageData);\n\n this.recursiveDefineReactiveProperties(myData);\n\n return myData;\n }\n\n protected recursiveDefineReactiveProperties(sourceObj: any): void {\n function getPropertiesOptions(k: string) {\n return {\n ['_' + k]: {\n writable: true,\n enumerable: false,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-member-access\n value: sourceObj[k]\n },\n [k]: {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access\n get: this.get.bind(this, sourceObj, k),\n // eslint-disable-next-line\n set: (value => this.set(sourceObj, k, value)).bind(this),\n enumerable: true\n }\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-argument\n const properties: PropertyDescriptorMap & ThisType = Object.keys(sourceObj)\n .map(k => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (sourceObj[k] instanceof Object && !(sourceObj[k] instanceof Date)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n this.recursiveDefineReactiveProperties(sourceObj[k]);\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return getPropertiesOptions.call(this, k);\n })\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n .reduce((prev, next) => Object.assign(prev, next), {});\n\n Object.defineProperties(sourceObj, properties);\n }\n}\n","export enum SharedPersistentStateEnum {\n table = 'table',\n grid = 'grid'\n}\n","import { InjectionToken, Provider } from '@angular/core';\nimport { SharedPersistentStateService } from './shared-persistent-state.service';\n\nexport const SHARED_PERSISTENT_STATE = new InjectionToken('A shared persistent state information');\n\nexport function initSharedPersistentStateService(): SharedPersistentStateService {\n return new SharedPersistentStateService('sharedPersistentState');\n}\nexport const SHARED_PERSISTENT_STATE_PROVIDERS: Provider[] = [\n {\n provide: SHARED_PERSISTENT_STATE,\n useFactory: initSharedPersistentStateService\n }\n];\n","import { EventEmitter } from '@angular/core';\nimport { PersistentStateServiceBase } from './persistent-state-base.service';\nimport { SharedPersistentStateEnum } from './shared-persistent-state-enum';\n\nexport type ViewMode = SharedPersistentStateEnum.table | SharedPersistentStateEnum.grid;\nexport class SharedPersistentState {\n viewTableGridMode: ViewMode = SharedPersistentStateEnum.table;\n}\nexport class SharedPersistentStateService extends PersistentStateServiceBase {\n private eventEmitter: EventEmitter;\n constructor(namespace: string) {\n super(SharedPersistentState, new EventEmitter());\n this.eventEmitter = this.getEmitterInstance();\n this.eventEmitter.emit(namespace);\n this.listenStorageChange();\n }\n}\n","\n","import { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostListener,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { Placement, PlacementArray } from '@ng-bootstrap/ng-bootstrap/util/positioning';\nimport { BehaviorSubject, Observable, combineLatest } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nexport type modalText = { title?: string; text?: string; textInvalid?: string; save?: string; back?: string; cancel?: string };\n\n/**\n * A component that provides a sidebar\n */\n@Component({\n selector: 'app-sidepanel,mbs-sidepanel',\n templateUrl: './sidepanel.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SidepanelComponent implements OnInit, OnDestroy, OnChanges {\n /**\n * Custom text for the modal\n */\n @Input() modalText: modalText = null;\n /**\n * A uniq id in the page scope\n */\n @Input() id: string;\n /**\n * Which one side a panel appears\n * * Available values: `left | right`.\n * * default - `right`\n */\n @Input() side: string;\n\n /**\n * Toggles the `-tabs` class that includes special styles for `ngb-tabset`\n * * use only if there is a `ngb-tabset` inside of `sidepanel`\n * * default - `false`\n */\n\n @Input() tabs: boolean;\n /**\n * Toggles the `large mode`.\n * * If `true` panel becomes almost twice wider than usual.\n * * default - `false`\n */\n @Input() large: boolean;\n @Input() headerClass: string;\n @Input() actionNames: Partial<{ delete: string; save: string; close: string }> = {};\n @Input() innerContentType: 'form' | 'inner' | 'tabs' | 'nowrap' = 'form';\n @Input() showFooter = true;\n @Input() disabledSave: boolean;\n @Input() saveButtonTooltip: string;\n @Input() saveButtonTooltipPosition: string | Placement | PlacementArray = 'top';\n @Input() disabledDelete: boolean;\n @Input() hideSave: boolean;\n @Input() showDelete = true;\n @Input() isCreate = true;\n\n @Input() showExpandedCross = false;\n\n @Input() loadingData = false;\n\n @Output() panelClosed = new EventEmitter();\n\n @Output('delete') deleteEvent = new EventEmitter();\n @Output('save') saveEvent = new EventEmitter();\n @Output() panelOpened = new EventEmitter();\n @Output() expandedChange = new EventEmitter();\n\n @ViewChild('sidePanel', { static: false }) sidePanel: ElementRef;\n\n @ContentChild('footerTemplate', { static: true }) footerTemplateContent: TemplateRef;\n\n public isExpanded = false;\n\n public internalLoadingForSave = new BehaviorSubject(false);\n public internalLoadingForDelete = new BehaviorSubject(false);\n public loadingForSave$: Observable;\n public loadingForDelete$: Observable;\n private externalLoadingForSave = new BehaviorSubject(false);\n private externalLoadingForDelete = new BehaviorSubject(false);\n\n private expandedClass = '-fullscreen';\n private showPanel = false;\n\n constructor(private cd: ChangeDetectorRef, @Inject(DOCUMENT) private document: Document, private renderer: Renderer2) {\n this.loadingForSave$ = combineLatest([this.internalLoadingForSave, this.externalLoadingForSave]).pipe(\n map(([internal, external]) => internal || external)\n );\n this.loadingForDelete$ = combineLatest([this.internalLoadingForDelete, this.externalLoadingForDelete]).pipe(\n map(([internal, external]) => internal || external)\n );\n }\n\n /**\n * Current panel visibility state\n * @param {boolean} state\n */\n get show(): boolean {\n return this.showPanel;\n }\n @Input() set show(state: boolean) {\n this.showPanel = state;\n this.cd.markForCheck();\n }\n\n /**\n * Additional custom loading state for 'Save' button.\n * Anyway internal loading state is managed by the component.\n * @param {boolean} value - The loading state of the save button.\n */\n @Input() set loadingForSave(value: boolean) {\n this.externalLoadingForSave.next(value);\n }\n\n /**\n * Additional custom loading state for 'Delete' button.\n * Anyway internal loading state is managed by the component.\n * @param {boolean} value - The loading state of the delete button.\n */\n @Input() set loadingForDelete(value: boolean) {\n this.externalLoadingForDelete.next(value);\n }\n\n @Input() set footerTemplate(value: TemplateRef) {\n this.footerTemplateContent = value;\n }\n\n @HostListener('window:keydown.esc', ['$event'])\n public handleClose(): void {\n this.applyExpandedStyle();\n this.panelClosed.emit();\n }\n\n ngOnInit(): void {\n if (!this.id) {\n throw Error('modal must have an id');\n }\n }\n\n ngOnChanges(): void {\n this.cd.detectChanges();\n }\n\n ngOnDestroy(): void {\n [this.panelClosed, this.deleteEvent, this.saveEvent].forEach((event) => event.unsubscribe());\n }\n\n public open(): void {\n this.showPanel = true;\n this.applyExpandedStyle();\n this.panelOpened.emit();\n this.cd.detectChanges();\n }\n\n public close(): void {\n this.showPanel = false;\n this.applyExpandedStyle();\n this.cd.detectChanges();\n }\n\n public sidebarSideClass(): { [key: string]: boolean } {\n return {\n '-open': this.showPanel,\n '-left': this.side && this.side === 'left',\n '-right': (this.side && this.side === 'right') || !this.side,\n '-tabs': this.tabs,\n '-lg': this.large\n };\n }\n\n public toggleExpand(): void {\n this.isExpanded = !this.isExpanded;\n this.applyExpandedStyle();\n this.expandedChange.emit(this.isExpanded);\n }\n\n private applyExpandedStyle(): void {\n const expandedOverflow = this.showPanel && this.isExpanded ? 'overflow-y: hidden' : 'overflow-y: auto';\n\n this.renderer.setAttribute(this.document.body, 'style', expandedOverflow);\n\n if (this.isExpanded) {\n this.renderer.addClass(this.sidePanel.nativeElement, this.expandedClass);\n } else {\n this.renderer.removeClass(this.sidePanel.nativeElement, this.expandedClass);\n }\n }\n}\n","enum SmartSearchCharacters {\n GROUP_LEFT = '{',\n GROUP_RIGHT = '}',\n NEGATIVE = '-',\n GREATER = '>',\n GREATER_EQUAL = '>=',\n LESS = '<',\n LESS_EQUAL = '<=',\n SPACE = ' ',\n MASK = '*',\n SEQUENCE = ','\n}\n\nconst DEFAULT_CHARS = new Set(Object.values(SmartSearchCharacters));\nconst CONDITION_CHARS = new Set([\n SmartSearchCharacters.NEGATIVE,\n SmartSearchCharacters.GREATER_EQUAL,\n SmartSearchCharacters.LESS_EQUAL,\n SmartSearchCharacters.GREATER,\n SmartSearchCharacters.LESS\n]);\n\nconst DEFAULT_CLASS = 'mbs-smart-search-default';\nconst INVALID_CLASS = 'mbs-smart-search-invalid';\nconst TAG_CLASS = 'mbs-smart-search-tag';\nconst FIELD_CLASS = 'mbs-smart-search-field';\nconst PLAIN_CLASS = 'mbs-smart-search-plain';\nconst GROUP_START_CLASS = 'mbs-smart-search-group-start';\nconst GROUP_END_CLASS = 'mbs-smart-search-group-end';\n\nconst SMART_SEARCH_CLASSES = [DEFAULT_CLASS, INVALID_CLASS, TAG_CLASS, FIELD_CLASS, PLAIN_CLASS, GROUP_START_CLASS, GROUP_END_CLASS];\n\nexport {\n SmartSearchCharacters,\n DEFAULT_CHARS,\n CONDITION_CHARS,\n SMART_SEARCH_CLASSES,\n DEFAULT_CLASS,\n INVALID_CLASS,\n TAG_CLASS,\n FIELD_CLASS,\n PLAIN_CLASS,\n GROUP_START_CLASS,\n GROUP_END_CLASS\n};\n","import { TemplateRef } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n// eslint-disable-next-line no-use-before-define\nexport interface ModelTemplateInternal extends ModelTemplate {\n tagFormatter?: (value: any) => string;\n formatter?: (value: any) => string;\n}\n\ninterface SmartSearchKeywordBase {\n type: 'word' | 'tag' | 'hashtag';\n value: T;\n elements: Element[];\n}\n\nexport interface SmartSearchHashtag extends SmartSearchKeywordBase {\n hashtag: string;\n tagTemplate: ModelTemplateInternal;\n}\n\nexport interface SmartSearchWord extends SmartSearchKeywordBase {\n isGrouped?: boolean;\n conditionValue?: string;\n conditionElements?: Element[];\n}\n\nexport interface SmartSearchTagField {\n value: string;\n elements: Element[];\n isGrouped?: boolean;\n conditionValue?: string;\n conditionElements?: Element[];\n fieldValue: string;\n fieldElements: Element[];\n}\n\nexport interface SmartSearchTag extends SmartSearchKeywordBase {\n tagValue: string;\n tagElements: Element[];\n fields: SmartSearchTagField[];\n completed?: boolean;\n tagTemplate: ModelTemplateInternal;\n}\n\nexport type SmartSearchKeywordType = SmartSearchHashtag | SmartSearchWord | SmartSearchTag;\n\nexport interface SmartSearchState {\n leftCaretValue: string;\n leftCaretClearValue: string;\n leftCaretCondition: string;\n caretNode: Node;\n caretIndex: number;\n availableTags: ModelTemplateInternal[];\n usedTags: string[];\n model: SmartSearchKeywordType[];\n invalid: boolean;\n modelValidationState: SmartSearchValidationState;\n}\n\nexport enum SmartSearchValidationState {\n Unknown,\n Valid,\n Invalid\n}\n\nexport interface ModelTemplate {\n tag: string;\n\n /**\n * if set `prop`, search box will NOT include values that already presented in search field into dropdown.\n * Attention! Now work with flat object (root level only)\n */\n filterByProp?: string;\n\n isHashtag?: boolean;\n\n /**\n * Get autocomplete items. Empty for hashtag.\n */\n items?: (state: SmartSearchState) => Observable;\n\n /**\n * For default template. Empty for hashtag.\n */\n itemFormatter?: (value: T) => string;\n\n /**\n * Customize item template\n */\n template?: TemplateRef;\n\n /**\n * if `true`, then the ability to reuse an already used tag is added\n * if `false` - search box will NOT include tags that already presented in search field into dropdown.\n * If user write duplicate tag manually it will be ignored;\n */\n isMultiple?: boolean;\n\n /**\n * if `true`, then special actions are added to the drop-down list, allowing you to list values separated by commas\n */\n isSequenceMultiple?: boolean;\n\n /**\n * if `true`, then special brackets '{' and '}' could be automatically added for values separated by space\n */\n addGroupBrackets?: boolean;\n\n /**\n * if `true`, then all selected cachedValues will be added to cachedValues storage. Only for tag values.\n */\n enableCacheStorage?: boolean;\n}\n\nexport enum ActionType {\n /**\n * Separate list of values in isSequenceMultiple = 'true' mode\n */\n Comma = 1,\n /**\n * Switch to next tag in isSequenceMultiple = 'true' mode\n */\n Space\n}\n\nexport interface CachedValueType {\n value;\n searchValue: string;\n tag: string;\n}\n","import { Injectable } from '@angular/core';\nimport {\n SmartSearchHashtag,\n SmartSearchKeywordType,\n SmartSearchModel,\n SmartSearchModelField,\n SmartSearchTag,\n SmartSearchWord\n} from './models';\nimport { getNormalizeTerm } from './utils';\n\n@Injectable()\nexport class SmartSearchConfig {\n public convertCondition(rawCondition: string): string {\n return rawCondition;\n }\n\n public convertModel(model: SmartSearchKeywordType[] = []): T | SmartSearchModel {\n const newValue: T | SmartSearchModel = {};\n model.forEach((m) => {\n if (m.type === 'tag') {\n const tag = m as SmartSearchTag;\n const fields = tag.fields.map((f) => {\n return { value: getNormalizeTerm(f.fieldValue), condition: this.convertCondition(f.conditionValue) };\n });\n newValue[tag.tagValue] = newValue[tag.tagValue] ? (newValue[tag.tagValue] as SmartSearchModelField[]).concat(fields) : fields;\n }\n\n if (m.type === 'word') {\n const word = m as SmartSearchWord;\n newValue.words = (newValue.words || []).concat([\n {\n value: word.value,\n condition: this.convertCondition(word.conditionValue)\n }\n ]);\n }\n\n if (m.type === 'hashtag') {\n const { hashtag } = m as SmartSearchHashtag;\n newValue[hashtag] = true;\n }\n });\n\n return newValue;\n }\n}\n","// Key code constants\r\n// Available values for `KeyboardEvent.keyCode` attribute.\r\nvar KEY_CANCEL = 3;\r\nvar KEY_HELP = 6;\r\nvar KEY_BACK_SPACE = 8;\r\nvar KEY_TAB = 9;\r\nvar KEY_CLEAR = 12;\r\nvar KEY_RETURN = 13;\r\nvar KEY_SHIFT = 16;\r\nvar KEY_CONTROL = 17;\r\nvar KEY_ALT = 18;\r\nvar KEY_PAUSE = 19;\r\nvar KEY_CAPS_LOCK = 20;\r\nvar KEY_ESCAPE = 27;\r\nvar KEY_SPACE = 32;\r\nvar KEY_PAGE_UP = 33;\r\nvar KEY_PAGE_DOWN = 34;\r\nvar KEY_END = 35;\r\nvar KEY_HOME = 36;\r\nvar KEY_LEFT = 37;\r\nvar KEY_UP = 38;\r\nvar KEY_RIGHT = 39;\r\nvar KEY_DOWN = 40;\r\nvar KEY_PRINTSCREEN = 44;\r\nvar KEY_INSERT = 45;\r\nvar KEY_DELETE = 46;\r\nvar KEY_0 = 48;\r\nvar KEY_1 = 49;\r\nvar KEY_2 = 50;\r\nvar KEY_3 = 51;\r\nvar KEY_4 = 52;\r\nvar KEY_5 = 53;\r\nvar KEY_6 = 54;\r\nvar KEY_7 = 55;\r\nvar KEY_8 = 56;\r\nvar KEY_9 = 57;\r\nvar KEY_A = 65;\r\nvar KEY_B = 66;\r\nvar KEY_C = 67;\r\nvar KEY_D = 68;\r\nvar KEY_E = 69;\r\nvar KEY_F = 70;\r\nvar KEY_G = 71;\r\nvar KEY_H = 72;\r\nvar KEY_I = 73;\r\nvar KEY_J = 74;\r\nvar KEY_K = 75;\r\nvar KEY_L = 76;\r\nvar KEY_M = 77;\r\nvar KEY_N = 78;\r\nvar KEY_O = 79;\r\nvar KEY_P = 80;\r\nvar KEY_Q = 81;\r\nvar KEY_R = 82;\r\nvar KEY_S = 83;\r\nvar KEY_T = 84;\r\nvar KEY_U = 85;\r\nvar KEY_V = 86;\r\nvar KEY_W = 87;\r\nvar KEY_X = 88;\r\nvar KEY_Y = 89;\r\nvar KEY_Z = 90;\r\nvar KEY_LEFT_CMD = 91;\r\nvar KEY_RIGHT_CMD = 92;\r\nvar KEY_CONTEXT_MENU = 93;\r\nvar KEY_NUMPAD0 = 96;\r\nvar KEY_NUMPAD1 = 97;\r\nvar KEY_NUMPAD2 = 98;\r\nvar KEY_NUMPAD3 = 99;\r\nvar KEY_NUMPAD4 = 100;\r\nvar KEY_NUMPAD5 = 101;\r\nvar KEY_NUMPAD6 = 102;\r\nvar KEY_NUMPAD7 = 103;\r\nvar KEY_NUMPAD8 = 104;\r\nvar KEY_NUMPAD9 = 105;\r\nvar KEY_MULTIPLY = 106;\r\nvar KEY_ADD = 107;\r\nvar KEY_SUBTRACT = 109;\r\nvar KEY_DECIMAL = 110;\r\nvar KEY_DIVIDE = 111;\r\nvar KEY_F1 = 112;\r\nvar KEY_F2 = 113;\r\nvar KEY_F3 = 114;\r\nvar KEY_F4 = 115;\r\nvar KEY_F5 = 116;\r\nvar KEY_F6 = 117;\r\nvar KEY_F7 = 118;\r\nvar KEY_F8 = 119;\r\nvar KEY_F9 = 120;\r\nvar KEY_F10 = 121;\r\nvar KEY_F11 = 122;\r\nvar KEY_F12 = 123;\r\nvar KEY_F13 = 124;\r\nvar KEY_F14 = 125;\r\nvar KEY_F15 = 126;\r\nvar KEY_F16 = 127;\r\nvar KEY_F17 = 128;\r\nvar KEY_F18 = 129;\r\nvar KEY_F19 = 130;\r\nvar KEY_F20 = 131;\r\nvar KEY_F21 = 132;\r\nvar KEY_F22 = 133;\r\nvar KEY_F23 = 134;\r\nvar KEY_F24 = 135;\r\nvar KEY_NUM_LOCK = 144;\r\nvar KEY_SCROLL_LOCK = 145;\r\nvar KEY_SEMICOLON = 186;\r\nvar KEY_EQUALS = 187;\r\nvar KEY_COMMA = 188;\r\nvar KEY_DASH = 189;\r\nvar KEY_PERIOD = 190;\r\nvar KEY_SLASH = 191;\r\nvar KEY_BACK_QUOTE = 192;\r\nvar KEY_OPEN_BRACKET = 219;\r\nvar KEY_BACK_SLASH = 220;\r\nvar KEY_CLOSE_BRACKET = 221;\r\nvar KEY_QUOTE = 222;\r\n// Key code constants specific to firefox only.\r\nvar KEY_FIREFOX_ENTER = 14;\r\nvar KEY_FIREFOX_SEMICOLON = 59;\r\nvar KEY_FIREFOX_EQUALS = 61;\r\nvar KEY_FIREFOX_SEPARATOR = 108;\r\nvar KEY_FIREFOX_META = 224;\r\n// Key values constants\r\n// Available values for `KeyboardEvent.key` attribute.\r\nvar VALUE_CANCEL = 'Cancel';\r\nvar VALUE_HELP = 'Help';\r\nvar VALUE_BACK_SPACE = 'Backspace';\r\nvar VALUE_TAB = 'Tab';\r\nvar VALUE_CLEAR = 'Clear';\r\nvar VALUE_ENTER = 'Enter';\r\nvar VALUE_RETURN = 'Enter';\r\nvar VALUE_SHIFT = 'Shift';\r\nvar VALUE_CONTROL = 'Control';\r\nvar VALUE_ALT = 'Alt';\r\nvar VALUE_PAUSE = 'Pause';\r\nvar VALUE_CAPS_LOCK = 'CapsLock';\r\nvar VALUE_ESCAPE = 'Escape';\r\nvar VALUE_SPACE = ' ';\r\nvar VALUE_PAGE_UP = 'PageUp';\r\nvar VALUE_PAGE_DOWN = 'PageDown';\r\nvar VALUE_END = 'End';\r\nvar VALUE_HOME = 'Home';\r\nvar VALUE_LEFT = 'ArrowLeft';\r\nvar VALUE_UP = 'ArrowUp';\r\nvar VALUE_RIGHT = 'ArrowRight';\r\nvar VALUE_DOWN = 'ArrowDown';\r\nvar VALUE_PRINTSCREEN = 'PrintScreen';\r\nvar VALUE_INSERT = 'Insert';\r\nvar VALUE_DELETE = 'Delete';\r\nvar VALUE_0 = '0';\r\nvar VALUE_1 = '1';\r\nvar VALUE_2 = '2';\r\nvar VALUE_3 = '3';\r\nvar VALUE_4 = '4';\r\nvar VALUE_5 = '5';\r\nvar VALUE_6 = '6';\r\nvar VALUE_7 = '7';\r\nvar VALUE_8 = '8';\r\nvar VALUE_9 = '9';\r\nvar VALUE_A = 'a';\r\nvar VALUE_B = 'b';\r\nvar VALUE_C = 'c';\r\nvar VALUE_D = 'd';\r\nvar VALUE_E = 'e';\r\nvar VALUE_F = 'f';\r\nvar VALUE_G = 'g';\r\nvar VALUE_H = 'h';\r\nvar VALUE_I = 'i';\r\nvar VALUE_J = 'j';\r\nvar VALUE_K = 'k';\r\nvar VALUE_L = 'l';\r\nvar VALUE_M = 'm';\r\nvar VALUE_N = 'n';\r\nvar VALUE_O = 'o';\r\nvar VALUE_P = 'p';\r\nvar VALUE_Q = 'q';\r\nvar VALUE_R = 'r';\r\nvar VALUE_S = 's';\r\nvar VALUE_T = 't';\r\nvar VALUE_U = 'u';\r\nvar VALUE_V = 'v';\r\nvar VALUE_W = 'w';\r\nvar VALUE_X = 'x';\r\nvar VALUE_Y = 'y';\r\nvar VALUE_Z = 'z';\r\nvar VALUE_META = 'Meta';\r\nvar VALUE_LEFT_CMD = 'Meta';\r\nvar VALUE_RIGHT_CMD = 'Meta';\r\nvar VALUE_CONTEXT_MENU = 'ContextMenu';\r\nvar VALUE_NUMPAD0 = '0';\r\nvar VALUE_NUMPAD1 = '1';\r\nvar VALUE_NUMPAD2 = '2';\r\nvar VALUE_NUMPAD3 = '3';\r\nvar VALUE_NUMPAD4 = '4';\r\nvar VALUE_NUMPAD5 = '5';\r\nvar VALUE_NUMPAD6 = '6';\r\nvar VALUE_NUMPAD7 = '7';\r\nvar VALUE_NUMPAD8 = '8';\r\nvar VALUE_NUMPAD9 = '9';\r\nvar VALUE_MULTIPLY = '*';\r\nvar VALUE_ADD = '+';\r\nvar VALUE_SUBTRACT = '-';\r\nvar VALUE_DECIMAL = '.';\r\nvar VALUE_DIVIDE = '/';\r\nvar VALUE_F1 = 'F1';\r\nvar VALUE_F2 = 'F2';\r\nvar VALUE_F3 = 'F3';\r\nvar VALUE_F4 = 'F4';\r\nvar VALUE_F5 = 'F5';\r\nvar VALUE_F6 = 'F6';\r\nvar VALUE_F7 = 'F7';\r\nvar VALUE_F8 = 'F8';\r\nvar VALUE_F9 = 'F9';\r\nvar VALUE_F10 = 'F10';\r\nvar VALUE_F11 = 'F11';\r\nvar VALUE_F12 = 'F12';\r\nvar VALUE_F13 = 'F13';\r\nvar VALUE_F14 = 'F14';\r\nvar VALUE_F15 = 'F15';\r\nvar VALUE_F16 = 'F16';\r\nvar VALUE_F17 = 'F17';\r\nvar VALUE_F18 = 'F18';\r\nvar VALUE_F19 = 'F19';\r\nvar VALUE_F20 = 'F20';\r\nvar VALUE_F21 = 'F21';\r\nvar VALUE_F22 = 'F22';\r\nvar VALUE_F23 = 'F23';\r\nvar VALUE_F24 = 'F24';\r\nvar VALUE_NUM_LOCK = 'NumLock';\r\nvar VALUE_SCROLL_LOCK = 'ScrollLock';\r\nvar VALUE_SEMICOLON = ';';\r\nvar VALUE_EQUALS = '=';\r\nvar VALUE_COMMA = ',';\r\nvar VALUE_DASH = '-';\r\nvar VALUE_PERIOD = '.';\r\nvar VALUE_SLASH = '/';\r\nvar VALUE_BACK_QUOTE = '`';\r\nvar VALUE_OPEN_BRACKET = '[';\r\nvar VALUE_BACK_SLASH = '\\\\';\r\nvar VALUE_CLOSE_BRACKET = ']';\r\nvar VALUE_QUOTE = \"'\";\r\n// Key code constants\r\n// Available values for `KeyboardEvent.code` attribute.\r\nvar CODE_UNIDENTIFIED = 'Unidentified';\r\nvar CODE_ESCAPE = 'Escape';\r\nvar CODE_MINUS = 'Minus';\r\nvar CODE_DASH = 'Minus';\r\nvar CODE_EQUALS = 'Equal';\r\nvar CODE_BACK_SPACE = 'Backspace';\r\nvar CODE_TAB = 'Tab';\r\nvar CODE_ENTER = 'Enter';\r\nvar CODE_RETURN = 'Enter';\r\nvar CODE_SHIFT_LEFT = 'ShiftLeft';\r\nvar CODE_SHIFT_RIGHT = 'ShiftRight';\r\nvar CODE_CONTROL_LEFT = 'ControlLeft';\r\nvar CODE_CONTROL_RIGHT = 'ControlRight';\r\nvar CODE_ALT_LEFT = 'AltLeft';\r\nvar CODE_ALT_RIGHT = 'AltRight';\r\nvar CODE_PAUSE = 'Pause';\r\nvar CODE_CAPS_LOCK = 'CapsLock';\r\nvar CODE_SPACE = 'Space';\r\nvar CODE_PAGE_UP = 'PageUp';\r\nvar CODE_PAGE_DOWN = 'PageDown';\r\nvar CODE_END = 'End';\r\nvar CODE_HOME = 'Home';\r\nvar CODE_LEFT = 'ArrowLeft';\r\nvar CODE_UP = 'ArrowUp';\r\nvar CODE_RIGHT = 'ArrowRight';\r\nvar CODE_DOWN = 'ArrowDown';\r\nvar CODE_PRINTSCREEN = 'PrintScreen';\r\nvar CODE_INSERT = 'Insert';\r\nvar CODE_DELETE = 'Delete';\r\nvar CODE_0 = 'Digit0';\r\nvar CODE_1 = 'Digit1';\r\nvar CODE_2 = 'Digit2';\r\nvar CODE_3 = 'Digit3';\r\nvar CODE_4 = 'Digit4';\r\nvar CODE_5 = 'Digit5';\r\nvar CODE_6 = 'Digit6';\r\nvar CODE_7 = 'Digit7';\r\nvar CODE_8 = 'Digit8';\r\nvar CODE_9 = 'Digit9';\r\nvar CODE_A = 'KeyA';\r\nvar CODE_B = 'KeyB';\r\nvar CODE_C = 'KeyC';\r\nvar CODE_D = 'KeyD';\r\nvar CODE_E = 'KeyE';\r\nvar CODE_F = 'KeyF';\r\nvar CODE_G = 'KeyG';\r\nvar CODE_H = 'KeyH';\r\nvar CODE_I = 'KeyI';\r\nvar CODE_J = 'KeyJ';\r\nvar CODE_K = 'KeyK';\r\nvar CODE_L = 'KeyL';\r\nvar CODE_M = 'KeyM';\r\nvar CODE_N = 'KeyN';\r\nvar CODE_O = 'KeyO';\r\nvar CODE_P = 'KeyP';\r\nvar CODE_Q = 'KeyQ';\r\nvar CODE_R = 'KeyR';\r\nvar CODE_S = 'KeyS';\r\nvar CODE_T = 'KeyT';\r\nvar CODE_U = 'KeyU';\r\nvar CODE_V = 'KeyV';\r\nvar CODE_W = 'KeyW';\r\nvar CODE_X = 'KeyX';\r\nvar CODE_Y = 'KeyY';\r\nvar CODE_Z = 'KeyZ';\r\nvar CODE_META_LEFT = 'MetaLeft';\r\nvar CODE_OS_LEFT = 'OSLeft';\r\nvar CODE_META_RIGHT = 'MetaRight';\r\nvar CODE_OS_RIGHT = 'OSRight';\r\nvar CODE_CONTEXT_MENU = 'ContextMenu';\r\nvar CODE_NUMPAD0 = 'Numpad0';\r\nvar CODE_NUMPAD1 = 'Numpad1';\r\nvar CODE_NUMPAD2 = 'Numpad2';\r\nvar CODE_NUMPAD3 = 'Numpad3';\r\nvar CODE_NUMPAD4 = 'Numpad4';\r\nvar CODE_NUMPAD5 = 'Numpad5';\r\nvar CODE_NUMPAD6 = 'Numpad6';\r\nvar CODE_NUMPAD7 = 'Numpad7';\r\nvar CODE_NUMPAD8 = 'Numpad8';\r\nvar CODE_NUMPAD9 = 'Numpad9';\r\nvar CODE_NUMPAD_MULTIPLY = 'NumpadMultiply';\r\nvar CODE_NUMPAD_ADD = 'NumpadAdd';\r\nvar CODE_NUMPAD_SUBTRACT = 'NumpadSubtract';\r\nvar CODE_NUMPAD_DECIMAL = 'NumpadDecimal';\r\nvar CODE_NUMPAD_DIVIDE = 'NumpadDivide';\r\nvar CODE_NUMPAD_ENTER = 'NumpadEnter';\r\nvar CODE_F1 = 'F1';\r\nvar CODE_F2 = 'F2';\r\nvar CODE_F3 = 'F3';\r\nvar CODE_F4 = 'F4';\r\nvar CODE_F5 = 'F5';\r\nvar CODE_F6 = 'F6';\r\nvar CODE_F7 = 'F7';\r\nvar CODE_F8 = 'F8';\r\nvar CODE_F9 = 'F9';\r\nvar CODE_F10 = 'F10';\r\nvar CODE_F11 = 'F11';\r\nvar CODE_F12 = 'F12';\r\nvar CODE_F13 = 'F13';\r\nvar CODE_F14 = 'F14';\r\nvar CODE_F15 = 'F15';\r\nvar CODE_F16 = 'F16';\r\nvar CODE_F17 = 'F17';\r\nvar CODE_F18 = 'F18';\r\nvar CODE_F19 = 'F19';\r\nvar CODE_F20 = 'F20';\r\nvar CODE_F21 = 'F21';\r\nvar CODE_F22 = 'F22';\r\nvar CODE_F23 = 'F23';\r\nvar CODE_F24 = 'F24';\r\nvar CODE_NUM_LOCK = 'NumLock';\r\nvar CODE_SCROLL_LOCK = 'ScrollLock';\r\nvar CODE_SEMICOLON = 'Semicolon';\r\nvar CODE_COMMA = 'Comma';\r\nvar CODE_PERIOD = 'Period';\r\nvar CODE_SLASH = 'Slash';\r\nvar CODE_BACK_QUOTE = 'Backquote';\r\nvar CODE_OPEN_BRACKET = 'BracketLeft';\r\nvar CODE_BACK_SLASH = 'Backslash';\r\nvar CODE_CLOSE_BRACKET = 'BracketRight';\r\nvar CODE_QUOTE = 'Quote';\n\nexport { CODE_0, CODE_1, CODE_2, CODE_3, CODE_4, CODE_5, CODE_6, CODE_7, CODE_8, CODE_9, CODE_A, CODE_ALT_LEFT, CODE_ALT_RIGHT, CODE_B, CODE_BACK_QUOTE, CODE_BACK_SLASH, CODE_BACK_SPACE, CODE_C, CODE_CAPS_LOCK, CODE_CLOSE_BRACKET, CODE_COMMA, CODE_CONTEXT_MENU, CODE_CONTROL_LEFT, CODE_CONTROL_RIGHT, CODE_D, CODE_DASH, CODE_DELETE, CODE_DOWN, CODE_E, CODE_END, CODE_ENTER, CODE_EQUALS, CODE_ESCAPE, CODE_F, CODE_F1, CODE_F10, CODE_F11, CODE_F12, CODE_F13, CODE_F14, CODE_F15, CODE_F16, CODE_F17, CODE_F18, CODE_F19, CODE_F2, CODE_F20, CODE_F21, CODE_F22, CODE_F23, CODE_F24, CODE_F3, CODE_F4, CODE_F5, CODE_F6, CODE_F7, CODE_F8, CODE_F9, CODE_G, CODE_H, CODE_HOME, CODE_I, CODE_INSERT, CODE_J, CODE_K, CODE_L, CODE_LEFT, CODE_M, CODE_META_LEFT, CODE_META_RIGHT, CODE_MINUS, CODE_N, CODE_NUMPAD0, CODE_NUMPAD1, CODE_NUMPAD2, CODE_NUMPAD3, CODE_NUMPAD4, CODE_NUMPAD5, CODE_NUMPAD6, CODE_NUMPAD7, CODE_NUMPAD8, CODE_NUMPAD9, CODE_NUMPAD_ADD, CODE_NUMPAD_DECIMAL, CODE_NUMPAD_DIVIDE, CODE_NUMPAD_ENTER, CODE_NUMPAD_MULTIPLY, CODE_NUMPAD_SUBTRACT, CODE_NUM_LOCK, CODE_O, CODE_OPEN_BRACKET, CODE_OS_LEFT, CODE_OS_RIGHT, CODE_P, CODE_PAGE_DOWN, CODE_PAGE_UP, CODE_PAUSE, CODE_PERIOD, CODE_PRINTSCREEN, CODE_Q, CODE_QUOTE, CODE_R, CODE_RETURN, CODE_RIGHT, CODE_S, CODE_SCROLL_LOCK, CODE_SEMICOLON, CODE_SHIFT_LEFT, CODE_SHIFT_RIGHT, CODE_SLASH, CODE_SPACE, CODE_T, CODE_TAB, CODE_U, CODE_UNIDENTIFIED, CODE_UP, CODE_V, CODE_W, CODE_X, CODE_Y, CODE_Z, KEY_0, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_A, KEY_ADD, KEY_ALT, KEY_B, KEY_BACK_QUOTE, KEY_BACK_SLASH, KEY_BACK_SPACE, KEY_C, KEY_CANCEL, KEY_CAPS_LOCK, KEY_CLEAR, KEY_CLOSE_BRACKET, KEY_COMMA, KEY_CONTEXT_MENU, KEY_CONTROL, KEY_D, KEY_DASH, KEY_DECIMAL, KEY_DELETE, KEY_DIVIDE, KEY_DOWN, KEY_E, KEY_END, KEY_EQUALS, KEY_ESCAPE, KEY_F, KEY_F1, KEY_F10, KEY_F11, KEY_F12, KEY_F13, KEY_F14, KEY_F15, KEY_F16, KEY_F17, KEY_F18, KEY_F19, KEY_F2, KEY_F20, KEY_F21, KEY_F22, KEY_F23, KEY_F24, KEY_F3, KEY_F4, KEY_F5, KEY_F6, KEY_F7, KEY_F8, KEY_F9, KEY_FIREFOX_ENTER, KEY_FIREFOX_EQUALS, KEY_FIREFOX_META, KEY_FIREFOX_SEMICOLON, KEY_FIREFOX_SEPARATOR, KEY_G, KEY_H, KEY_HELP, KEY_HOME, KEY_I, KEY_INSERT, KEY_J, KEY_K, KEY_L, KEY_LEFT, KEY_LEFT_CMD, KEY_M, KEY_MULTIPLY, KEY_N, KEY_NUMPAD0, KEY_NUMPAD1, KEY_NUMPAD2, KEY_NUMPAD3, KEY_NUMPAD4, KEY_NUMPAD5, KEY_NUMPAD6, KEY_NUMPAD7, KEY_NUMPAD8, KEY_NUMPAD9, KEY_NUM_LOCK, KEY_O, KEY_OPEN_BRACKET, KEY_P, KEY_PAGE_DOWN, KEY_PAGE_UP, KEY_PAUSE, KEY_PERIOD, KEY_PRINTSCREEN, KEY_Q, KEY_QUOTE, KEY_R, KEY_RETURN, KEY_RIGHT, KEY_RIGHT_CMD, KEY_S, KEY_SCROLL_LOCK, KEY_SEMICOLON, KEY_SHIFT, KEY_SLASH, KEY_SPACE, KEY_SUBTRACT, KEY_T, KEY_TAB, KEY_U, KEY_UP, KEY_V, KEY_W, KEY_X, KEY_Y, KEY_Z, VALUE_0, VALUE_1, VALUE_2, VALUE_3, VALUE_4, VALUE_5, VALUE_6, VALUE_7, VALUE_8, VALUE_9, VALUE_A, VALUE_ADD, VALUE_ALT, VALUE_B, VALUE_BACK_QUOTE, VALUE_BACK_SLASH, VALUE_BACK_SPACE, VALUE_C, VALUE_CANCEL, VALUE_CAPS_LOCK, VALUE_CLEAR, VALUE_CLOSE_BRACKET, VALUE_COMMA, VALUE_CONTEXT_MENU, VALUE_CONTROL, VALUE_D, VALUE_DASH, VALUE_DECIMAL, VALUE_DELETE, VALUE_DIVIDE, VALUE_DOWN, VALUE_E, VALUE_END, VALUE_ENTER, VALUE_EQUALS, VALUE_ESCAPE, VALUE_F, VALUE_F1, VALUE_F10, VALUE_F11, VALUE_F12, VALUE_F13, VALUE_F14, VALUE_F15, VALUE_F16, VALUE_F17, VALUE_F18, VALUE_F19, VALUE_F2, VALUE_F20, VALUE_F21, VALUE_F22, VALUE_F23, VALUE_F24, VALUE_F3, VALUE_F4, VALUE_F5, VALUE_F6, VALUE_F7, VALUE_F8, VALUE_F9, VALUE_G, VALUE_H, VALUE_HELP, VALUE_HOME, VALUE_I, VALUE_INSERT, VALUE_J, VALUE_K, VALUE_L, VALUE_LEFT, VALUE_LEFT_CMD, VALUE_M, VALUE_META, VALUE_MULTIPLY, VALUE_N, VALUE_NUMPAD0, VALUE_NUMPAD1, VALUE_NUMPAD2, VALUE_NUMPAD3, VALUE_NUMPAD4, VALUE_NUMPAD5, VALUE_NUMPAD6, VALUE_NUMPAD7, VALUE_NUMPAD8, VALUE_NUMPAD9, VALUE_NUM_LOCK, VALUE_O, VALUE_OPEN_BRACKET, VALUE_P, VALUE_PAGE_DOWN, VALUE_PAGE_UP, VALUE_PAUSE, VALUE_PERIOD, VALUE_PRINTSCREEN, VALUE_Q, VALUE_QUOTE, VALUE_R, VALUE_RETURN, VALUE_RIGHT, VALUE_RIGHT_CMD, VALUE_S, VALUE_SCROLL_LOCK, VALUE_SEMICOLON, VALUE_SHIFT, VALUE_SLASH, VALUE_SPACE, VALUE_SUBTRACT, VALUE_T, VALUE_TAB, VALUE_U, VALUE_UP, VALUE_V, VALUE_W, VALUE_X, VALUE_Y, VALUE_Z };\n","import { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nexport function debounce(durationSelector) {\n return operate((source, subscriber) => {\n let hasValue = false;\n let lastValue = null;\n let durationSubscriber = null;\n const emit = () => {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n durationSubscriber = null;\n if (hasValue) {\n hasValue = false;\n const value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n hasValue = true;\n lastValue = value;\n durationSubscriber = createOperatorSubscriber(subscriber, emit, noop);\n innerFrom(durationSelector(value)).subscribe(durationSubscriber);\n }, () => {\n emit();\n subscriber.complete();\n }, undefined, () => {\n lastValue = durationSubscriber = null;\n }));\n });\n}\n","import { Renderer2 } from '@angular/core';\nimport { FIELD_CLASS, PLAIN_CLASS, SMART_SEARCH_CLASSES, TAG_CLASS } from './constants';\nimport { SmartSearchHashtag, SmartSearchKeywordType, SmartSearchTag, SmartSearchWord } from './models';\n\nexport class HighlightHelper {\n constructor(private renderer2: Renderer2) {}\n\n /**\n * Add a class to range of elements\n * @param {Element[]} range\n * @param {string} classValue\n */\n public addClassInRange(range: Element[], classValue: string): void {\n range.forEach((el) => {\n if (el) this.renderer2.addClass(el, classValue);\n });\n }\n\n /**\n * Remove a class to range of elements\n * @param {Element[]} range\n * @param {string} classValue\n */\n public removeClassInRange(range: Element[], classValue: string): void {\n range.forEach((el) => {\n if (el) this.renderer2.removeClass(el, classValue);\n });\n }\n\n public removeSmartSearchClassesInRange(range: Element[]): void {\n range.forEach((el) => {\n SMART_SEARCH_CLASSES.forEach((classValue) => {\n if (el) this.renderer2.removeClass(el, classValue);\n });\n });\n }\n\n /* eslint-disable no-case-declarations */\n public highlightNodes(models: SmartSearchKeywordType[] = []): void {\n for (const model of models) {\n switch (model.type) {\n case 'hashtag':\n const h = model as SmartSearchHashtag;\n this.addClassInRange(h.elements, TAG_CLASS);\n break;\n case 'tag':\n const t = model as SmartSearchTag;\n this.addClassInRange(t.tagElements, TAG_CLASS);\n t.fields.forEach((field) => this.addClassInRange(field.fieldElements, FIELD_CLASS));\n break;\n case 'word':\n const w = model as SmartSearchWord;\n this.addClassInRange(w.elements, PLAIN_CLASS);\n break;\n }\n }\n }\n /* eslint-enable no-case-declarations */\n\n public highlightWords(models: SmartSearchKeywordType[] = []): void {\n models.forEach((model) => {\n if (model.type === 'word') {\n this.addClassInRange(model.elements, PLAIN_CLASS);\n }\n });\n }\n\n /**\n * Replace style class to new in range\n * @param {Element[]} range source elements\n * @param {string} classValue source class\n */\n public replaceClassInRange(range: Element[], classValue: string): void {\n range.forEach((el) => {\n el.className = classValue;\n });\n }\n}\n","import { Directive, Input, OnInit, TemplateRef } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ModelTemplate, SmartSearchState } from './models';\n\n@Directive({\n selector: '[smartSearchKeyword]',\n exportAs: 'smartSearchKeyword'\n})\nexport class SmartSearchKeywordDirective implements OnInit {\n @Input() tag: string;\n @Input() filterByProp?: string;\n @Input() items: (state: SmartSearchState) => Observable;\n @Input() itemFormatter: (item: any) => string;\n @Input() isMultiple?: boolean;\n @Input() isSequenceMultiple?: boolean;\n @Input() addGroupBrackets?: boolean;\n @Input() enableCacheStorage?: boolean;\n\n constructor(public template: TemplateRef) {}\n\n ngOnInit(): void {\n if (!this.tag) {\n throw new Error('Tag is empty!');\n }\n\n if (!this.items) {\n throw new Error('Items is empty!');\n }\n }\n\n toModelTemplate(): ModelTemplate {\n return {\n tag: this.tag,\n filterByProp: this.filterByProp,\n items: this.items,\n template: this.template,\n itemFormatter: this.itemFormatter,\n isMultiple: this.isMultiple,\n isSequenceMultiple: this.isSequenceMultiple,\n addGroupBrackets: this.addGroupBrackets,\n enableCacheStorage: this.enableCacheStorage\n };\n }\n}\n","import { CONDITION_CHARS, SmartSearchCharacters } from './constants';\nimport { ModelTemplateInternal, SmartSearchKeywordType, SmartSearchTag, SmartSearchTagField, SmartSearchWord } from './models';\n\nexport class SmartSearchParser {\n private static parseSingleWords(source: string, elements: Element[]): SmartSearchWord[] {\n const conditionChars = `(${[...CONDITION_CHARS.values()].join('|')})`;\n\n const wordModels: SmartSearchWord[] = [];\n\n const singleWordReg = new RegExp(conditionChars + '?(\\\\S+,?)', 'g');\n for (let match = singleWordReg.exec(source); match; match = singleWordReg.exec(source)) {\n const word = {\n type: 'word',\n value: match[2],\n conditionElements: match[1] ? elements.slice(match.index, match.index + match[1].length) : [],\n conditionValue: match[1],\n elements: [],\n isGrouped: true\n } as SmartSearchWord;\n\n word.elements = word.conditionElements.concat(\n elements.slice(match.index + word.conditionElements.length, match.index + word.value.length)\n );\n\n wordModels.push(word);\n }\n\n return wordModels;\n }\n\n private static parseGroupWords(source: string, elements: Element[]): SmartSearchWord[] {\n const conditionChars = `(${[...CONDITION_CHARS.values()].join('|')})`;\n\n const group = new RegExp(conditionChars + '?{([\\\\s\\\\S]+?)}', 'g');\n\n const allMatched: RegExpExecArray[] = [];\n for (let match = group.exec(source); match; match = group.exec(source)) {\n allMatched.push(match);\n }\n\n if (allMatched.length === 0) {\n return this.parseSingleWords(source, elements);\n }\n\n const wordModels: SmartSearchWord[] = [];\n\n for (let index = 0; index < allMatched.length; index++) {\n const match = allMatched[index];\n // first match and has left part\n if (match.index > 0 && wordModels.length === 0) {\n const wordLeftPart = source.substring(0, match.index - 1);\n const wordPartElements = elements.slice(0, wordLeftPart.length);\n\n wordModels.push(...this.parseSingleWords(wordLeftPart, wordPartElements));\n }\n\n const word = {\n type: 'word',\n value: match[2],\n conditionElements: match[1] ? elements.slice(match.index, match.index + match[1].length) : [],\n conditionValue: match[1],\n elements: [],\n isGrouped: true\n } as SmartSearchWord;\n\n word.elements = word.conditionElements.concat(\n elements.slice(match.index + word.conditionElements.length, match.index + word.value.length)\n );\n\n wordModels.push(word);\n\n // parse right part before next match or end line\n const nextMatch = allMatched[index + 1];\n const wordRightPart = source.substring(match.index + match[0].length, nextMatch ? nextMatch.index - 1 : source.length);\n const wordRightPartElements = elements.slice(match.index + match[0].length, nextMatch ? nextMatch.index - 1 : source.length);\n wordModels.push(...this.parseSingleWords(wordRightPart, wordRightPartElements));\n }\n\n return wordModels;\n }\n\n public static parseWords(source: string, elements: Element[]): SmartSearchWord[] {\n return this.parseGroupWords(source, elements);\n }\n\n public static parseTag(model: ModelTemplateInternal, source: string, elements: Element[]): SmartSearchKeywordType[] {\n const tagLower = model.tagFormatter(model).toLocaleLowerCase();\n\n const keywords: SmartSearchKeywordType[] = [];\n\n const searchTag = {\n type: model.isHashtag ? 'hashtag' : 'tag',\n tagElements: elements.slice(0, tagLower.length),\n tagValue: model.tag,\n tagTemplate: model,\n elements: [],\n fields: []\n } as SmartSearchTag;\n\n keywords.push(searchTag);\n\n const valueSource = source.substring(tagLower.length);\n const valueElements = elements.slice(tagLower.length);\n\n const getField = (fieldValue: string, match: RegExpExecArray): SmartSearchTagField => {\n const conditionIndex = valueSource.indexOf(match[1], match.index);\n const field = {\n fieldValue: fieldValue,\n conditionValue: match[1],\n conditionElements: match[1] ? valueElements.slice(conditionIndex, conditionIndex + match[1].length) : [],\n isGrouped: !!match[3]\n } as SmartSearchTagField;\n\n const fieldIndex = valueSource.indexOf(fieldValue, match.index);\n field.fieldElements = valueElements.slice(fieldIndex, fieldIndex + fieldValue.length);\n field.elements = field.conditionElements.concat(field.fieldElements);\n field.value = match[0].trim();\n\n return field;\n };\n\n const conditionChars = `(${[...CONDITION_CHARS.values()].join('|')})`;\n\n if (model.isMultiple === true || model.isSequenceMultiple === true) {\n const group = new RegExp(conditionChars + '?({([\\\\s\\\\S]+?)}|\\\\S+),?', 'g');\n\n for (let match = group.exec(valueSource); match; match = group.exec(valueSource)) {\n let fieldValue = match[3] || match[2];\n\n const hasEndComma = match[0][match[0].length - 1].endsWith(SmartSearchCharacters.SEQUENCE);\n if (fieldValue.endsWith(SmartSearchCharacters.SEQUENCE)) {\n // substring with remove last \"comma\"\n fieldValue = fieldValue.slice(0, -1);\n }\n const field = getField(fieldValue, match);\n\n searchTag.fields.push(field);\n\n searchTag.completed = !hasEndComma;\n\n // break current match and parse as word\n if (!hasEndComma) {\n const wordPart = valueSource.substring(match.index + match[0].length);\n if (wordPart) {\n const wordElements = valueElements.slice(match.index + match[0].length);\n keywords.push(...this.parseWords(wordPart, wordElements));\n }\n break;\n }\n }\n } else {\n const firstRegex = new RegExp('^\\\\s*' + conditionChars + '?({([\\\\s\\\\S]+?)}|\\\\S+)');\n const firstMatch = firstRegex.exec(valueSource);\n if (firstMatch) {\n const field = getField(firstMatch[3] || firstMatch[2], firstMatch);\n searchTag.fields = [field];\n\n searchTag.completed = true;\n\n const wordPart = valueSource.substring(firstMatch[0].length);\n if (wordPart) {\n const wordElements = valueElements.slice(firstMatch[0].length);\n keywords.push(...this.parseWords(wordPart, wordElements));\n }\n }\n }\n\n searchTag.elements = searchTag.tagElements.concat(...searchTag.fields.map(f => f.elements));\n\n return keywords;\n }\n}\n","
\n\n
\n\n
\n\n
\n\n
\n {{ placeholder }}\n
\n\n
\n\n \n\n \n\n \n\n
\n\n
\n\n
\n\n
\n \n
\n\n 0\"\n title=\"Clear\"\n icon=\"ico ico-Delete-text mr-0 px-2\"\n [isCtrl]=\"true\"\n [type]=\"'dark'\"\n [size]=\"size\"\n [disabled]=\"disabled\"\n [ngClass]=\"size ? '-' + size : ''\"\n [customClasses]=\"'form-control_clear-btn' + (size ? ' -' + size : '')\"\n (click)=\"handleClear()\">\n \n\n
\n\n
\n\n
\n
\n\n \n\n
\n \n
\n\n
\n\n
\n\n
\n\n \n \n \n\n
\n\n
\n","import { DOCUMENT } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostListener,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n Renderer2,\n SimpleChanges,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ActivatedRoute, NavigationExtras, Router } from '@angular/router';\nimport { NgbDropdown, NgbDropdownMenu } from '@ng-bootstrap/ng-bootstrap';\nimport { PlacementArray } from '@ng-bootstrap/ng-bootstrap/util/positioning';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { CODE_DOWN, CODE_END, CODE_ENTER, CODE_ESCAPE, CODE_HOME, CODE_LEFT, CODE_RIGHT, CODE_UP, CODE_Z } from 'keycode-js';\nimport { assign, debounce, isNil, keyBy } from 'lodash';\nimport { asyncScheduler, BehaviorSubject, combineLatest, fromEvent, merge, Observable, of, scheduled, Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter, map, debounce as rxDebounce, shareReplay } from 'rxjs/operators';\nimport { MbsSize } from '../utils';\nimport { INVALID_CLASS, SmartSearchCharacters, TAG_CLASS } from './constants';\nimport { HighlightHelper } from './highlight-helper';\nimport {\n ActionType,\n CachedValueType,\n ModelTemplate,\n ModelTemplateInternal,\n SmartSearchHashtag,\n SmartSearchKeywordType,\n SmartSearchModel,\n SmartSearchModelField,\n SmartSearchState,\n SmartSearchTag,\n SmartSearchValidationState,\n SmartSearchWord\n} from './models';\nimport { SmartSearchConfig } from './smart-search-config';\nimport { SmartSearchKeywordDirective } from './smart-search-keyword.directive';\nimport { SmartSearchParser } from './smart-search-parser';\nimport { getClearTerm, getNormalizeTerm } from './utils';\n\nexport const ADVANCED_SEARCH_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n // eslint-disable-next-line no-use-before-define\n useExisting: forwardRef(() => SmartSearchComponent),\n multi: true\n};\n\nexport const highlightHelperFactory = (renderer: Renderer2) => new HighlightHelper(renderer);\n\nexport type AutocompleteDataType = {\n template?: TemplateRef;\n value?: string | number;\n formatter: (value: any) => string;\n isKeyword?: boolean;\n actionType?: ActionType;\n addGroupBrackets?: boolean;\n skipSpaceAfterValue?: boolean;\n};\n\nconst bottomLeftStr = 'bottom-left';\n\n@UntilDestroy()\n@Component({\n selector: 'mbs-smart-search',\n templateUrl: './smart-search.component.html',\n providers: [\n ADVANCED_SEARCH_VALUE_ACCESSOR,\n {\n provide: HighlightHelper,\n useFactory: highlightHelperFactory,\n deps: [Renderer2]\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SmartSearchComponent implements OnInit, OnDestroy, ControlValueAccessor, AfterContentInit, OnChanges, AfterViewInit {\n @ViewChild('ngbDropdownMenuRef', { static: true, read: NgbDropdownMenu }) ngbDropdownMenu: NgbDropdownMenu;\n @ViewChild('ngbDropdownMenuFormRef', { static: true, read: NgbDropdownMenu }) ngbDropdownMenuForm: NgbDropdownMenu;\n @ViewChild('smartSearch', { static: true, read: ElementRef }) smartSearch: ElementRef;\n @ViewChild('formControlRef', { static: true, read: ElementRef }) formControlRef: ElementRef;\n @ViewChild('toggleButtonRef', { static: false, read: ElementRef }) toggleButtonRef: ElementRef;\n\n /**\n * Customization keyword templates\n */\n @ContentChildren(SmartSearchKeywordDirective, { descendants: false }) tagTemplates: QueryList;\n\n @Input() disabled = false;\n\n /**\n * Debounce time handle events\n * Affected:\n * * input\n * * keyup\n */\n @Input() debounceTime = 300;\n\n /**\n * dropdown height value.\n */\n @Input() dropdownHeight: string | number;\n\n /**\n * `true` - read and edit url query\n * `false` - ignore url query\n */\n @Input() accessUrlQuery = true;\n\n /**\n * if `true` - search box will NOT include tags that already presented in search field into dropdown.\n * If user write duplicate tag manually it will be ignored;\n */\n @Input() disableMultiTag = true;\n\n /**\n * Search icon class\n */\n @Input() searchIcon = 'ico ico-Search';\n @Input() public size: MbsSize.xxs | MbsSize.xs | MbsSize.sm | MbsSize.md | MbsSize.lg = null;\n @Input() needClearOnDestroy = false;\n @Input() data: ModelTemplate[] = [];\n @Input() searchFormTemplate: TemplateRef;\n @Input() placeholder = 'Enter search request';\n @Input() updateOn: 'blur' | 'change' = 'blur';\n @Input() placementNgbDropdown: PlacementArray = bottomLeftStr;\n @Input() placementNgbDropdownForm: PlacementArray = bottomLeftStr;\n @Input() manualRouteHandling = false;\n\n /**\n * Loading state when autocomplete items fetching\n */\n public searching$ = new BehaviorSubject(false);\n\n /**\n * Clear loading external state\n */\n public loading$ = new BehaviorSubject(false);\n\n /**\n * Fire on `keypress.enter` and click `button[name=\"smartSearch-search\"]`\n */\n @Output() search = new EventEmitter();\n @Output() searchingChange = this.searching$.asObservable();\n @Output() routeChanged = new EventEmitter();\n\n public readonly MbsSize = MbsSize;\n public state: Partial = {};\n public items$ = new BehaviorSubject([]);\n public elementSelectors = {\n css: {\n input: 'mbs-smart-search_content',\n placeholder: 'mbs-smart-search_placeholder'\n }\n };\n\n /**\n * Current index for selected item in list of autocomplete\n */\n public selectedItemIndex = -1;\n\n /**\n * Show or hide\n */\n public showDropdown$: Observable;\n\n public get caretNode(): Element {\n if (!this.state || Object.keys(this.state).length === 0) return null;\n\n const caret = this.state.caretNode as Element;\n\n return this.isPreviousContentEqualGroupBracket(caret) ? caret.previousElementSibling : caret;\n }\n\n public set value(value: SmartSearchModel) {\n this.myModel = value;\n this.notifyValueChange();\n }\n\n public get value(): SmartSearchModel {\n return this.myModel;\n }\n\n public get searchContent(): string {\n return this.searchDiv.textContent;\n }\n\n public set searchContent(newTextContent: string) {\n if (newTextContent || newTextContent === '') {\n const content = this.createFragment(newTextContent, null, false);\n\n const fragment = this.doc.createDocumentFragment();\n fragment.append(...Array.from(this.searchDiv.children));\n\n this.appendChild(content);\n this.setCaretAfterNode(this.searchDiv.lastElementChild);\n this.updateState();\n this.showAutocomplete();\n this.cdr.detectChanges();\n }\n }\n\n public set modelValidationState(state: SmartSearchValidationState) {\n this.state.modelValidationState = state;\n this.cdr.markForCheck();\n }\n\n public get cachedValues(): CachedValueType[] {\n return this.cachedValueState;\n }\n\n public get isFocus(): boolean {\n return this.doc.activeElement === this.searchDiv;\n }\n\n /**\n * Autocomplete items\n */\n public get items(): AutocompleteDataType[] {\n return this.myItems;\n }\n\n public set items(value: AutocompleteDataType[]) {\n this.items$.next(value);\n this.myItems = value;\n }\n\n /**\n * Required for cancel previous request before start next\n */\n public subscription: Subscription;\n\n /**\n * Flag for parsing textContent\n */\n public hasTextContentChanges = true;\n\n public get ngbDropdownAnchorLeftStyle(): string {\n if (this.placementNgbDropdownForm === bottomLeftStr) {\n /** -1 is shift to left.\n * 4 is sum borders width **/\n return (this.formControlRef?.nativeElement.offsetWidth - this.toggleButtonRef?.nativeElement.offsetWidth - 4) * -1 + 'px';\n } else {\n return '0px';\n }\n }\n\n /**\n * callback queue\n */\n private queueOnUpdateState$ = new Subject<{ type: string; callback: () => void }>();\n private dropdownsMenus: NgbDropdownMenu[];\n private mbsSelectOpenedNgOptions: HTMLElement[] = [];\n private cachedValueState: CachedValueType[] = [];\n private myModel: SmartSearchModel;\n private myItems: AutocompleteDataType[] = [];\n private focus$: Observable;\n private onUpdateState$ = new Subject();\n private queueFocus$ = new Subject();\n private onPasteValue$ = new Subject();\n private keywordTemplates: ModelTemplateInternal[] = [];\n private history: Array = [];\n private readonly sequenceMultipleActions: AutocompleteDataType[] = [\n {\n value: SmartSearchCharacters.SEQUENCE,\n formatter: () => SmartSearchCharacters.SEQUENCE,\n actionType: ActionType.Comma\n } as AutocompleteDataType,\n {\n value: SmartSearchCharacters.SPACE,\n formatter: () => SmartSearchCharacters.SPACE,\n actionType: ActionType.Space,\n skipSpaceAfterValue: true\n } as AutocompleteDataType\n ];\n\n private get searchDiv(): HTMLDivElement {\n return this.smartSearch.nativeElement as HTMLDivElement;\n }\n\n /**\n * For prevent update model and blur after mousedown on select item\n */\n private isMouseSelectValue = false;\n\n constructor(\n private route: ActivatedRoute,\n private router: Router,\n @Inject(DOCUMENT) private doc: Document,\n private renderer2: Renderer2,\n private config: SmartSearchConfig,\n private highlight: HighlightHelper,\n private cdr: ChangeDetectorRef\n ) {}\n\n onChange: (value) => void;\n onTouched: () => void;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n tagsFormatter = (val: any) => `${String(val.tag)}:`;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n hashtagsFormatter = (val: any) => String(val.tag);\n\n @HostListener('window:resize', ['$event'])\n onResize(event: Event): void {\n if (!(event.target instanceof Window)) {\n return;\n }\n\n if (this.isOpenedDropdownMenu(this.ngbDropdownMenuForm)) {\n queueMicrotask(() => {\n this.cdr.markForCheck();\n });\n }\n }\n\n ngOnInit(): void {\n this.dropdownsMenus = [this.ngbDropdownMenu, this.ngbDropdownMenuForm];\n const callbacks: Observable<{ type: string; callback: () => void }>[] = [];\n\n callbacks.push(\n this.queueOnUpdateState$.pipe(\n filter((q) => q.type === 'handleUpdateModel'),\n rxDebounce(() => this.onUpdateState$)\n )\n );\n\n callbacks.push(\n this.queueOnUpdateState$.pipe(\n filter((q) => q.type === 'showAutocomplete'),\n rxDebounce(() => this.onUpdateState$)\n )\n );\n\n scheduled(merge(...callbacks), asyncScheduler)\n .pipe(untilDestroyed(this))\n .subscribe((q: { type: string; callback: () => void }) => q.callback());\n\n const sharePasteValue$ = this.onPasteValue$.pipe(shareReplay());\n\n scheduled(combineLatest([this.onPasteValue$, this.queueFocus$]), asyncScheduler)\n .pipe(untilDestroyed(this))\n .subscribe(([currentCaret]) => {\n this.isFocus || this.searchDiv.focus();\n this.setCaretAfterNode(currentCaret);\n });\n }\n\n ngOnDestroy(): void {\n this.needClearOnDestroy && this.handleClear();\n }\n\n ngAfterContentInit(): void {\n this.tagTemplates.changes\n .pipe(untilDestroyed(this))\n .subscribe((t: SmartSearchKeywordDirective[]) => this.mergeTagTemplates(this.data, t));\n\n this.mergeTagTemplates(this.data, this.tagTemplates.toArray());\n\n if (this.accessUrlQuery) {\n this.searchContent = this.route.snapshot.queryParamMap.get('search') || '';\n this.handleUpdateModel();\n } else {\n this.updateState();\n }\n }\n\n ngAfterViewInit(): void {\n const input$ = fromEvent(this.searchDiv, 'input');\n const keyup$ = fromEvent(this.searchDiv, 'keyup');\n const keydown$ = fromEvent(this.searchDiv, 'keydown');\n const keyupEnter$ = keyup$.pipe(filter((event) => event.key === CODE_ENTER));\n\n input$\n .pipe(\n filter((event: InputEvent) => event.inputType === 'insertText'),\n untilDestroyed(this)\n )\n .subscribe((event) => {\n this.insertText(event.data);\n this.hasTextContentChanges = true;\n this.cdr.markForCheck();\n });\n\n input$.pipe(debounceTime(this.debounceTime), untilDestroyed(this)).subscribe((event: InputEvent) => this.handleInput(event));\n\n keyup$.pipe(untilDestroyed(this)).subscribe((event) => {\n const text = this.searchDiv.textContent;\n\n if (event.key === CODE_ENTER) {\n event.preventDefault();\n event.stopPropagation();\n\n return void this.handleEnter(event);\n }\n\n if (event.key === CODE_ESCAPE) {\n return void this.searchDiv.blur();\n }\n\n if (event.key === CODE_UP || event.key === CODE_DOWN) {\n return void this.handleArrowUpDown(event);\n }\n\n if (event.code === CODE_Z && (event.ctrlKey || event.metaKey)) {\n return void queueMicrotask(() => {\n this.handleUndo();\n });\n }\n\n if (this.history[this.history.length - 1] !== text) {\n this.history.push(this.searchDiv.textContent);\n }\n });\n\n keyup$\n .pipe(\n debounceTime(this.debounceTime), // prettier\n untilDestroyed(this)\n )\n .subscribe((event) => this.handleKeyboardUp(event));\n\n keydown$\n .pipe(\n filter((event) => [CODE_UP, CODE_DOWN, CODE_ENTER].includes(event.key)),\n untilDestroyed(this)\n )\n .subscribe((event) => event.preventDefault());\n\n this.focus$ = fromEvent(this.searchDiv, 'focus');\n this.focus$.pipe(untilDestroyed(this)).subscribe(() => {\n this.updateState();\n this.showAutocomplete();\n });\n\n fromEvent(this.searchDiv, 'paste')\n .pipe(untilDestroyed(this))\n .subscribe((event) => {\n this.handlePaste(event);\n this.history.push(this.searchDiv.textContent);\n });\n\n fromEvent(this.searchDiv, 'cut')\n .pipe(untilDestroyed(this))\n .subscribe((event) => {\n this.handleCut(event);\n this.history.push(this.searchDiv.textContent);\n });\n\n this.showDropdown$ = merge(\n of(false), // prettier\n keyupEnter$.pipe(map(() => false)),\n fromEvent(this.searchDiv, 'blur').pipe(map(() => false)),\n this.items$.pipe(map((items) => items.length > 0))\n ).pipe(distinctUntilChanged());\n\n this.cdr.detectChanges();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.data?.currentValue) {\n this.mergeTagTemplates(changes.data.currentValue as ModelTemplate[], this.tagTemplates ? this.tagTemplates.toArray() : []);\n }\n }\n\n placeholderClick(event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n this.ngbDropdownMenu && !this.isOpenedDropdownMenu(this.ngbDropdownMenu) && (this.ngbDropdownMenu.dropdown as NgbDropdown).toggle();\n this.searchDiv.focus();\n }\n\n isOpenedDropdownMenu(menu: NgbDropdownMenu): boolean {\n return menu && this.isOpenedNgbDropdownMenu(menu.dropdown as NgbDropdown);\n }\n\n notifyValueChange(): void {\n if (this.onChange) {\n this.onChange(this.value);\n }\n }\n\n writeValue(model: SmartSearchModel): void {\n if (!model) return;\n\n this.myModel = model;\n\n this.searchContent = this.stringifySmartSearchModel(model);\n\n this.hasTextContentChanges = true;\n }\n\n registerOnChange(fn: (value) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n mergeTagTemplates(inputTemplates: ModelTemplate[], contentTemplates: SmartSearchKeywordDirective[]): void {\n inputTemplates = inputTemplates.map((tag) => {\n const model = tag as ModelTemplateInternal;\n\n model.tagFormatter = model.isHashtag ? this.hashtagsFormatter : this.tagsFormatter;\n\n return model;\n });\n\n if (contentTemplates && contentTemplates.length > 0) {\n const templates = inputTemplates.concat(\n contentTemplates.map((tag) => {\n const model = tag.toModelTemplate() as ModelTemplateInternal;\n\n model.tagFormatter = model.isHashtag ? this.hashtagsFormatter : this.tagsFormatter;\n\n return model;\n })\n );\n\n // unique templates\n this.keywordTemplates = Object.values(keyBy(templates, 'tag'));\n } else {\n this.keywordTemplates = Array.from(inputTemplates);\n }\n }\n\n /**\n * Used for serialization modal to string\n * @param {SmartSearchModel} model\n * @param {string} separator - The separator to use between values.\n * @return {string}\n */\n stringifySmartSearchModel(model: SmartSearchModel, separator = ','): string {\n return Object.keys(model)\n .map((key) => {\n if (key.startsWith('#')) return key;\n\n const data = model[key] as SmartSearchModelField[];\n const value = data\n .map((d) => {\n const value = d.value.split(/\\s+/).length > 1 ? `{${d.value}}` : d.value;\n\n return (d.condition || '') + value;\n })\n .join(`${separator} `);\n\n return key ? `${key}: ${value}` : value;\n })\n .join(' ');\n }\n\n handleInput(event: InputEvent): void {\n switch (event.inputType) {\n case 'deleteContentBackward':\n case 'deleteContentForward':\n this.updateContenteditableDiv();\n this.hasTextContentChanges = true;\n break;\n default:\n break;\n }\n\n this.showAutocomplete();\n\n if (this.updateOn === 'change') {\n this.handleUpdateModel();\n }\n\n this.updateState();\n }\n\n handlePaste(event: ClipboardEvent): void {\n event.preventDefault();\n\n const paste = ((event.clipboardData || window['clipboardData']) as DataTransfer).getData('text');\n const selection = this.doc.getSelection();\n const range = selection.getRangeAt(0);\n\n if (range.toString()) {\n this.removeSelectedRangeElements(range.startContainer, range.endContainer);\n }\n\n const pasteFragment = this.createFragment(paste, null, false);\n const lastChild = pasteFragment.lastChild;\n const currentCaret = this.state.caretNode;\n\n if (currentCaret?.nextSibling) {\n this.insertBefore(pasteFragment, currentCaret.nextSibling);\n } else {\n this.appendChild(pasteFragment);\n }\n\n this.hasTextContentChanges = true;\n this.cdr.detectChanges();\n this.setCaretAfterNode(lastChild);\n }\n\n handleCut(event: ClipboardEvent): void {\n event.preventDefault();\n\n const selection = this.doc.getSelection();\n\n if (selection.rangeCount === 0) {\n return;\n }\n\n const range = selection.getRangeAt(0);\n\n if (!range.toString()) {\n return;\n }\n\n this.removeSelectedRangeElements(range.startContainer, range.endContainer);\n\n this.hasTextContentChanges = true;\n }\n\n updateContenteditableDiv(): void {\n Array.from(this.searchDiv.childNodes).forEach((node) => this.removeBlockElement(node));\n\n this.updateState();\n this.setCaretAfterNode(this.state.caretIndex);\n }\n\n removeBlockElement(n: ChildNode): Element[] {\n // extract all children\n if (n instanceof HTMLDivElement) {\n const onlySpanWithText = Array.from(n.children).filter((childNode) => {\n const firstChild = childNode.childNodes.item(0);\n\n return firstChild && firstChild.nodeName === '#text';\n });\n const fragment = this.doc.createDocumentFragment();\n\n fragment.append(...onlySpanWithText);\n this.insertBefore(fragment, n);\n this.removeChild(n);\n\n return onlySpanWithText;\n } else if (!(n instanceof HTMLSpanElement) || n.childNodes.item(0) instanceof HTMLBRElement) {\n this.removeChild(n);\n }\n\n return [];\n }\n\n getValidationStateClasses(): string {\n let result = '';\n\n if (this.state.modelValidationState === SmartSearchValidationState.Valid) {\n result = `ng-state-valid`;\n }\n\n if (this.state.modelValidationState === SmartSearchValidationState.Invalid) {\n result = `ng-state-invalid`;\n }\n\n return result;\n }\n\n /**\n * After keypress and before handle the input event the searchDiv has child nodes.\n * Get textContent from selected range.\n *\n * In current implementation ignore {data} parameters\n *\n * @param {string} data\n * @return {HTMLSpanElement} last inserted element\n */\n insertText(data: string): HTMLSpanElement {\n const range: Range = this.doc.getSelection().getRangeAt(0);\n // keep endOffset before Range update by ref\n const endOffset = range.endOffset - 1;\n\n const endElement = this.getParentSpan(range.endContainer) as Element;\n const span = this.createText(endElement.textContent);\n const spanArray = span instanceof DocumentFragment ? Array.from(span.children) : [span];\n\n this.insertBefore(span, endElement);\n this.removeChild(endElement);\n\n const lastChild = spanArray[endOffset];\n\n for (let i = 0; i < this.searchDiv.children.length; i++) {\n const element = this.searchDiv.children[i];\n\n this.removeBlockElement(element);\n }\n\n this.setCaretAfterNode(lastChild);\n\n return lastChild as HTMLSpanElement;\n }\n\n handleBlur(): void {\n this.highlight.highlightWords(this.state.model);\n\n if (!this.isMouseSelectValue) {\n this.handleUpdateModel();\n }\n\n this.isMouseSelectValue = false;\n }\n\n handleClear(): void {\n const fragment = this.doc.createDocumentFragment();\n\n fragment.append(...Array.from(this.searchDiv.children));\n\n this.hasTextContentChanges = true;\n this.handleUpdateModel();\n this.handleRoute(); // may be it's not need because inside handleUpdateModel(), method handleRoute() method will be called\n }\n\n handleDrop(event: DragEvent): void {\n event.preventDefault();\n\n const paste = event.dataTransfer.getData('text');\n\n if (!paste) {\n return;\n }\n\n const pasteFragment = this.createFragment(paste, null, false);\n const lastChild = pasteFragment.lastChild;\n const currentCaret = this.state.caretNode;\n\n if (currentCaret && currentCaret.nextSibling) {\n this.insertBefore(pasteFragment, currentCaret.nextSibling);\n } else {\n this.appendChild(pasteFragment);\n }\n\n this.hasTextContentChanges = true;\n this.queueFocus$.next(null);\n\n this.setCaretAfterNode(lastChild);\n }\n\n handleArrowUpDown(event: KeyboardEvent): void {\n switch (event.key) {\n case CODE_UP:\n if (Number.isNaN(this.selectedItemIndex)) {\n this.selectedItemIndex = -1;\n }\n\n event.preventDefault();\n this.selectedItemIndex = (this.items.length + this.selectedItemIndex - 1) % this.items.length;\n break;\n case CODE_DOWN:\n if (Number.isNaN(this.selectedItemIndex)) {\n this.selectedItemIndex = this.items.length - 1;\n }\n\n event.preventDefault();\n this.selectedItemIndex = (this.selectedItemIndex + 1) % this.items.length;\n break;\n }\n\n this.cdr.detectChanges();\n }\n\n private handleUndo(): void {\n this.history.pop(); // remove last item from history\n\n const newData = this.history[this.history.length - 1] || '';\n const pasteFragment = this.createFragment(newData, null, false);\n const lastChild = pasteFragment.lastChild;\n\n this.removeAllChild();\n this.appendChild(pasteFragment);\n this.hasTextContentChanges = true;\n this.queueFocus$.next(null);\n\n this.setCaretAfterNode(lastChild);\n\n this.cdr.detectChanges();\n this.updateState();\n\n if (this.items) {\n this.showAutocomplete();\n }\n }\n\n handleKeyboardUp(event: KeyboardEvent): void {\n if (![CODE_HOME, CODE_END, CODE_LEFT, CODE_RIGHT].includes(event.key)) return;\n\n switch (event.key) {\n case CODE_HOME:\n this.setCaretToTheBeginning();\n break;\n case CODE_END:\n this.setCaretToTheEnd();\n break;\n }\n\n this.showAutocomplete();\n this.updateState();\n }\n\n handleEnter(event: KeyboardEvent): void {\n // if selected some value\n if (this.items[this.selectedItemIndex] && event instanceof KeyboardEvent) {\n this.queueFocus$.next(null);\n this.pasteValue(this.items[this.selectedItemIndex]);\n this.hasTextContentChanges = true;\n this.showAutocomplete();\n this.updateState();\n } else {\n this.handleUpdateModel();\n this.searchDiv.blur();\n }\n }\n\n handleUpdateModel(): void {\n // put to queue before update state\n this.queueOnUpdateState$.next({\n type: 'handleUpdateModel',\n callback: () => {\n this.value = this.config.convertModel(this.state.model);\n\n this.handleRoute();\n this.search.emit(this.value);\n }\n });\n\n this.updateState();\n }\n\n handleRoute(): void {\n if (!this.accessUrlQuery) return;\n\n const search = this.searchDiv.textContent || null;\n // write url query\n const opts: NavigationExtras = {\n relativeTo: this.route,\n queryParamsHandling: 'merge',\n queryParams: { search }\n };\n\n this.routeChanged.emit(search);\n\n if (this.manualRouteHandling) return;\n\n void this.router.navigate([], opts);\n }\n\n private getParentSpan(node: Node): Node {\n let span = node;\n\n let counter = 0;\n while (span && span.parentElement !== this.searchDiv) {\n span = span.parentElement;\n\n counter++;\n if (counter > 100 || !span) {\n throw new Error('Failed find parent for current node');\n }\n }\n\n return span;\n }\n\n private updateState = debounce(this.updateStateImmediate.bind(this), 100);\n\n private updateStateImmediate(): void {\n const { element, index } = this.getCaretNodeInfo();\n\n this.state.caretNode = element;\n this.state.caretIndex = index;\n\n if (this.hasTextContentChanges) {\n this.state.model = this.parseSearchContent();\n this.checkActualCachedState();\n this.highlight.highlightNodes(this.state.model);\n this.hasTextContentChanges = false;\n }\n\n this.state.usedTags = this.state.model\n .filter((m) => m.type === 'tag') // prettier\n .map((m: SmartSearchTag) => m.tagTemplate.tag.toLowerCase());\n\n const [caretPart, condition] = this.getLeftCaretPart();\n\n this.state.leftCaretValue = getNormalizeTerm(caretPart);\n this.state.leftCaretClearValue = getClearTerm(this.state.leftCaretValue);\n this.state.leftCaretCondition = condition;\n\n this.state.availableTags = this.getAvailableTags();\n\n this.onUpdateState$.next(this.state as SmartSearchState);\n }\n\n private getLeftCaretPart(): string[] {\n const available = this.getAvailable();\n\n if (!available) return ['', ''];\n\n const caret = this.caretNode;\n let leftPart = '';\n let condition: string;\n\n if (available.type === 'tag') {\n const tagModel = available as SmartSearchTag;\n const tagIndex = tagModel.tagElements.indexOf(caret);\n\n if (tagIndex > -1 && tagIndex !== tagModel.tagElements.length - 1) {\n leftPart = tagModel.tagElements\n .slice(0, tagIndex + 1)\n .map((el) => el.textContent)\n .join('');\n }\n\n let elemIndex: number;\n const field = tagModel.fields.find((f) => {\n elemIndex = f.fieldElements.indexOf(caret);\n\n return elemIndex > -1;\n });\n\n if (field) {\n condition = field.conditionValue;\n\n leftPart = field.fieldElements\n .slice(0, elemIndex + 1)\n .map((el) => el.textContent)\n .join('');\n }\n }\n\n if (available.type === 'word') {\n const word = available as SmartSearchWord;\n const wordIndex = word.elements.indexOf(caret);\n\n if (wordIndex > -1) {\n condition = word.conditionValue;\n\n leftPart = available.elements\n .slice(0, wordIndex + 1)\n .map((el) => el.textContent)\n .join('');\n }\n }\n\n if (available.type === 'hashtag') {\n const hashtag = available as SmartSearchHashtag;\n const hashIndex = hashtag.elements.indexOf(caret);\n\n if (hashIndex > -1) {\n leftPart = available.elements\n .slice(0, hashIndex + 1)\n .map((el) => el.textContent)\n .join('');\n }\n }\n\n return [leftPart, condition];\n }\n\n private getAvailable(): SmartSearchKeywordType {\n return this.state.model.find((m) => m.elements.includes(this.caretNode));\n }\n\n /**\n * Find and split incorrect search string\n * @param {string} source\n * @return {string} correct part\n */\n private getCorrectSearchPart(source: string): string {\n let workSource = source;\n let invalidPart = '';\n\n const allGroupChars = Array.from(workSource)\n .map((char, idx) => (char === SmartSearchCharacters.GROUP_LEFT || char === SmartSearchCharacters.GROUP_RIGHT ? [char, idx] : null))\n .filter(Boolean);\n\n for (let i = 0; i < allGroupChars.length; i++) {\n const current: any[] = allGroupChars[i];\n const nextElement: any[] = allGroupChars[i + 1];\n\n if (current[0] === SmartSearchCharacters.GROUP_LEFT && (!nextElement || nextElement[0] !== SmartSearchCharacters.GROUP_RIGHT)) {\n // group isn`t closed. search string incorrect\n invalidPart = workSource.substring(current[1] as number);\n // substring correct part\n workSource = workSource.substring(0, current[1] - 1);\n\n break;\n }\n }\n\n if (invalidPart) {\n const invalidStart = source.indexOf(invalidPart);\n const invalidElements = this.getRangeElements(invalidStart, source.length);\n\n this.highlight.replaceClassInRange(invalidElements, INVALID_CLASS);\n }\n\n this.state.invalid = !!invalidPart;\n\n const correctElements = this.getRangeElements(0, workSource.length);\n\n this.highlight.removeClassInRange(correctElements, INVALID_CLASS);\n\n return workSource;\n }\n\n /**\n * Parse search content to SmartSearchModel and return it\n * @param {string} searchContent\n * @return {SmartSearchModel}\n */\n public getSearchModelByContent(searchContent: string): SmartSearchModel {\n const models = this.parseSearchContent(searchContent);\n\n return this.config.convertModel(models);\n }\n\n /**\n * Parse search content to internal model\n * @param {string} content\n * @return {SmartSearchKeywordType[]}\n */\n private parseSearchContent(content = this.searchDiv.textContent): SmartSearchKeywordType[] {\n const source = getNormalizeTerm(content);\n\n const correctSource = this.getCorrectSearchPart(source);\n\n const regRaw = '(^|\\\\s)(' + this.keywordTemplates.map((k) => k.tagFormatter(k)).join('|') + ')';\n const regRegex = new RegExp(regRaw, 'gi');\n\n const allMatched: RegExpExecArray[] = [];\n\n for (let match = regRegex.exec(correctSource); match; match = regRegex.exec(correctSource)) {\n allMatched.push(match);\n }\n\n const models: SmartSearchKeywordType[] = [];\n\n const correctElements = this.getRangeElements(0, correctSource.length);\n\n for (let index = 0; index < allMatched.length; index++) {\n const match = allMatched[index];\n\n // first match and has left part\n if (match.index > 0 && models.length === 0) {\n const wordPart = correctSource.substring(0, match.index);\n const wordPartElements = correctElements.slice(0, wordPart.length);\n models.push(...SmartSearchParser.parseWords(wordPart, wordPartElements));\n }\n\n const tagLower = match[2].toLocaleLowerCase();\n const model = this.keywordTemplates.find((k) => k.tagFormatter(k).toLocaleLowerCase() === tagLower);\n const previousSameModel = models.find((m) => m.type === 'tag' && (m as SmartSearchTag).tagTemplate === model);\n\n if (model.isMultiple !== true && previousSameModel) {\n continue;\n }\n\n const nextMatch = allMatched[index + 1];\n\n const tagIndex = correctSource.toLocaleLowerCase().indexOf(tagLower, match.index);\n const sourcePart = correctSource.substring(tagIndex, nextMatch ? nextMatch.index : correctSource.length);\n const sourceElements = correctElements.slice(tagIndex, tagIndex + sourcePart.length);\n\n models.push(...SmartSearchParser.parseTag(model, sourcePart, sourceElements));\n }\n\n if (correctSource && allMatched.length == 0) {\n models.push(...SmartSearchParser.parseWords(correctSource, correctElements));\n }\n\n return models;\n }\n\n /**\n * Get range of element in search div\n * @param {number} start start index\n * @param {number} end end index\n * @return {Element[]}\n */\n private getRangeElements(start: number, end: number): Element[] {\n const elements: Element[] = [];\n\n for (let i = start; i < end; i++) {\n elements.push(this.searchDiv.children.item(i));\n }\n\n return elements;\n }\n\n /**\n * Remove selection spans\n * @param {Node} start\n * @param {Node} end\n */\n private removeSelectedRangeElements(start: Node, end: Node): void {\n const startSpan = this.getParentSpan(start);\n const endSpan = this.getParentSpan(end);\n\n const removeSpan = [startSpan, endSpan];\n\n for (let node = startSpan.nextSibling; node && node != endSpan && node.nextSibling; node = node.nextSibling) {\n removeSpan.push(node);\n }\n\n removeSpan.forEach((span) => this.removeChild(span));\n }\n\n /**\n * Get available tags with ModelTemplateInternal.isMultiple value\n * @return {ModelTemplateInternal[]}\n */\n private getAvailableTags(): ModelTemplateInternal[] {\n const usedTagSet = this.state.usedTags;\n const leftPart = this.state.leftCaretValue;\n\n return this.keywordTemplates.filter((t) => {\n if (t.isMultiple !== true && usedTagSet.includes(t.tag.toLowerCase())) {\n return false;\n }\n\n return t.tag.toLowerCase().includes(leftPart.toLowerCase());\n });\n }\n\n /**\n * Get node under caret.\n * Return null if caret haven't previousElement\n * @return {{ element: Node, index: number }}\n */\n private getCaretNodeInfo(): { element: Node; index: number } {\n const selection = window.getSelection();\n\n if (selection.rangeCount === 0) {\n return { element: null, index: 0 };\n }\n\n const range = selection.getRangeAt(0);\n let span: Node = range.endContainer;\n\n if (this.searchDiv === span) {\n span = this.searchDiv.childNodes.item(range.endOffset);\n }\n\n let nodeIndex = Math.max(0, this.searchDiv.childElementCount - 1);\n\n const isNodeOrEmpty = !isNil(span?.nodeType) || isNil(span);\n\n if (isNodeOrEmpty && !this.searchDiv.contains(span)) {\n return { element: this.searchDiv.lastElementChild, index: nodeIndex };\n }\n\n let debugCounter = 0;\n\n while (span && this.searchDiv != span.parentElement) {\n span = span.parentElement;\n debugCounter++;\n\n if (debugCounter > 20 || !span) {\n throw new Error('Failed find parent for current node');\n }\n }\n\n nodeIndex = Array.from(this.searchDiv.childNodes).indexOf(span as ChildNode);\n\n return { element: range.endOffset === 0 ? null : span, index: nodeIndex };\n }\n\n /**\n * Push to queue\n */\n showAutocomplete(): void {\n this.queueOnUpdateState$.next({ type: 'showAutocomplete', callback: () => this.showAutocompleteImmediate() });\n }\n\n /**\n * Parse content and show autocomplete hints\n */\n showAutocompleteImmediate(): void {\n // We know that caretNode is HTMLSpanElement\n // caretNode have `Node` type for typecheck in other cases\n let caretElement: Element = this.state.caretNode as Element;\n\n this.items = [];\n this.searching$.next(false);\n\n const availableTags = () => {\n this.items = (this.state.availableTags || []).map((it) => {\n const item = it as AutocompleteDataType;\n\n item.formatter = it.tagFormatter;\n item.isKeyword = true;\n\n return item;\n });\n this.searching$.next(false);\n };\n\n // if nothing left\n if (!caretElement) {\n availableTags();\n\n return;\n }\n\n const matchedItems = (tagModel: SmartSearchTag): void => {\n this.searching$.next(true);\n\n // unsubscribe from last request\n if (this.subscription) {\n this.subscription.unsubscribe();\n this.subscription = undefined;\n }\n\n const tag = tagModel.tagTemplate;\n\n this.subscription = tag.items(this.state as SmartSearchState).subscribe({\n next: (items) => {\n const result: AutocompleteDataType[] = [];\n const model = this.state.model.find((m) => m.elements.includes(caretElement));\n\n if (tag.isSequenceMultiple && tagModel.completed) {\n result.push(...this.sequenceMultipleActions.map((item) => assign(item, { template: tag.template })));\n }\n\n result.push(\n ...items\n .filter((it: AutocompleteDataType) =>\n tagModel.tagTemplate.filterByProp\n ? !model?.['fields'].some((i) => i.fieldValue === it[tagModel.tagTemplate.filterByProp])\n : it\n )\n .map((it: AutocompleteDataType) => {\n if (typeof it !== 'object') {\n const newIt = {\n value: it,\n formatter: (item: { value: string }) => tag.itemFormatter(item.value)\n } as AutocompleteDataType;\n\n if (!isNil(tag.addGroupBrackets)) {\n newIt.addGroupBrackets = typeof it === 'string' ? this.getAddGroupBrackets(it, tag) : tag.addGroupBrackets;\n }\n\n if (!isNil(tag.template)) newIt.template = tag.template;\n if (!isNil(tag.isSequenceMultiple)) newIt.skipSpaceAfterValue = !!tag.isSequenceMultiple;\n\n return newIt;\n }\n\n it.formatter = tag.itemFormatter;\n it.template = tag.template;\n it.skipSpaceAfterValue = !!tag.isSequenceMultiple;\n const value = it.formatter(it);\n it.addGroupBrackets = this.getAddGroupBrackets(value, tag);\n\n return it;\n })\n );\n this.items = result;\n this.searching$.next(false);\n },\n error: () => {\n this.items = [];\n this.searching$.next(false);\n }\n });\n };\n\n let available = this.state.model.find((m) => m.elements.includes(caretElement));\n\n if (!available && this.isPreviousContentEqualGroupBracket(caretElement)) {\n caretElement = caretElement.previousElementSibling;\n available = this.state.model.find((m) => m.elements.includes(caretElement));\n }\n\n // first match\n if (available) {\n const tagModel = available as SmartSearchTag;\n\n if (tagModel && tagModel.type === 'tag') {\n const tagIndex = tagModel.tagElements.indexOf(caretElement);\n\n if (\n (tagIndex > -1 && tagIndex === tagModel.tagElements.length - 1) ||\n tagModel.fields.find((f) => f.elements.includes(caretElement))\n ) {\n tagModel.tagTemplate.items && matchedItems(tagModel);\n } else {\n availableTags();\n }\n } else {\n availableTags();\n }\n } else {\n // if caret value space\n // try find nearest neighbor to the left\n while (!available && caretElement.previousElementSibling) {\n caretElement = caretElement.previousElementSibling;\n available = this.state.model.find((m) => m.elements.includes(caretElement));\n }\n\n const tagModel = available as SmartSearchTag;\n\n if (tagModel && tagModel.type === 'tag') {\n const elementIndex = tagModel.fields.findIndex((f) => f.elements.includes(caretElement));\n\n // caret after last field\n if (elementIndex === tagModel.fields.length - 1) {\n if (tagModel.completed) {\n availableTags();\n } else {\n tagModel.tagTemplate.items && matchedItems(tagModel);\n }\n }\n } else {\n availableTags();\n }\n }\n }\n\n private getAddGroupBrackets = (value: string, tag: ModelTemplateInternal): boolean =>\n value && tag.addGroupBrackets && value.includes(SmartSearchCharacters.SPACE);\n\n /**\n * Create text fragment or span\n * @param {string} value tag value\n * @param {boolean} space add the space at end\n * @return {DocumentFragment | HTMLSpanElement}\n */\n private createText(value: string, space = false): DocumentFragment | HTMLSpanElement {\n return this.createFragment(value, null, space);\n }\n\n /**\n * Create tag fragment\n * @param {string} keyword tag value\n * @param {boolean} space add the space at end\n * @return {DocumentFragment}\n */\n private createTag(keyword: string, space = true): DocumentFragment {\n return this.createFragment(keyword, TAG_CLASS, space);\n }\n\n /**\n * Create fragment with class\n * @param {string} raw source string\n * @param {string} spanClass style class\n * @param {boolean} space add the space at end\n * @return {DocumentFragment}\n */\n private createFragment(raw: string, spanClass: string = null, space = true): DocumentFragment {\n const fragment = this.doc.createDocumentFragment();\n\n Array.from(raw).forEach((k) => {\n const span: HTMLSpanElement = this.renderer2.createElement('span') as HTMLSpanElement;\n\n if (/\\s/.test(k)) {\n span.insertAdjacentHTML('afterbegin', ' ');\n } else {\n span.insertAdjacentText('afterbegin', k);\n }\n\n spanClass && this.renderer2.addClass(span, spanClass);\n fragment.appendChild(span);\n });\n\n if (space) {\n const spaceSpan: HTMLSpanElement = this.renderer2.createElement('span') as HTMLSpanElement;\n spaceSpan.insertAdjacentHTML('afterbegin', ' ');\n fragment.appendChild(spaceSpan);\n }\n\n return fragment;\n }\n\n private setCaretAfterNode(index: number): void;\n private setCaretAfterNode(element: Node): void;\n private setCaretAfterNode(...args: any[]): void {\n let element = args[0] as Node;\n\n if (typeof element == 'number') {\n element = this.searchDiv.childNodes.item(element);\n }\n\n if (!this.isFocus || !element?.parentElement) {\n return;\n }\n\n const rangeSelection = this.doc.createRange();\n\n rangeSelection.setStartAfter(element);\n rangeSelection.setEndAfter(element);\n\n window.getSelection().removeAllRanges();\n window.getSelection().addRange(rangeSelection);\n }\n\n private setCaretToTheEnd(): void {\n const elementIndex = this.searchDiv.childNodes.length && this.searchDiv.childNodes.length - 1;\n\n this.setCaretAfterNode(elementIndex);\n }\n\n private setCaretToTheBeginning(): void {\n const element = this.searchDiv.childNodes.length && this.searchDiv.childNodes.item(0);\n\n if (!this.isFocus || !element?.parentElement) {\n return;\n }\n\n const rangeSelection = this.doc.createRange();\n\n rangeSelection.setStartBefore(element);\n rangeSelection.setEndBefore(element);\n\n window.getSelection().removeAllRanges();\n window.getSelection().addRange(rangeSelection);\n }\n\n /**\n * Insert value around caret\n * Call onSelect from dropdown menu\n * @param value source item\n */\n\n pasteValue(item: AutocompleteDataType): void {\n let currentCaret: Element = this.state.caretNode as Element;\n\n let available = this.state.model.find((m) => m.elements.includes(currentCaret));\n let skipGroupSymbols = false;\n\n if (!available && this.isPreviousContentEqualGroupBracket(currentCaret)) {\n skipGroupSymbols = true;\n currentCaret = currentCaret.previousElementSibling;\n available = this.state.model.find((m) => m.elements.includes(currentCaret));\n }\n\n const value = this.needWrapToBranch(item, skipGroupSymbols) ? this.wrapToBranch(item) : item.formatter(item);\n const valueNodes = item.isKeyword === true ? this.createTag(value) : this.createText(value, !item.skipSpaceAfterValue);\n\n !item.isKeyword && !item.actionType && this.prepareCachedItem(item);\n\n let removeElements: Element[] = [];\n\n if (available && !item.actionType) {\n if (available.type === 'tag') {\n const tags = available as SmartSearchTag;\n const tagIndex = tags.tagElements.indexOf(currentCaret);\n\n if (tagIndex > -1 && tagIndex + 1 < tags.tagElements.length) {\n removeElements = tags.tagElements;\n }\n\n const field = tags.fields.find((f) => f.elements.includes(currentCaret));\n\n if (field) {\n removeElements = field.elements;\n }\n }\n if (available.type === 'word') {\n removeElements = available.elements;\n }\n }\n\n if (item.actionType && skipGroupSymbols && currentCaret.nextElementSibling) {\n currentCaret = currentCaret.nextElementSibling;\n skipGroupSymbols = false;\n }\n\n let nextCaret = valueNodes instanceof DocumentFragment ? valueNodes.lastElementChild : valueNodes;\n\n // before append new nodes\n if (currentCaret && currentCaret.nextSibling) {\n this.insertBefore(valueNodes, currentCaret.nextSibling);\n } else {\n this.appendChild(valueNodes);\n }\n\n // elements will be moved and cleaned by GC\n this.doc.createDocumentFragment().append(...removeElements);\n\n if (skipGroupSymbols && nextCaret.nextElementSibling) {\n nextCaret = nextCaret.nextElementSibling;\n }\n\n const children = Array.from(this.searchDiv.childNodes);\n let nextCaretIndex = 0;\n\n for (let i = 0; i < children.length; i++) {\n const element = this.searchDiv.children[i];\n element.className = '';\n if (element === nextCaret) {\n nextCaretIndex = i;\n }\n }\n\n this.selectedItemIndex = -1;\n\n this.hasTextContentChanges = true;\n\n this.state.caretIndex = nextCaretIndex;\n this.onPasteValue$.next(nextCaretIndex);\n }\n\n private insertBefore(newChild: DocumentFragment | HTMLElement, refChild: HTMLElement | ChildNode): void {\n this.renderer2.insertBefore(this.searchDiv, newChild, refChild);\n }\n\n private appendChild(newChild: DocumentFragment | HTMLElement): void {\n this.renderer2.appendChild(this.searchDiv, newChild);\n }\n\n private removeChild(oldChild: HTMLElement | ChildNode | Node): void {\n this.renderer2.removeChild(this.searchDiv, oldChild);\n }\n\n private removeAllChild(): void {\n Array.from(this.searchDiv.childNodes).forEach((item) => this.removeChild(item));\n }\n\n private isPreviousContentEqualGroupBracket = (element: Element): boolean =>\n element && element.previousElementSibling && element.textContent === SmartSearchCharacters.GROUP_RIGHT;\n\n private needWrapToBranch = (item: AutocompleteDataType, skipGroupSymbols: boolean): boolean =>\n !item.actionType && !skipGroupSymbols && item.addGroupBrackets && !item.isKeyword;\n\n private wrapToBranch = (item: AutocompleteDataType): string =>\n `${SmartSearchCharacters.GROUP_LEFT}${item.formatter(item)}${SmartSearchCharacters.GROUP_RIGHT}`;\n\n private prepareCachedItem(item: AutocompleteDataType): void {\n let currentCaret: Element = this.state.caretNode as Element;\n let available = this.state.model.find((m) => m.elements.includes(currentCaret));\n\n while (!available && currentCaret.previousElementSibling) {\n currentCaret = currentCaret.previousElementSibling;\n available = this.state.model.find((m) => m.elements.includes(currentCaret));\n }\n\n const tagModel = available as SmartSearchTag;\n\n tagModel &&\n tagModel.tagTemplate &&\n tagModel.tagTemplate.enableCacheStorage &&\n tagModel.type === 'tag' &&\n this.addItemToCache(tagModel.tagTemplate.tag, item.formatter(item), item);\n }\n\n private addItemToCache(tag: string, searchValue: string, value): void {\n if (\n tag &&\n searchValue &&\n value &&\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n value.cachedValue &&\n !this.cachedValueState.some((elem) => elem.tag === tag && elem.searchValue === searchValue)\n ) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment\n this.cachedValueState.push({ tag, searchValue, value: value.cachedValue });\n }\n }\n\n private checkActualCachedState(): void {\n const model = this.state.model;\n\n this.cachedValueState = this.cachedValueState.filter((value) =>\n model.some(\n (modelTag) =>\n modelTag.type === 'tag' &&\n (modelTag as SmartSearchTag).tagValue === value.tag &&\n (modelTag as SmartSearchTag).fields.some((field) => field.fieldValue === value.searchValue)\n )\n );\n }\n\n /**\n * Handle mousedown click on list of autocomplete value\n * @param {AutocompleteDataType} item selected value\n */\n handleClickSelectedValue(item: AutocompleteDataType): void {\n this.isMouseSelectValue = true;\n this.selectedItemIndex = -1;\n\n this.queueFocus$.next(null);\n this.pasteValue(item);\n this.updateState();\n\n this.history.push(this.searchDiv.textContent);\n\n this.showAutocomplete();\n }\n\n @HostListener('document:mousedown', ['$event.target'])\n closeDropdownMenu(target: HTMLElement): void {\n this.isClickedOutsideNgbDropdown(target) &&\n this.dropdownsMenus\n .filter((menu) => !!menu && this.isClickedOutsideNgbDropdownMenu(target, menu))\n .forEach((menu) => (menu.dropdown as NgbDropdown).close());\n }\n\n private isClickedOutsideNgbDropdown(target: HTMLElement): boolean {\n return (\n !this.isToggleButtonClicked(target) &&\n !this.isMbsDatepickerClicked(target) &&\n !this.isMbsTimepickerClicked(target) &&\n !this.isMbsSelectCloseCtrlClicked(target) &&\n !this.isPlaceholderClicked(target)\n );\n }\n\n private isToggleButtonClicked = (target: HTMLElement): boolean => !!target.closest('[ngbDropdownToggle]');\n\n private isMbsDatepickerClicked = (target: HTMLElement): boolean => target.closest('ngb-datepicker') && !target.closest('mbs-datepicker');\n\n private isMbsTimepickerClicked = (target: HTMLElement): boolean => target.closest('ngb-timepicker') && !target.closest('mbs-timepicker');\n\n private isMbsSelectCloseCtrlClicked = (target: HTMLElement): boolean => target.classList.contains('ng-clear-wrapper'); // the target haven't parent element\n\n private isPlaceholderClicked = (target: HTMLElement): boolean => !!target.closest('.mbs-smart-search_placeholder');\n\n private isClickedOutsideNgbDropdownMenu(target: HTMLElement, menu: NgbDropdownMenu): boolean {\n const dropdown = menu.dropdown as NgbDropdown;\n\n return (\n this.isOpenedNgbDropdownMenu(dropdown) && !this.isMbsSelectOptionClicked(target, dropdown) && !menu.nativeElement.contains(target)\n );\n }\n\n private isOpenedNgbDropdownMenu(dropdown: NgbDropdown): boolean {\n return dropdown._open;\n }\n\n private isMbsSelectOptionClicked(target: HTMLElement, dropdown: NgbDropdown): boolean {\n const ngOptions: HTMLElement[] = this.ngbDropdownMenuNgSelectOptions(dropdown);\n\n this.mbsSelectOpenedNgOptions = ngOptions.length > 0 ? ngOptions : this.mbsSelectOpenedNgOptions;\n\n return this.mbsSelectOpenedNgOptions.some((option) => option.contains(target));\n }\n\n private ngbDropdownMenuNgSelectOptions(dropdown: NgbDropdown): HTMLElement[] {\n const dropdownRef = dropdown['_elementRef'] as ElementRef;\n const container: string = dropdownRef.nativeElement.getAttribute('container');\n\n if (container === 'body') {\n return Array.from(this.doc.querySelectorAll('body > ng-dropdown-panel .ng-option'));\n } else {\n return Array.from(dropdownRef.nativeElement.querySelectorAll('ng-select.ng-select-opened ng-dropdown-panel .ng-option'));\n }\n }\n}\n","function getClearTerm(termCurrent: string): string {\n const regex = /^(\\*)?(\\S+?)(\\*)?$/;\n const match = regex.exec(termCurrent);\n return match ? match[2] : termCurrent;\n}\n\nfunction getWildcardTerm(termCurrent: string): string {\n // without wrap\n if (termCurrent.startsWith('*') || termCurrent.endsWith('*')) {\n return termCurrent;\n }\n\n return `*${termCurrent}*`;\n}\n\nfunction getNormalizeTerm(termCurrent: string): string {\n const spaceReg = /\\s/g;\n let result = '';\n\n let match: RegExpExecArray;\n for (match = spaceReg.exec(termCurrent); match; match = spaceReg.exec(termCurrent)) {\n result += termCurrent.substring(result.length, match.index) + ' ';\n }\n\n if (result) {\n result += termCurrent.substring(result.length);\n } else {\n result = termCurrent;\n }\n\n return result;\n}\n\nexport { getClearTerm, getWildcardTerm, getNormalizeTerm };\n","\n\n \n\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { get, isNil } from 'lodash';\nimport { BehaviorSubject } from 'rxjs';\nimport { MbsSize } from '../utils';\n\nexport enum StatusIconType {\n 'default' = 'fa fa-circle',\n 'info' = 'fa fa-info-circle',\n 'success' = 'fa fa-check-circle',\n 'warning' = 'fa fa-exclamation-triangle',\n 'danger' = 'fa fa-exclamation-circle'\n}\n@Component({\n selector: 'mbs-status',\n templateUrl: './status.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'getCustomClasses'\n }\n})\nexport class StatusComponent implements OnChanges, OnInit, AfterContentInit {\n @ViewChild('ngContentWrapperRef', { static: false, read: ElementRef }) ngContentWrapperRef: ElementRef;\n @Input() disabled = false;\n @Input() clickable = true;\n @Input() size: MbsSize.sm | MbsSize.md | MbsSize.lmd | MbsSize.lg | '' = '';\n @Input() iconPosition: 'left' | 'right' = 'left';\n @Input() icon: StatusIconType | string = StatusIconType.default;\n @Input() type: 'success' | 'info' | 'warning' | 'danger' | 'muted' | '' = 'success';\n @Input() textCustomClasses: string | string[] = '';\n @Input() textSize: MbsSize.sm | MbsSize.md | MbsSize.lmd | MbsSize.lg | '' = '';\n @Input('class') hostClasses = '';\n\n @Output() mbsClick = new EventEmitter();\n\n public iconClasses$: BehaviorSubject = new BehaviorSubject('');\n public textClasses$: BehaviorSubject = new BehaviorSubject('');\n public showStatusText$: BehaviorSubject = new BehaviorSubject(true);\n\n constructor(private cdRef: ChangeDetectorRef) {}\n\n @HostListener('click', ['$event'])\n handleClick($event: Event) {\n if (this.clickable) {\n this.mbsClick.emit($event);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.needUpdateIconClasses(changes)) this.updateIconClasses();\n if (this.needUpdateTextClasses(changes)) this.updateTextClasses();\n }\n\n private needUpdateIconClasses = (changes: SimpleChanges): boolean =>\n (changes.size && !changes.size.firstChange) ||\n (changes.icon && !changes.icon.firstChange) ||\n (changes.type && !changes.type.firstChange) ||\n (changes.disabled && !changes.disabled.firstChange);\n\n private needUpdateTextClasses = (changes: SimpleChanges): boolean =>\n (changes.textSize && !changes.textSize.firstChange) ||\n (changes.textCustomClasses && !changes.textCustomClasses.firstChange) ||\n (changes.disabled && !changes.disabled.firstChange);\n\n ngOnInit(): void {\n this.updateIconClasses();\n this.updateTextClasses();\n this.cdRef.detectChanges();\n }\n\n private updateIconClasses(): void {\n const iconClasses: string = this.getIconClasses();\n this.iconClasses$.next(iconClasses);\n }\n\n private updateTextClasses(): void {\n const textClasses: string = this.getTextClasses();\n this.textClasses$.next(textClasses);\n }\n\n private getIconClasses = (): string => {\n const classList: string[] = [];\n const sizeClass: string = this.getSizeClass();\n\n if (sizeClass) classList.push('-' + sizeClass);\n if (this.icon) classList.push(this.icon);\n if (this.type) classList.push('text-' + this.type);\n\n return classList.join(' ');\n };\n\n private getTextClasses = (): string => {\n const classList: string[] = [];\n\n if (this.textSize) classList.push('text-' + this.textSize);\n if (this.textCustomClasses) classList.push(this.getClassesAsString(this.textCustomClasses));\n\n return classList.join(' ');\n };\n\n private getSizeClass(): string {\n if (!this.validateSizeClass() || !this.size) return '';\n\n const key: string | undefined = Object.keys(MbsSize).find((key: string) => key === this.size);\n return isNil(key) ? '' : String(MbsSize[key]);\n }\n\n private validateSizeClass(): boolean {\n return !isNil(this.size) && typeof this.size === 'string' && this.size.length > 0;\n }\n\n private getClassesAsString = (classList: string | string[]): string => {\n if (classList instanceof Array || Array.isArray(classList)) {\n const parsedClassList: string = classList.join(' ');\n return this.getClassesWithoutJustEmptySpace(parsedClassList);\n } else if (typeof classList === 'string') {\n return this.getClassesWithoutJustEmptySpace(classList);\n } else {\n return '';\n }\n };\n\n private getClassesWithoutJustEmptySpace = (str: string): string => {\n return this.isJustEmptySpace(str) ? '' : str;\n };\n\n private isJustEmptySpace = (str: string): boolean => {\n return new RegExp(/^\\s+$/).test(str);\n };\n\n public get getCustomClasses(): string {\n const classList: string[] = ['mbs-status'];\n const sizeClass: string = this.getSizeClass();\n\n this.updateShowStatusText();\n\n if (this.hostClasses) classList.push(this.getClassesAsString(this.hostClasses));\n if (sizeClass) classList.push('-' + sizeClass);\n if (this.iconPosition === 'right' && this.showStatusText$.getValue()) classList.push('-reverse');\n if (this.disabled) classList.push('-disabled');\n if (this.clickable) classList.push('-clickable');\n if (this.type && !this.disabled) classList.push('-' + this.type);\n\n return classList.join(' ');\n }\n\n ngAfterContentInit(): void {\n this.updateShowStatusText();\n this.cdRef.detectChanges();\n }\n\n private updateShowStatusText(): void {\n const isShow: boolean = this.checkNgContentStatusText();\n this.showStatusText$.next(isShow);\n }\n\n private checkNgContentStatusText(): boolean {\n return (get(this.ngContentWrapperRef, 'nativeElement.childNodes', []) as Node[]).length > 0;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { StatusComponent } from './status.component';\n\n@NgModule({\n declarations: [StatusComponent],\n exports: [StatusComponent],\n imports: [CommonModule]\n})\nexport class StatusModule {}\n","import { Directive, TemplateRef } from '@angular/core';\n\n/**\n * Tile template for table-grid in grid mode\n */\n@Directive({\n selector: '[mbsGridTile]'\n})\nexport class GridTileDirective {\n constructor(public template: TemplateRef) {}\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[headerFor],[mbsTableHeader]'\n})\nexport class TableHeaderNameDirective {\n public value: string;\n /**\n * @deprecated\n * @param {string} value\n */\n @Input('headerFor') set headerFor(value: string) {\n this.value = value;\n }\n @Input('mbsTableHeader') set mbsTableHeader(value: string) {\n this.value = value;\n }\n constructor(public template: TemplateRef) {}\n}\n","import { Attribute, Directive, TemplateRef } from '@angular/core';\n\n/**\n * Common table cell by group\n */\n@Directive({\n selector: '[mbsTableCell]'\n})\nexport class TableCellDirective {\n constructor(@Attribute('group') public group: string, public template: TemplateRef) {}\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n/**\n * Common table cell by group\n */\n@Directive({\n selector: '[mbsTableControl]'\n})\nexport class TableControlDirective {\n @Input('mbsTableControl') public mode: 'append' | 'prepend' = 'append';\n\n constructor(public template: TemplateRef) {}\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n/**\n * Common table cell by group\n */\n@Directive({\n selector: '[mbsTableFilter]'\n})\nexport class TableFilterDirective {\n @Input('mbsTableFilter') public mode: 'item' | 'label' | 'divider' = 'item';\n\n constructor(public template: TemplateRef) {}\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n/**\n * mbs-table-nav custom content\n */\n@Directive({\n selector: '[mbsTableNavContent]'\n})\nexport class TableNavContentDirective {\n constructor(public template: TemplateRef) {}\n\n @Input('mbsTableNavContent') context: any;\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n exportAs: 'sortArrow',\n selector: '[sortArrow]',\n host: {\n '[class.ico]': 'true'\n }\n})\nexport class TableSortArrowDirective {}\n","import {\n AfterContentInit,\n ContentChildren,\n Directive,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n QueryList,\n SimpleChanges\n} from '@angular/core';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { startWith } from 'rxjs/operators';\nimport { SortDirection, SortEvent } from '../../models/sort';\nimport { TableSortDirective } from './table-sort.directive';\n\n@UntilDestroy()\n@Directive({\n exportAs: 'mbsTableSortGroup',\n selector: '[mbsTableSortGroup]'\n})\nexport class TableSortGroupDirective implements AfterContentInit, OnChanges {\n @Input('mbsTableSortGroup') orderBy: SortEvent;\n @Input() rotateSequence: { [key: string]: SortDirection };\n @Output() sort = new EventEmitter(true);\n\n @ContentChildren(TableSortDirective, { descendants: true, read: TableSortDirective }) sortHeaders: QueryList;\n\n ngAfterContentInit(): void {\n this.sortHeaders.changes.pipe(startWith(this.sortHeaders), untilDestroyed(this)).subscribe((headers: QueryList) => {\n headers.forEach((header) => {\n header.rotateSequence = this.rotateSequence || header.rotateSequence;\n header.sort.subscribe((event: SortEvent) => this.sort.emit(event));\n });\n this.resetSortArrow();\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes?.orderBy.currentValue) {\n this.resetSortArrow();\n }\n }\n\n private resetSortArrow(): void {\n this.sortHeaders &&\n this.sortHeaders.forEach((header) => {\n if (!this.orderBy || this.orderBy.column !== header.columnName) {\n header.changeState('');\n } else {\n header.changeState(this.orderBy.direction);\n }\n });\n }\n}\n","import {\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n HostListener,\n Input,\n Output,\n Renderer2\n} from '@angular/core';\nimport { rotate, SortDirection, SortEvent } from '../../models/sort';\nimport { TableSortArrowDirective } from './table-sort-arrow.directive';\n\n@Directive({\n exportAs: 'sortable',\n selector: `.table-grid_cell[sortable],[sortable]`\n})\nexport class TableSortDirective {\n @HostBinding('class.asc') get asc(): boolean {\n return this.direction === 'asc';\n }\n @HostBinding('class.desc') get desc(): boolean {\n return this.direction === 'desc';\n }\n\n @Input() rotateSequence: { [key: string]: SortDirection } = rotate;\n\n @Input('sortable') columnName: string;\n\n /**\n * @deprecated\n * @param {string} value\n */\n @Input('columnName') set columnNameLegacy(value: string) {\n this.columnName = value;\n }\n\n @Input() direction: SortDirection = '';\n @Output() sort = new EventEmitter();\n\n @ContentChild(forwardRef(() => TableSortArrowDirective), {\n read: ElementRef,\n static: true\n })\n arrow: ElementRef;\n\n @HostListener('click') rotate(): void {\n this.changeState(this.rotateSequence[this.direction]);\n this.sort.emit({ column: this.columnName, direction: this.direction });\n }\n\n constructor(private elem: ElementRef, private render2: Renderer2) {}\n\n changeState(direction: SortDirection): void {\n this.direction = direction;\n if (direction !== '') {\n this.render2.addClass(this.elem.nativeElement, '-active');\n if (this.arrow) {\n this.render2.removeClass(this.arrow.nativeElement, 'd-none');\n this.render2.removeClass(this.arrow.nativeElement, 'ico-arrow' + (this.asc ? 'Down' : 'Up') + 'Sm');\n this.render2.addClass(this.arrow.nativeElement, 'ico-arrow' + (this.desc ? 'Down' : 'Up') + 'Sm');\n }\n } else {\n if (this.arrow) {\n this.render2.addClass(this.arrow.nativeElement, 'd-none');\n }\n this.render2.removeClass(this.elem.nativeElement, '-active');\n }\n }\n}\n","
\n \n \n \n
\n \n \n
\n
\n \n \n \n
\n\n\n
\n
\n {{ noDataMessage || noDataMessageDefault }}\n
\n
\n
\n","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, TemplateRef } from '@angular/core';\nimport { isTemplate } from '../../utils';\nimport { noDataMessageDefault } from '../../utils/text-constants';\nimport { TableHeader } from '../models/table-header';\n\nenum MultipleSelectType {\n Mouse = 'mouse',\n Keyboard = 'keyboard'\n}\n\ninterface Card {\n [key: string]: any;\n event: MouseEvent | KeyboardEvent;\n}\n\n@Component({\n selector: 'app-grid, mbs-grid',\n templateUrl: './grid.component.html'\n})\nexport class GridComponent implements OnInit {\n @Input() data: any[];\n @Input() loading = false;\n @Input() loaderType = 'light';\n @Input() noDataMessage: string | TemplateRef;\n gridHeaders: TableHeader[];\n @Input()\n set headers(value: TableHeader[]) {\n this.gridHeaders = value.map((h, index) => Object.assign({ id: index }, h)).filter((h) => h.isGridColumn !== false);\n }\n @Input() headerTemplate: ElementRef;\n @Input() templates: ElementRef[];\n @Input() tileTemplate: TemplateRef;\n @Input() isNeedSelectCard: boolean;\n @Input() multipleSelect = false;\n @Input() selectCardClass = '-selected';\n @Input() multipleSelectType = MultipleSelectType.Mouse;\n @Input() bindSelected = 'id';\n @Input() bindSelectedChildren = 'id';\n @Input() selectedCards: Card[] = [];\n @Input() maxHeight: string;\n @Input() minHeight: string;\n\n /**\n * function used in every rows \"for in\".\n */\n @Input() myTrackBy: (index: number, item: T) => unknown;\n\n @Output() changeSelectedCards: EventEmitter = new EventEmitter();\n @Output() clickTableElement: EventEmitter = new EventEmitter();\n\n public selectedCardIndex: number;\n\n private shiftSelectedIndex = -1;\n public noDataMessageDefault = noDataMessageDefault;\n\n constructor() {\n // empty\n }\n\n ngOnInit(): void {\n // empty\n }\n\n noDataIsTemplate(): boolean {\n return isTemplate(this.noDataMessage);\n }\n\n cardClickHandler(card: Card, cardIndex: number): void {\n this.clickTableElement.emit(card);\n if (this.isNeedSelectCard) {\n if (this.multipleSelectType == MultipleSelectType.Mouse) {\n this.updateSelectedCards(card, cardIndex);\n return;\n }\n if (this.multipleSelectType == MultipleSelectType.Keyboard) {\n const isMac = navigator.platform.startsWith('Mac');\n const ctrlOrCmd = card.event.ctrlKey || (isMac && card.event.metaKey);\n if (ctrlOrCmd) {\n this.updateSelectedCards(card, cardIndex);\n } else if (card.event.shiftKey) {\n if (this.selectedCards.length == 0) {\n this.updateSelectedCards(card, cardIndex);\n } else {\n const start = Math.min(this.shiftSelectedIndex, cardIndex);\n const end = Math.max(this.shiftSelectedIndex, cardIndex) + 1;\n this.updateSelectedCards(card, start, end);\n }\n } else {\n this.selectedCards = [];\n this.updateSelectedCards(card, cardIndex);\n }\n }\n // this.updateSelectedCards(card, cardIndex);\n } else {\n this.changeSelectedCards.emit(card);\n }\n this.shiftSelectedIndex = cardIndex;\n }\n\n updateSelectedCards(card: Card, cardIndex: number, lastRowIndex = 0): void {\n if (this.multipleSelect) {\n if (lastRowIndex > 0) this.selectedCards = this.data.slice(cardIndex, lastRowIndex) as Card[];\n else {\n const unselectIndex = this.selectedCards.findIndex((i) => i[this.bindSelected] === card[this.bindSelected]);\n if (unselectIndex !== -1) {\n this.selectedCards.splice(unselectIndex, 1);\n } else {\n this.selectedCards.push(card);\n }\n }\n this.changeSelectedCards.emit(this.selectedCards);\n } else {\n const unselect = this.selectedCardIndex === cardIndex;\n this.selectedCardIndex = unselect ? null : cardIndex;\n this.changeSelectedCards.emit(!unselect ? card : null);\n }\n }\n\n checkCardInSelected(card: Card) {\n return this.selectedCards.find((i) => i[this.bindSelected] === card[this.bindSelected]);\n }\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[mbsFiltersGroup]'\n})\nexport class FiltersGroupDirective {\n constructor(public template: TemplateRef) {}\n}\n","
\n\n
\n\n \n \n \n\n
0\"\n class=\"row mbs-table_filter\">\n\n
\n \n
\n\n
\n\n
\n \n
\n\n
\n\n
\n\n
\n\n
0\"\n class=\"col-auto\">\n\n \n \n \n\n
\n\n
\n\n \n\n \n \n \n\n \n \n \n\n \n\n
\n\n
\n \n {{ exportButtonName }}\n \n
\n\n
0 &&\n paginationOptionsInternal.pageSizeList[0] < paginationOptionsInternal.dataSize\"\n class=\"col-auto d-flex align-self-stretch align-items-center\">\n\n {{ getPageSizeText(paginationOptionsInternal.pageSize) }}\n\n \n \n \n\n \n\n
\n\n
\n \n
\n\n
\n\n
\n\n
\n \n
\n\n
\n \n
\n\n
\n\n
\n\n
0\"\n class=\"col-auto\">\n\n \n \n \n\n
\n\n
\n\n
\n\n
\n","import {\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n HostListener,\n Inject,\n Input,\n OnChanges,\n OnInit,\n Output,\n QueryList,\n SimpleChange\n} from '@angular/core';\nimport { isNil } from 'lodash';\nimport { SharedPersistentStateEnum } from '../../services/storage/shared-persistent-state-enum';\nimport { SHARED_PERSISTENT_STATE } from '../../services/storage/shared-persistent-state.provider';\nimport { SharedPersistentStateService, ViewMode } from '../../services/storage/shared-persistent-state.service';\nimport { TableControlDirective } from '../directives/table-control.directive';\nimport { TableFilterDirective } from '../directives/table-filter.directive';\nimport { FiltersGroupDirective } from '../directives/table-filters-group.directive';\nimport { TableNavContentDirective } from '../directives/table-nav-content.directive';\nimport { PaginationOptions } from '../models/pagination-options';\n\n@Component({\n selector: 'mbs-table-nav',\n templateUrl: './table-nav.component.html'\n})\nexport class TableNavComponent implements OnChanges, OnInit {\n public readonly sharedPersistentStateEnum = SharedPersistentStateEnum;\n /**\n * Pagination options. For disable pagination set `pageSize=0` or `dataSize=0`\n * * `maxSize` - Visible pages number. Default: `3`\n * * `rotate` - Whether to rotate pages when `maxSize` > number of pages.\n * The current page always stays in the middle if true. Default: `false`\n * * `pageSize` - The number of items per page. Default: `20`. -1 means 'Show all'.\n * * `dataSize` - Total number of items.\n * * `pageSizeList` - Array of numbers to choose `pageSize` from. Default: `null`.\n * * It is possible to use '-1' in 'pageSizeList'. -1 means 'Show all'.\n * * `page` - current page. Default: `1`;\n */\n @Input() paginationOptions: PaginationOptions;\n public enableSwitcher = true;\n public paginationOptionsDefault: PaginationOptions = {\n maxSize: 3,\n rotate: false,\n pageSize: 20,\n dataSize: 0,\n pageSizeList: null,\n page: 1\n };\n public paginationOptionsInternal: PaginationOptions = this.paginationOptionsDefault;\n /**\n * Disable switching from selected view to different 'table' or 'grid'\n */\n @Input() disableViewSwitch = false;\n public myViewMode: ViewMode = this.sharedPersistent.data.viewTableGridMode || SharedPersistentStateEnum.table;\n public lastViewMode: ViewMode = this.myViewMode;\n\n /**\n * Can manually switch view mode;\n */\n @Input() switcherView = false;\n @Input() showExportToCSVButton = false;\n @Input() showRefreshButton = false;\n @Input() refreshing = false;\n @Input() exportButtonName = 'Export to CSV';\n\n @Input() public showNav =\n (this.paginationOptionsInternal.pageSize !== 0 && this.paginationOptionsInternal.dataSize > 0) ||\n (this.enableSwitcher && this.switcherView);\n\n @Input() wideContentMode = false;\n @Input() xlWideContentMode = false;\n @Input() fullContentWidth = false;\n\n @ContentChildren(TableFilterDirective, {\n read: TableFilterDirective,\n descendants: false\n })\n filterTemplates: QueryList;\n @Input() filters: QueryList;\n\n get myFilters(): QueryList {\n return this.filterTemplates.length > 0 ? this.filterTemplates : this.filters;\n }\n\n get hasFilters(): boolean {\n return !!(this.myFilters?.length > 0 || this.myContent || this.filtersGroup);\n }\n\n @ContentChild(TableNavContentDirective, { read: TableNavContentDirective, static: false })\n customContentTemplate: TableNavContentDirective;\n\n @ContentChild(FiltersGroupDirective, { read: FiltersGroupDirective, static: true })\n filtersGroup: FiltersGroupDirective;\n\n @Input() customContent: TableNavContentDirective;\n\n public get myContent(): TableNavContentDirective {\n return this.customContentTemplate ? this.customContentTemplate : this.customContent;\n }\n\n @ContentChildren(TableControlDirective, {\n read: TableControlDirective,\n descendants: false\n })\n controlTemplates: QueryList;\n @Input() customControls: QueryList;\n\n @Output() viewChange: EventEmitter = new EventEmitter();\n @Output() pageSizeChange: EventEmitter = new EventEmitter();\n @Output() pageSwitch: EventEmitter = new EventEmitter();\n\n /**\n * Emits on refresh button click with no data;\n */\n @Output() refresh: EventEmitter = new EventEmitter();\n /**\n * Emits on refresh button click with no data;\n */\n @Output() export: EventEmitter = new EventEmitter();\n /**\n * @deprecated\n **/\n @Output() pageChange: EventEmitter = new EventEmitter();\n\n @HostListener('window:resize', ['$event'])\n onResize(event: Event): void {\n if (event.target instanceof Window && !this.disableViewSwitch) {\n queueMicrotask(() => {\n if ((event.target as Window).innerWidth < 576) {\n this.enableSwitcher = false;\n this.myViewMode = SharedPersistentStateEnum.grid;\n this.viewChange.emit(this.lastViewMode);\n } else {\n this.enableSwitcher = true;\n this.myViewMode = this.lastViewMode;\n this.viewChange.emit(this.myViewMode);\n }\n });\n }\n }\n\n /**\n * @default ['table']\n * @param {ViewMode} mode\n */\n @Input() set viewMode(mode: ViewMode) {\n this.myViewMode = mode;\n }\n\n public get needToShowPaginationColumn(): boolean {\n return (\n this.showRefreshButton ||\n this.showExportToCSVButton ||\n this.customAppendControls.length > 0 ||\n this.customPrependControls.length > 0 ||\n (this.paginationOptionsInternal.pageSize < this.paginationOptionsInternal.dataSize && this.paginationOptionsInternal.dataSize > 0) ||\n (this.enableSwitcher && this.switcherView)\n );\n }\n\n private myControls(): QueryList {\n return this.controlTemplates.length > 0 ? this.controlTemplates : this.customControls;\n }\n\n public get customPrependControls(): TableControlDirective[] {\n return this.myControls() ? this.myControls().filter((item) => item.mode === 'prepend') : [];\n }\n\n public get customAppendControls(): TableControlDirective[] {\n return this.myControls() ? this.myControls().filter((item) => item.mode === 'append') : [];\n }\n\n public get showPagination(): boolean {\n return (\n this.paginationOptionsInternal.pageSize > 0 &&\n this.paginationOptionsInternal.dataSize > 0 &&\n (this.paginationOptionsInternal.pageSize < this.paginationOptionsInternal.dataSize || this.paginationOptionsInternal.page > 1)\n );\n }\n\n constructor(@Inject(SHARED_PERSISTENT_STATE) private sharedPersistent: SharedPersistentStateService) {}\n\n ngOnChanges(changes: { [propKey: string]: SimpleChange }): void {\n if (changes.paginationOptions) {\n this.paginationOptionsInternal = Object.assign({}, this.paginationOptionsDefault, this.paginationOptions);\n }\n }\n\n ngOnInit(): void {\n if (\n this.paginationOptions &&\n this.paginationOptions.pageSize &&\n !isNil(this.paginationOptions.pageSizeList) &&\n !this.paginationOptions.pageSizeList.includes(this.paginationOptions.pageSize)\n ) {\n this.paginationOptions.pageSize = this.paginationOptions.pageSizeList[0];\n }\n if (window.innerWidth < 576) {\n this.enableSwitcher = false;\n this.myViewMode = SharedPersistentStateEnum.grid;\n }\n }\n\n /**\n * @ignore\n * @param {number} page\n */\n onPageChange(page: number): void {\n this.pageChange.emit(page);\n this.paginationOptionsInternal.page = page;\n this.pageSwitch.emit(this.paginationOptionsInternal);\n }\n\n /**\n * @ignore\n * @param {SharedPersistentStateEnum} mode\n */\n onViewChange(mode: SharedPersistentStateEnum): void {\n this.sharedPersistent.data.viewTableGridMode = mode;\n this.myViewMode = mode;\n this.lastViewMode = mode;\n this.viewChange.emit(this.myViewMode);\n }\n\n handleChangePageSize(pageSize: number): void {\n this.paginationOptionsInternal = Object.assign({}, this.paginationOptionsDefault, this.paginationOptions, { pageSize });\n this.pageSizeChange.emit(this.paginationOptionsInternal);\n }\n\n getPageSizeText(pageSize: number): string {\n return this.getDefaultPageSizeText(pageSize);\n }\n\n getPageSizeMenuText(pageSize: number): string {\n return this.paginationOptionsInternal.pageSizeMenuFormatter\n ? this.paginationOptionsInternal.pageSizeMenuFormatter(pageSize)\n : this.getDefaultPageSizeText(pageSize);\n }\n\n private getDefaultPageSizeText(pageSize: number): string {\n return pageSize === -1 ? 'Show all' : `${pageSize} per page`;\n }\n}\n","\n\n\n
\n\n
\n\n
\n 0\"\n (change)=\"topControlsCheckboxChangeHandler($event)\"\n [checked]=\"checkedTop\"\n [indeterminate]=\"indeterminateTop\"\n [label]=\"topControlsLabel\">\n
\n\n
\n {{ topControlsDescription }}\n
\n\n
\n\n
\n\n\n\n \n\n \n {{ selectedItems?.length }}\n \n\n \n\n\n\n
\n\n \n \n\n\n \n \n\n
\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n HostListener,\n Inject,\n Input,\n OnChanges,\n OnInit,\n Output,\n QueryList,\n SimpleChange,\n TemplateRef\n} from '@angular/core';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { cloneDeep, isNil } from 'lodash';\nimport { Observable } from 'rxjs';\nimport { AppendTopControlsLabel, PrependTopControlsLabel } from '../list-select';\nimport { SortDirection, SortEvent } from '../models/sort';\nimport { SharedPersistentStateEnum } from '../services/storage/shared-persistent-state-enum';\nimport { SHARED_PERSISTENT_STATE } from '../services/storage/shared-persistent-state.provider';\nimport { SharedPersistentStateService, ViewMode } from '../services/storage/shared-persistent-state.service';\nimport { BootstrapTheme, MbsSize, removeSelection } from '../utils';\nimport { GridTileDirective } from './directives/grid-tile.directive';\nimport { TableHeaderNameDirective } from './directives/headerFor.directive';\nimport { TableCellDirective } from './directives/table-cell.directive';\nimport { TableControlDirective } from './directives/table-control.directive';\nimport { TableFilterDirective } from './directives/table-filter.directive';\nimport { TableNavContentDirective } from './directives/table-nav-content.directive';\nimport { PaginationOptions } from './models/pagination-options';\nimport { TableHeader } from './models/table-header';\nimport { ClassRowObject, ExtendedTableRow, MultipleSelectType } from './table/table.component';\n\n/**\n * A component that helps build table or grid template with auto change `myViewMode`\n */\n@UntilDestroy()\n@Component({\n selector: 'app-table-grid,mbs-table-grid',\n templateUrl: './table-grid.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableGridComponent implements OnInit, OnChanges {\n public readonly sharedPersistentStateEnum = SharedPersistentStateEnum;\n\n private _clickedTableElement: unknown;\n private _clickTimerTableElement;\n private _paginationOptions: PaginationOptions;\n private _data: unknown[];\n private _displayData: unknown[] = [];\n\n @Input() invalid = false;\n @Input() loading = false;\n @Input() loaderType: BootstrapTheme = 'light';\n @Input() keepState = false;\n\n /**\n * If showTopControls = true main control block will be shown above the table\n */\n @Input() public showTopControls = false;\n @Input() public topControlsLabel = false;\n @Input() public topControlsLabelSelected = false;\n @Input() public topControlsDescription = '';\n @Input() public useFixedDocumentSpinner = false;\n\n public checkedTop: boolean;\n public indeterminateTop: boolean;\n\n /**\n * predicate. If it returns `true` - table will not execute getItems for this root.\n *\n * If this root has children - arrow still will be shown\n */\n @Input() loadedChildren: (root: any) => boolean;\n\n /**\n * Headers table\n */\n @Input() headers: TableHeader[];\n\n /**\n * Headers that used for building columns in subtitle row\n */\n @Input() subtitleHeaders: TableHeader[];\n\n /**\n * Source input data\n * @param {unknown[]} data\n */\n @Input() set data(data: unknown[]) {\n this._data = data;\n }\n\n get data(): unknown[] {\n return this._data;\n }\n\n /**\n * Source display data\n */\n get displayData(): unknown[] {\n if (this.paginationOptions && !this.serverSidePagination) {\n return this._displayData;\n }\n\n return this.data;\n }\n /**\n * Can manually switch view mode;\n */\n @Input() switcherView = false;\n /**\n * For group select in table\n */\n @Input() showTableCheckboxes = false;\n /**\n * For group select in children tables.\n * Works only if showTableCheckboxes = true;\n */\n @Input() showCheckboxesForChildren = true;\n\n @Input() checkboxCellWidth = '50px';\n @Input() toggleCellWidth = '50px';\n @Input() needToggleOnEndRow = false;\n @Input() removeSelectionAfterDoubleClick = false;\n\n private _selectedItems: any[] = [];\n /**\n * Check given items\n * @param {any[]} items\n */\n @Input() set selectedItems(items: any[]) {\n this._selectedItems = items ? Array.from(items) : [];\n }\n\n get selectedItems(): any[] {\n return this._selectedItems;\n }\n\n /**\n * If true - getItems function will be called after click on row arrow in collapsible mode;\n */\n @Input() lazy = false;\n\n /**\n * Function that runs to load array of child elements. Only for `lazy` mode;\n * @argument parent - parent element for new children array.\n */\n @Input() getItems: (parent: any) => Observable;\n\n /**\n * Table's content max height.\n */\n @Input() maxHeight: string;\n\n /**\n * Table's content min height.\n */\n @Input() minHeight: string;\n\n @Input() height: string | number;\n\n /**\n * Make the table header sticky.\n */\n @Input() stickyHeader = false;\n\n /**\n * Message that appears if no `data` provided or provided data is empty\n */\n @Input() noDataMessage: string | TemplateRef;\n @Input() selectedCountText: string | TemplateRef;\n @Input() selectAllButtonText: string;\n @Input() cancelSelectionText: string;\n\n /**\n * Add infinite scroll\n * @see https://www.npmjs.com/package/ngx-infinite-scroll\n * to ngx-infinite-scroll docs\n */\n @Input() infiniteScroll: boolean;\n @Input() infiniteScrollDistance: number;\n @Input() infiniteScrollThrottle: number;\n @Input() infiniteScrollLoading: boolean;\n @Input() scrollWindow = false;\n @Input() totalItems: number;\n\n /**\n * Key of `data` element for compare and select in `showTableCheckboxes` mode\n */\n @Input() bindSelected = 'id';\n @Input() bindSelectedChildren = 'id';\n enableSwitcher = true;\n\n /**\n * Have to use `serverSidePagination = true` if server side pagination\n */\n @Input() serverSidePagination = false;\n\n @Input() totalSelectedItems: number;\n @Input() entityName: string;\n @Input() showSelectAllHint = false;\n\n /**\n * If true - select row only if click on checkbox\n */\n @Input() selectOnlyOnCheckboxClick = false;\n\n /**\n * @ignore\n */\n private paginationOptionsDefault: PaginationOptions = {\n maxSize: 3,\n rotate: false,\n pageSize: 20,\n dataSize: 0,\n pageSizeList: null,\n page: 1\n };\n\n /**\n * Pagination options.\n *\n * @param {PaginationOptions} options\n *\n * For disable pagination set `pageSize=0` or `dataSize=0`\n * `maxSize` - Visible pages number. Default: `3`\n * `rotate` - Whether to rotate pages when `maxSize` > number of pages.\n * The current page always stays in the middle if true. Default: `false`\n * `pageSize` - The number of items per page. Default: `20`\n * `dataSize` - Total number of items.\n * `pageSizeList` - Array of numbers to choose `pageSize` from. Default: `null`\n * `page` - current page. Default: `1`;\n */\n @Input() set paginationOptions(options: PaginationOptions) {\n this._paginationOptions = Object.assign({}, this.paginationOptionsDefault, options);\n }\n\n get paginationOptions(): PaginationOptions {\n return this._paginationOptions || this.paginationOptionsDefault;\n }\n\n @Input() changeSortState: SortEvent;\n\n public get needToShowPaginationColumn(): boolean {\n return (\n this.showRefreshButton ||\n (this.paginationOptions.pageSize < this.paginationOptions.dataSize && (this.data || []).length > 0) ||\n (this.enableSwitcher && this.switcherView)\n );\n }\n\n /**\n * @param {ViewMode} mode\n * @default ['table']\n */\n @Input() set viewMode(mode: ViewMode) {\n this.myViewMode = mode;\n this.viewChange.emit(this.myViewMode);\n }\n\n /**\n * Disable switching from selected view to different 'table' or 'grid'\n */\n @Input() disableViewSwitch = false;\n\n @Input() showHeaders = true;\n @Input() stripedTable = false;\n @Input() hoverTable = true;\n @Input() borderedTable = true;\n\n /**\n * Table size\n */\n @Input() sizeTable: MbsSize.sm | MbsSize.lg = null;\n /**\n * Custom class applied to mbs-table-grid\n */\n @Input() classesTable: string;\n\n /**\n * Sort state sequence.\n */\n @Input() rotateSequence: { [key: string]: SortDirection } = {\n asc: 'desc',\n desc: '',\n '': 'asc'\n };\n\n @Input() getCustomRowClasses: (row: any) => string;\n @Input() rowClasses = '';\n\n /**\n * @Deprecated since shared 1.1.369\n */\n @Input() isNeedSelectRow = false;\n /**\n * Need to use this property instead of `isNeedSelectRow` since shared 1.1.369\n */\n private _selectable = false;\n @Input() set selectable(value: boolean) {\n this._selectable = this.isNeedSelectRow || value;\n }\n get selectable(): boolean {\n return this._selectable || this.isNeedSelectRow;\n }\n\n /**\n * Enable Card selection\n */\n @Input() enableCardSelection = true;\n\n @Input() multipleSelect = false;\n @Input() showSelectAllCheckbox = true;\n @Input() dependenceChildren = false;\n @Input() canSelectParent = true;\n @Input() disableChildren = false;\n @Input() multipleSelectType = MultipleSelectType.Mouse;\n @Input() selectRowClass = '-selected';\n @Input() selectCardClass = '-selected';\n\n @Input() arrayRowsWithClasses: ClassRowObject[] = [];\n @Input() bindKeyForRowClass = 'id';\n @Input() childHeaderClasses: string;\n @Input() childRowsClasses: string;\n\n @Input() highlightOpened: boolean | string = false;\n\n @Input() bindDisabledValues: { key: string; value: any };\n\n @Output() sort: EventEmitter = new EventEmitter();\n /**\n * @deprecated\n **/\n @Output() pageChange: EventEmitter = new EventEmitter();\n /**\n * replacement for `pageChange`\n * */\n @Output() pageSwitch: EventEmitter = new EventEmitter();\n @Output() pageSizeChange: EventEmitter = new EventEmitter();\n @Output() viewChange: EventEmitter = new EventEmitter();\n @Output() changeSelected: EventEmitter = new EventEmitter();\n @Output() rowClick: EventEmitter = new EventEmitter();\n /**\n * Returned the data of row or tile that was clicked. Not work if did double click.\n * */\n @Output() clickTableElement: EventEmitter = new EventEmitter();\n /**\n * Returned the data of row or tile that was double clicked.\n * */\n @Output() doubleClickTableElement: EventEmitter = new EventEmitter();\n\n @Output() selectAllOnAllPages: EventEmitter = new EventEmitter();\n\n public myViewMode: ViewMode = !this.disableViewSwitch ? this.sharedPersistent.data.viewTableGridMode : SharedPersistentStateEnum.table;\n public lastViewMode: ViewMode = this.myViewMode;\n\n @Input() showNav: boolean;\n @Input() bindChildren: string;\n\n /**\n * Key that allows to distinguish one parent from the other, like id, GUID and so on.\n * uses to save collapsing status on data update.\n */\n @Input() bindParentKey: string;\n @Input() collapsibleMode = false;\n @Input() cardMode = false;\n @Input() needChildrenPaddingLeft = true;\n @Input() selectAllIgnoreDisabled = false;\n /**\n * function used in every row \"for in\".\n */\n // eslint-disable-next-line @typescript-eslint/ban-types\n @Input() myTrackBy: (index: number, item: ExtendedTableRow) => {};\n\n /**\n * If true - show headers for children in collapsible mode.\n */\n @Input() showChildrenHeaders = true;\n\n /**\n * Add virtual scrolling\n */\n @Input() virtualScrolling = false;\n\n /**\n * Setting custom virtual height for row in px.\n */\n @Input() virtualItemSize = 50;\n\n /**\n * Setting number of visible rows in table\n */\n @Input() virtualItemsNumber = 20;\n\n @Input() staticHeightIfVoidData = false;\n\n /* eslint-disable sonarjs/no-identical-functions */\n cellTemplates: TemplateRef[] = [];\n\n /**\n * @deprecated since release/4.7\n * @param {QueryList>} value\n */\n @ContentChildren('templateCell') set cellRefTemplates(value: QueryList>) {\n if (value.length > 0) {\n this.cellTemplates = value.toArray();\n }\n }\n\n @ContentChildren(TableFilterDirective, {\n read: TableFilterDirective,\n descendants: false\n })\n filterTemplates: QueryList;\n\n public get filters(): QueryList {\n return this.filterTemplates;\n }\n\n @ContentChild(TableNavContentDirective, {\n read: TableNavContentDirective,\n static: false\n })\n customContentTemplate: TableNavContentDirective;\n\n public get navContent(): TableNavContentDirective {\n return this.customContentTemplate;\n }\n\n @ContentChildren(TableControlDirective, {\n read: TableControlDirective,\n descendants: false\n })\n controlTemplates: QueryList;\n\n public get customControls(): QueryList {\n return this.controlTemplates;\n }\n\n childrenTemplates: TemplateRef[] = [];\n\n /**\n * @deprecated since release/4.7\n * @param {QueryList>} value\n */\n @ContentChildren('childTemplateCell') set childrenRefTemplates(value: QueryList>) {\n if (value.length > 0) {\n this.childrenTemplates = value.toArray();\n }\n }\n\n @ContentChildren(TableCellDirective, { read: TableCellDirective, descendants: true }) set contentTemplates(\n value: QueryList\n ) {\n const cells = value.toArray();\n\n const childTemplates = cells.filter((c) => c.group === 'child');\n this.childrenTemplates = childTemplates.length > 0 ? childTemplates.map((c) => c.template) : this.childrenTemplates;\n\n const templates = cells.filter((c) => isNil(c.group));\n this.cellTemplates = templates.length > 0 ? templates.map((c) => c.template) : this.cellTemplates;\n }\n\n @ContentChild(GridTileDirective, { read: TemplateRef, static: false }) tileTemplate: TemplateRef;\n\n @ContentChildren(TableHeaderNameDirective) headerTemplates: QueryList;\n\n @ContentChild('gridHeader', { static: true }) gridHeaderTemplate: TemplateRef;\n\n @HostListener('window:resize', ['$event'])\n onResize(event: Event) {\n if (event.target instanceof Window && !this.disableViewSwitch) {\n queueMicrotask(() => {\n if ((event.target as Window).innerWidth < 576) {\n this.enableSwitcher = false;\n this.myViewMode = SharedPersistentStateEnum.grid;\n } else {\n this.enableSwitcher = true;\n this.myViewMode = this.lastViewMode;\n }\n\n this.viewChange.emit(this.myViewMode);\n });\n }\n }\n\n @Input() showRefreshButton = false;\n @Input() wideContentMode = false;\n @Input() fullContentWidth = false;\n @Input() showExportToCSVButton = false;\n\n /**\n * Emits on refresh button click with no data;\n */\n @Output() refresh: EventEmitter = new EventEmitter();\n @Output() export: EventEmitter = new EventEmitter();\n @Output() scrolled: EventEmitter = new EventEmitter();\n @Output() scroll: EventEmitter = new EventEmitter();\n\n @ContentChild(PrependTopControlsLabel, { static: true, read: PrependTopControlsLabel }) prependTopControlsLabel: PrependTopControlsLabel;\n @ContentChild(AppendTopControlsLabel, { static: true, read: AppendTopControlsLabel }) appendTopControlsLabel: AppendTopControlsLabel;\n\n constructor(@Inject(SHARED_PERSISTENT_STATE) private sharedPersistent: SharedPersistentStateService, private cdr: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n if (this.showTopControls) this.updateMainCheckboxData();\n\n if (!this.disableViewSwitch) {\n this.sharedPersistent.change.pipe(untilDestroyed(this)).subscribe((mode) => {\n this.onViewChange(mode.viewTableGridMode);\n this.cdr.detectChanges();\n });\n }\n\n if (\n this.paginationOptions?.pageSize &&\n !isNil(this.paginationOptions.pageSizeList) &&\n !this.paginationOptions.pageSizeList.includes(this.paginationOptions.pageSize)\n ) {\n this.paginationOptions.pageSize = this.paginationOptions.pageSizeList[0];\n }\n\n if (window.innerWidth < 576 && !this.disableViewSwitch) {\n this.enableSwitcher = false;\n this.myViewMode = SharedPersistentStateEnum.grid;\n }\n\n this.viewChange.emit(this.myViewMode);\n }\n\n ngOnChanges(changes: { [propKey: string]: SimpleChange }): void {\n if (changes.paginationOptions || changes.serverSidePagination || changes.data) {\n this.updateDisplayData();\n }\n\n if (changes.viewMode) {\n this.lastViewMode = this.myViewMode;\n }\n\n if (\n this.showNav !== false &&\n ((changes.showRefreshButton && !changes.showRefreshButton.firstChange) ||\n (changes.switcherView && !changes.switcherView.firstChange) ||\n (changes.paginationOptions && !changes.paginationOptions.firstChange) ||\n (changes.data && !changes.data.firstChange))\n ) {\n this.showNav = this.needToShowNav();\n }\n\n if (this.showTopControls && changes.selectedItems) {\n this.updateMainCheckboxData();\n }\n }\n\n ngAfterViewInit(): void {\n if (isNil(this.showNav)) {\n this.updateShowingNavAfterChanges();\n }\n\n this.filterTemplates.changes.subscribe(() => {\n this.updateShowingNavAfterChanges();\n });\n\n this.controlTemplates.changes.subscribe(() => {\n this.updateShowingNavAfterChanges();\n });\n }\n\n needToShowNav(): boolean {\n return (\n this.needToShowPaginationColumn ||\n !!this.customContentTemplate ||\n this.filterTemplates?.length > 0 ||\n this.controlTemplates?.length > 0\n );\n }\n\n updateShowingNavAfterChanges() {\n this.showNav = this.needToShowNav();\n this.cdr.detectChanges();\n }\n\n getFlatData(): any[] {\n return (this.displayData as any[]).reduce((acc, next) => {\n acc.push(next);\n\n if (next[this.bindChildren]?.length) {\n acc.push(...next[this.bindChildren]);\n }\n\n return acc;\n }, []);\n }\n\n updateMainCheckboxData(items?: any): void {\n const selectedLength = items ? items.length : this.selectedItems?.length || 0;\n const flatAllLength = this.getFlatData()?.length || 0;\n\n this.checkedTop = selectedLength === flatAllLength && selectedLength !== 0;\n this.indeterminateTop = selectedLength !== 0 && selectedLength !== flatAllLength;\n\n this.cdr.detectChanges();\n }\n\n topControlsCheckboxChangeHandler(event: boolean): void {\n if (!event) {\n this.selectedItems = [];\n this.handleSelectedRow([]);\n\n return;\n }\n\n const flatData = Array.from(this.getFlatData());\n\n this.selectedItems = flatData;\n this.handleSelectedRow(flatData);\n this._displayData = cloneDeep(this._displayData);\n\n this.cdr.detectChanges();\n }\n\n onPageChange(page: number): void {\n this.updateDisplayData();\n this.pageChange.emit(page);\n this.paginationOptions = Object.assign({}, this.paginationOptions, { page });\n this.pageSwitch.emit(this.paginationOptions);\n this.setTotalSelectedItems(0);\n }\n\n onPageSwitch(options: PaginationOptions): void {\n this.updateDisplayData();\n this.paginationOptions = options;\n this.pageSwitch.emit(this.paginationOptions);\n this.setTotalSelectedItems(0);\n }\n\n onViewChange(mode: SharedPersistentStateEnum): void {\n this.myViewMode = window.innerWidth < 576 ? SharedPersistentStateEnum.grid : mode;\n this.lastViewMode = this.myViewMode;\n this.viewChange.emit(this.myViewMode);\n }\n\n handleSort(event: SortEvent): void {\n this.sort.emit(event);\n this.setTotalSelectedItems(0);\n }\n\n handleSelectedRow(item: any | any[]): void {\n this.changeSelected.emit(item);\n\n if (this.showTopControls) {\n this.updateMainCheckboxData(item);\n }\n }\n\n handleClickTableElement(row: any): void {\n if (\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n this._clickedTableElement?.[this.bindSelected] === row[this.bindSelected] &&\n this._clickTimerTableElement\n ) {\n this._clickedTableElement = null;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n clearTimeout(this._clickTimerTableElement);\n this.removeSelectionAfterDoubleClick && removeSelection();\n // double click\n this.doubleClickTableElement.emit(row);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n this._clickedTableElement = row;\n this._clickTimerTableElement = setTimeout(() => {\n this._clickTimerTableElement = null;\n this._clickedTableElement = null;\n // single click\n this.clickTableElement.emit(row);\n }, 300);\n }\n }\n\n handleChangePageSize(options: PaginationOptions): void {\n this.paginationOptions = options;\n this.pageSizeChange.emit(this.paginationOptions);\n this.setTotalSelectedItems(0);\n }\n\n public setTotalSelectedItems(itemsCount: number) {\n this.totalSelectedItems = itemsCount;\n const totalItems = this.paginationOptions?.dataSize ? this.paginationOptions?.dataSize : this.totalItems;\n this.selectAllOnAllPages.emit(itemsCount === totalItems);\n }\n\n private updateDisplayData(): void {\n const isNeedClipData: boolean =\n this.paginationOptions.pageSize < this.paginationOptions.dataSize && (this.data || []).length > 0 && !this.serverSidePagination;\n\n this._displayData = isNeedClipData ? this.getClippedInitData() : Array.from(this.data || []);\n }\n\n private getClippedInitData(): unknown[] {\n return this.data.slice(\n this.paginationOptions.pageSize * (this.paginationOptions.page - 1),\n this.paginationOptions.pageSize * (this.paginationOptions.page - 1) + this.paginationOptions.pageSize\n );\n }\n}\n","import { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { NgScrollbarModule } from 'ngx-scrollbar';\nimport { ButtonModule } from '../button/button.module';\nimport { SharedDirectivesModule } from '../directives/directives.module';\nimport { CheckboxModule } from '../form/checkbox/checkbox.module';\nimport { LoaderModule } from '../loader/loader.module';\nimport { TextEllipsisModule } from '../text-ellipsis';\nimport { TileModule } from '../tile/tile.module';\nimport { GridTileDirective } from './directives/grid-tile.directive';\nimport { TableHeaderNameDirective } from './directives/headerFor.directive';\nimport { TableCellDirective } from './directives/table-cell.directive';\nimport { TableControlDirective } from './directives/table-control.directive';\nimport { TableFilterDirective } from './directives/table-filter.directive';\nimport { FiltersGroupDirective } from './directives/table-filters-group.directive';\nimport { TableNavContentDirective } from './directives/table-nav-content.directive';\nimport { TableSortArrowDirective } from './directives/table-sort-arrow.directive';\nimport { TableSortGroupDirective } from './directives/table-sort-group.directive';\nimport { TableSortDirective } from './directives/table-sort.directive';\nimport { GridComponent } from './grid/grid.component';\nimport { TableNavComponent } from './nav/table-nav.component';\nimport { TableGridComponent } from './table-grid.component';\nimport { TableComponent } from './table/table.component';\n\n@NgModule({\n imports: [\n CommonModule,\n NgbModule,\n LoaderModule,\n CheckboxModule,\n FormsModule,\n ButtonModule,\n TileModule,\n ScrollingModule,\n NgScrollbarModule,\n InfiniteScrollModule,\n TextEllipsisModule,\n SharedDirectivesModule\n ],\n declarations: [\n TableGridComponent,\n TableSortDirective,\n TableSortArrowDirective,\n TableHeaderNameDirective,\n TableComponent,\n GridComponent,\n TableCellDirective,\n TableSortGroupDirective,\n GridTileDirective,\n TableFilterDirective,\n TableNavComponent,\n TableNavContentDirective,\n TableControlDirective,\n FiltersGroupDirective\n ],\n exports: [\n TableGridComponent,\n TableSortDirective,\n TableSortArrowDirective,\n TableHeaderNameDirective,\n TableComponent,\n TableCellDirective,\n TableSortGroupDirective,\n GridTileDirective,\n TableFilterDirective,\n TableNavComponent,\n TableNavContentDirective,\n TableControlDirective,\n FiltersGroupDirective\n ]\n})\nexport class TableGridModule {}\n","
\n\n \n\n
\n \n
\n\n
\n\n \n\n \n
\n \n
\n
\n\n \n
\n \n
\n
\n\n
\n\n \n\n
\n\n
\n\n
\n \n {{ column.name }}\n \n
\n\n
\n \n
\n\n
\n\n
\n\n
\n {{ column.name }}\n
\n\n
\n\n \n\n
\n\n
\n\n
\n \n
\n\n
\n
\n\n \n\n
\n \n
\n\n \n \n \n\n
\n\n
\n\n \n\n
\n\n
\n\n \n\n
\n\n \n \n \n \n\n \n\n \n\n
\n\n \n\n \n \n \n\n \n\n \n\n
\n\n
\n\n
\n\n
\n \n
\n\n\n\n \n\n
\n \n
\n\n
\n\n
\n\n\n\n
\n\n
\n\n \n\n {{ selectedCountText || getSelectedCountTextDefault() }} \n\n \n {{ selectAllButtonText || getSelectAllButtonTextDefault() }}\n \n\n \n {{ cancelSelectionText || cancelSelectionTextDefault }}\n \n
\n\n
\n\n
\n\n\n\n
\n {{ noDataMessage || noDataMessageDefault }}\n
\n\n
\n\n\n\n\n \n\n
\n\n \n
\n\n \n\n
\n
\n\n
\n\n
\n\n \n\n
\n\n
\n\n \n
\n\n
\n\n
\n\n \n\n \n\n
\n\n \n\n
\n \n
\n\n
\n\n
\n\n \n\n \n\n
\n\n
\n\n
0 && (collapsibleMode ? !isCollapsed(row.item) : true)\"\n [class.-collapsible]=\"collapsibleMode\"\n class=\"mbs-table-grid_table-inner\">\n\n
\n\n
\n\n \n \n \n\n
\n\n virtualItemsNumber); else\n noVirtualScrolling\">\n\n \n\n \n\n \n \n \n\n \n\n \n\n \n\n \n\n \n \n \n\n \n\n \n\n
\n\n
\n\n \n
\n\n
\n\n \n\n
\n \n
\n\n
\n\n
\n\n
\n\n
\n\n
\n\n \n\n
\n\n
\n\n \n
\n\n
\n\n \n\n
\n \n
\n\n
\n\n
\n\n
\n\n
\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n Output,\n QueryList,\n SimpleChange,\n TemplateRef,\n ViewChild,\n ViewChildren\n} from '@angular/core';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { isEqual, isNil } from 'lodash';\nimport { Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { ElementSize, SortDirection, SortEvent, rotate } from '../../models';\nimport { BootstrapTheme, MbsSize, cancelSelectionTextDefault, isTemplate, noDataMessageDefault } from '../../utils';\nimport { TableHeaderNameDirective } from '../directives/headerFor.directive';\nimport { TableCellDirective } from '../directives/table-cell.directive';\n\nexport interface TableColumn {\n name: string;\n overflow?: boolean;\n gridColSize?: string;\n gridColMin?: string;\n sort?: string;\n class?: string | string[];\n headerClass?: string;\n headerTemplate?: TemplateRef;\n headerName?: string;\n colSpan?: string[]; // array of widths any valid CSS value except FRs\n}\n\nexport interface OnChange {\n [propKey: string]: SimpleChange;\n}\n\nexport interface ClassRowObject {\n [name: string]: string;\n\n class: string;\n childRowsClass?: string;\n}\n\nexport enum MultipleSelectType {\n Mouse = 'mouse',\n Keyboard = 'keyboard'\n}\n\nexport interface ExtendedTableRow {\n item: any;\n indeterminate: boolean;\n loadingChildren: boolean;\n loadedChildren: boolean;\n}\n\n@UntilDestroy()\n@Component({\n selector: 'app-table,mbs-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableComponent implements OnInit, OnChanges {\n /**\n * The flat data is original copy from data in 1 level\n * @private\n */\n #flatData: any[];\n #selectedItems: any[] = [];\n #extendedData: ExtendedTableRow[];\n #selectable: boolean;\n #defaultHighlightClass = 'bg-blue-10';\n #classesTable = '';\n\n /**\n * Index of the last clicked row if MultipleSelectType.Keyboard is enabled and SHIFT is pressed\n * @private\n */\n private lastShiftSelectedIndex = 0;\n private openedCollapsibleItems: any[] = [];\n private requestedChildren: any[] = [];\n private myHeaderTemplates: TableHeaderNameDirective[] = [];\n\n public classTableGridObject: { [prefix: string]: boolean };\n public noDataMessageDefault = noDataMessageDefault;\n public cancelSelectionTextDefault = cancelSelectionTextDefault;\n public isTemplate = isTemplate;\n public parentScrollMode: 'basic' | 'virtual' | 'infinite' = 'basic';\n public myTemplates: TemplateRef[] = [];\n public myChildrenTemplates: TemplateRef[] = [];\n public rowStyles: {\n gridHeaderColumns: SafeStyle;\n gridTemplateColumns: SafeStyle;\n };\n public subtitleStyles: {\n gridTemplateColumns: SafeStyle;\n };\n public actualTableColumnsForStyles: TableColumn[] = [];\n public gridSize: ElementSize;\n\n @Input() headers: TableColumn[] = [];\n @Input() subtitleHeaders: TableColumn[] = this.headers;\n @Input() showHeaders = true;\n @Input() keepState = false;\n @Input() bordered = true;\n /**\n * predicate. If it returns `true` - table will not execute getItems for this root.\n *\n * If this root has children - arrow still will be shown\n */\n @Input() loadedChildren: (item: any) => boolean;\n @Input() bindChildren: string;\n @Input() showCheckboxes: boolean;\n @Input() showCheckboxesForChildren = true;\n @Input() noDataMessage: string | TemplateRef;\n @Input() selectedCountText: string | TemplateRef;\n @Input() selectAllButtonText: string;\n @Input() cancelSelectionText: string;\n @Input() collapsibleMode = false;\n @Input() cardMode = false;\n @Input() needChildrenPaddingLeft = true;\n @Input() maxHeight: string;\n @Input() minHeight: string;\n @Input() stickyHeader = false;\n @Input() rotateSequence: { [key: string]: SortDirection } = rotate;\n\n /**\n * If true - select row only if click on checkbox\n */\n @Input() selectOnlyOnCheckboxClick: boolean;\n\n /** Infinite Scroll */\n @Input() infiniteScroll: boolean;\n @Input() infiniteScrollDistance: number;\n @Input() infiniteScrollThrottle: number;\n @Input() scrollWindow = false;\n\n @Input() infiniteScrollLoading: boolean;\n\n /**\n * Classes that will be added to opened row (parent, children and children headers).\n * if it's `true` - default class (`bg-blue-10`) will be used.\n */\n @Input() highlightOpened: boolean | string = false;\n\n /**\n * If true - getItems function will be called after click on row arrow in collapsible mode;\n */\n @Input() lazy = false;\n\n /**\n * Function that runs to load array of child elements. Only for `lazy` mode;\n * @argument parent - parent element for new children array.\n */\n @Input() getItems: (parent: any) => Observable;\n\n /**\n * Key that allows to distinguish one parent from the other, like id, GUID and so on.\n * uses to save collapsing status on data update.\n */\n @Input() public bindParentKey: string;\n\n @Input() set templates(value: TemplateRef[]) {\n this.myTemplates = value;\n }\n\n @Input() set childrenTemplates(value: TemplateRef[]) {\n this.myChildrenTemplates = value;\n }\n\n @ViewChild('table') tableRef: ElementRef;\n\n @ViewChildren(TableCellDirective, { read: TableCellDirective })\n contentTemplates12;\n\n // will assign anyway\n @ContentChildren(TableCellDirective, {\n read: TableCellDirective,\n descendants: true\n })\n set contentTemplates(value: QueryList) {\n const cells = value.toArray();\n const childTemplates = cells.filter((c) => c.group == 'child');\n this.myChildrenTemplates = childTemplates.length > 0 ? childTemplates.map((c) => c.template) : this.myChildrenTemplates;\n const templates = cells.filter((c) => isNil(c.group));\n this.myTemplates = templates.length > 0 ? templates.map((c) => c.template) : this.myTemplates;\n }\n\n @Input() set headerTemplates(obj: TableHeaderNameDirective[]) {\n this.myHeaderTemplates = obj || [];\n }\n\n @ContentChildren(TableHeaderNameDirective) set contentHeaderTemplates(value: QueryList) {\n // don't overwrite if push from `@Input`\n if (value.length > 0) {\n this.myHeaderTemplates = value.toArray();\n }\n }\n\n @Input() changeSortState: SortEvent;\n @Input() striped = false;\n @Input() hover = true;\n @Input() loading = false;\n @Input() loaderType: BootstrapTheme = 'light';\n\n /**\n * Table size\n */\n @Input() size: MbsSize.sm | MbsSize.lg = null;\n\n /**\n * Custom class applied to mbs-table-grid\n * @param {string} value - The custom class to be applied.\n */\n @Input() set classesTable(value: string) {\n this.#classesTable = value || '';\n this.updateClassTableGridObject();\n }\n\n get classesTable(): string {\n return this.#classesTable;\n }\n\n /**\n * Key of `data` element for compare and select in `showTableCheckboxes` mode\n */\n @Input() bindSelected = 'id';\n\n /**\n * * Key of `data` element for compare and select in `showTableCheckboxes` mode\n */\n @Input() bindSelectedChildren = 'id';\n\n /**\n * Table's height. By default, it has an auto height. If its value is a number, the height is measured in pixels; if its value is a string, the value will be assigned to element's style.height, the height is affected by external styles\n * @type {string | number}\n */\n @Input() height: string | number;\n @Input() staticHeightIfVoidData = false;\n\n @Input() getCustomRowClasses: (row: any) => string;\n @Input() rowClasses = '';\n @Input() checkboxCellClass: string;\n @Input() checkboxCellWidth = '50px';\n @Input() toggleCellWidth = '50px';\n @Input() needToggleOnEndRow = false;\n @Input() contentClass: string;\n /**\n * @Deprecated since shared 1.1.369\n * Need to use this property `selectable` instead of `isNeedSelectRow` since shared 1.1.369\n */\n @Input() isNeedSelectRow: boolean;\n\n @Input() set selectable(value: boolean) {\n this.#selectable = this.isNeedSelectRow || value;\n }\n\n get selectable(): boolean {\n return this.#selectable || this.isNeedSelectRow;\n }\n\n @Input() multipleSelect = false;\n @Input() showSelectAllCheckbox = true;\n @Input() multipleSelectType = MultipleSelectType.Mouse;\n /**\n * if `false` - ignore selecting parent rows. Collapsible mode only;\n */\n @Input() canSelectParent = true;\n\n @Input() selectRowClass = '-selected';\n @Input() selectAllIgnoreDisabled = false;\n @Input() arrayRowsWithClasses: ClassRowObject[] = [];\n @Input() bindKeyForRowClass = 'id';\n @Input() childHeaderClasses: string;\n @Input() childRowsClasses: string;\n\n /**\n * if true - shows headers in collapsed content. Collapsible mode only;\n */\n @Input() showChildrenHeaders = true;\n\n /**\n * function used in every rows \"for in\".\n */\n @Input() myTrackBy: (index: number, item: any) => any;\n\n @Input() bindDisabledValues: { key: string; value: any };\n\n @Input() virtualScrolling = false;\n @Input() virtualItemSize = 50;\n @Input() virtualItemsNumber = 20;\n @Input() minVirtualScrollItemSize = 10;\n @Input() maxVirtualScrollItemSize = 40;\n @Input() virtualScrollItemSizeDivider = 10;\n @Input() minBufferPx = 1200;\n @Input() maxBufferPx = 1200;\n\n @Input() dependenceChildren = false;\n @Input() disableChildren = false;\n\n @Input() showSelectAllHint = false;\n @Input() totalItems: number;\n @Input() totalSelectedItems: number;\n @Input() entityName: string;\n @Input() useFixedDocumentSpinner = false;\n\n @Output() sort: EventEmitter = new EventEmitter();\n @Output() clickTableElement: EventEmitter = new EventEmitter();\n @Output() changeSelected: EventEmitter = new EventEmitter();\n @Output() selectAllOnAllPages: EventEmitter = new EventEmitter();\n @Output() scrolled: EventEmitter = new EventEmitter();\n @Output() scrollEnd: EventEmitter = new EventEmitter();\n @Output() scrolledIndexChange: EventEmitter = new EventEmitter();\n @Output() scroll: EventEmitter = new EventEmitter();\n\n /**\n * Set selected items. Main array (only flat) for selected parent/child items\n * @param {any[]} items\n */\n @Input() set selectedItems(items: any[]) {\n if (this.dependenceChildren && this.multipleSelect && !this.keepState) {\n this.setDependenceChildren(items);\n } else {\n this.#selectedItems = items ? Array.from(items) : [];\n }\n\n if (items?.length && this.isBindChildrenInMultipleSelect) {\n queueMicrotask(() => this.updateCheckboxesState());\n }\n }\n\n get isBindChildrenInMultipleSelect(): boolean {\n return Boolean(this.bindChildren && this.bindSelectedChildren && this.multipleSelect);\n }\n\n /**\n * Return all selected items\n */\n // eslint-disable-next-line @typescript-eslint/adjacent-overload-signatures\n get selectedItems(): any[] {\n return this.#selectedItems;\n }\n\n @Input() set data(data: any[]) {\n this.#extendedData = data.map((itemData: any) => {\n const tmp = {\n item: itemData,\n indeterminate: false,\n loadingChildren: false,\n loadedChildren: this.loadedChildren\n ? this.loadedChildren(itemData)\n : this.keepState\n ? this.requestedChildren.includes(itemData[this.bindParentKey])\n : false\n };\n\n if (this.lazy && this.keepState && this.requestedChildren.includes(itemData[this.bindParentKey])) {\n tmp.item[this.bindChildren] = this.#extendedData.find((el) => el.item[this.bindParentKey] === itemData[this.bindParentKey]).item[\n this.bindChildren\n ];\n }\n\n return tmp;\n });\n\n this.updateFlatData(this.#extendedData);\n }\n\n get data(): any[] {\n return this.#extendedData;\n }\n\n get isDisableHeaderCheckbox(): boolean {\n return (this.selectAllIgnoreDisabled && this.selectAllIsNotDisabled().length === 0) || this.data.length === 0;\n }\n\n get isShowSelectAllTooltip() {\n return this.showSelectAllHint && this.totalItems && this.data?.length && this.data.length === this.selectedItems?.length;\n }\n\n @HostBinding('style.height') get getHeight() {\n if (this.data.length <= 0 && !this.staticHeightIfVoidData) {\n return 'auto';\n } else if (typeof this.height === 'number') {\n return `${this.height}px`;\n } else {\n return this.height;\n }\n }\n\n public get indeterminateMainCheckbox(): boolean {\n return (\n this.selectedItems.length > 0 &&\n this.selectedItems.length <\n this.#flatData.length -\n (this.bindDisabledValues && this.selectAllIgnoreDisabled\n ? this.#flatData.filter(\n (dataItem) => dataItem.item.disabled || dataItem.item[this.bindDisabledValues.key] === this.bindDisabledValues.value\n ).length\n : 0)\n );\n }\n\n constructor(private sanitizer: DomSanitizer, private cdr: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n if (!(this.collapsibleMode || this.bindChildren) && this.virtualScrolling) {\n this.parentScrollMode = 'virtual';\n }\n\n if (!(this.collapsibleMode || this.bindChildren) && this.infiniteScroll) {\n this.parentScrollMode = 'infinite';\n }\n\n if (this.disableChildren) {\n this.data.forEach((dataItem) => {\n const disabled = !this.isSelectedRow(dataItem.item, true);\n\n dataItem[this.bindChildren].forEach((child) => (child.disabled = disabled));\n });\n }\n\n // init flatData\n this.updateFlatData(this.#extendedData);\n\n if (this.highlightOpened && this.collapsibleMode) {\n if (typeof this.highlightOpened === 'boolean') {\n this.childHeaderClasses += ' ' + this.#defaultHighlightClass;\n } else {\n this.childHeaderClasses += ' ' + this.highlightOpened;\n }\n }\n\n this.updateClassTableGridObject();\n }\n\n ngOnChanges(changes: OnChange): void {\n if (changes.data || changes.showCheckboxes || changes.headers) {\n this.generateActualTableColumnsForStyles();\n this.updateStylesAndHeaders();\n }\n\n if (changes.data || changes.showCheckboxes) {\n this.updateDataDependentOptions();\n\n if (this.isBindChildrenInMultipleSelect) {\n this.updateCheckboxesState();\n }\n }\n\n if (changes.striped || changes.hover || changes.bordered || changes.loading || changes.size) {\n this.updateClassTableGridObject();\n }\n }\n\n /**\n * Check disabling state for parent/child checkbox\n * @param {any} row\n * @return {boolean}\n */\n disabledStateByRow(row: any): boolean {\n if (this.bindDisabledValues) {\n return row[this.bindDisabledValues.key] === this.bindDisabledValues.value || row.disabled;\n }\n\n return row.disabled;\n }\n\n /**\n * Check indeterminate state for parent checkbox\n * @param {any} row\n * @return {boolean}\n */\n indeterminateState(row): boolean {\n if (this.dependenceChildren && row.item[this.bindChildren]) {\n return row.indeterminate;\n }\n\n return false;\n }\n\n updateDataDependentOptions(): void {\n if (this.keepState) {\n const bind = !isNil(this.bindParentKey) ? this.bindParentKey : this.bindSelected;\n\n if (this.dependenceChildren && this.multipleSelect) {\n this.setDependenceChildren(this.#selectedItems, true);\n }\n\n this.requestedChildren = this.requestedChildren.filter((requested) => !!this.data.find((item) => item.item[bind] === requested));\n this.openedCollapsibleItems = this.openedCollapsibleItems.filter((opened) => !!this.data.find((item) => item.item[bind] === opened));\n } else {\n this.#selectedItems = [];\n this.requestedChildren = [];\n this.openedCollapsibleItems = [];\n }\n\n this.changeSelected.emit(this.selectedItems);\n }\n\n updateCheckboxesState(): void {\n this.#extendedData = this.#extendedData.map((element: ExtendedTableRow) => {\n if (element.item[this.bindChildren]?.length) {\n const someSelected = element.item[this.bindChildren]?.some((child) => this.isSelectedRow(child, false));\n const someNoteSelected = element.item[this.bindChildren]?.some((child) => !this.isSelectedRow(child, false));\n\n element.indeterminate = someSelected && someNoteSelected;\n }\n\n return element;\n });\n\n this.cdr.detectChanges();\n }\n\n /**\n * Mark parent children by adding them to selectedItems array\n * @param {any[]} items\n * @param {boolean} keep keep state checked items\n * @private\n */\n private setDependenceChildren(items: any[], keep = false): void {\n const tmp = [];\n\n items.forEach((item) => {\n tmp.push(item);\n\n if (!isNil(item[this.bindChildren])) {\n const childItems = item[this.bindChildren];\n\n childItems.forEach((child) => {\n const some = items.some((childItem) => childItem[this.bindSelectedChildren] === child[this.bindSelectedChildren]);\n\n if (!some && !keep) {\n tmp.push(child);\n }\n });\n }\n });\n\n this.#selectedItems = Array.from(tmp);\n }\n\n updateStylesAndHeaders(): void {\n let styles: string[] = [];\n let headerStyles: string[] = [];\n\n if (this.showCheckboxes) {\n styles = [this.checkboxCellWidth];\n headerStyles = [this.checkboxCellWidth];\n }\n\n if (this.collapsibleMode && !this.needToggleOnEndRow) {\n styles = [...styles, this.toggleCellWidth];\n headerStyles = [...headerStyles, this.toggleCellWidth];\n }\n\n let style = styles.concat(this.getStyles(this.headers || [])).join(' ');\n let headerStyle = headerStyles.concat(this.getHeaderStyles(this.headers || [])).join(' ');\n\n if (this.collapsibleMode && this.needToggleOnEndRow) {\n style = `${style} ${this.toggleCellWidth}`;\n headerStyle = `${headerStyles} ${this.toggleCellWidth}`;\n }\n\n if (this.subtitleHeaders) {\n let subtitleStyle = this.subtitleHeaders.map((h) => `minmax(${h.gridColMin || '1px'}, ${h.gridColSize || '15fr'})`).join(' ');\n\n if (this.showCheckboxes && this.showCheckboxesForChildren) {\n const checkboxStyles = `minmax(${this.checkboxCellWidth},${this.checkboxCellWidth}) `;\n\n subtitleStyle = checkboxStyles.concat(' ', subtitleStyle);\n }\n\n this.subtitleStyles = {\n gridTemplateColumns: this.sanitizer.bypassSecurityTrustStyle(subtitleStyle)\n };\n }\n\n this.rowStyles = {\n gridTemplateColumns: this.sanitizer.bypassSecurityTrustStyle(style),\n gridHeaderColumns: this.sanitizer.bypassSecurityTrustStyle(headerStyle)\n };\n }\n\n /**\n * Get all list classes for row\n * @param {any} row\n * @param {boolean} isParent\n * @param {number} rowIndex\n * @return {string}\n */\n getClassListForRow(row, isParent: boolean, rowIndex: number): string {\n let rowClass = this.getRowClass(row, isParent, rowIndex);\n\n if (this.highlightOpened && this.collapsibleMode && !this.isCollapsed(row)) {\n if (typeof this.highlightOpened === 'boolean') {\n rowClass += ' ' + this.#defaultHighlightClass;\n } else {\n rowClass += ' ' + this.highlightOpened;\n }\n }\n\n if (this.selectable && this.isSelectedRow(row, isParent)) {\n rowClass += ' ' + this.selectRowClass;\n }\n\n return rowClass;\n }\n\n /**\n * Check if there is a parent / child row in the selectedItems array\n * @param {any} row\n * @param {boolean} isParent\n * @return {boolean}\n */\n private isSelectedRow(row: any, isParent: boolean): boolean {\n if (this.selectedItems.length === 0 || isNil(row)) return false;\n\n const compareKey = isParent ? this.bindParentKey || this.bindSelected : this.bindSelectedChildren;\n\n return this.selectedItems.some((item) => item[compareKey] === row[compareKey]);\n }\n\n /**\n * Get classes for row\n * @param {any} row\n * @param {boolean} isParent\n * @param {number} rowIndex\n * @return {string}\n */\n getRowClass(row, isParent: boolean, rowIndex: number): string {\n let rowClass = isParent ? this.rowClasses : '';\n\n if (this.arrayRowsWithClasses.length) {\n const index = this.arrayRowsWithClasses.findIndex(\n (item) => item[this.bindKeyForRowClass] === row[this.bindKeyForRowClass].toString()\n );\n\n if (!isParent && this.childRowsClasses) rowClass += ` ${this.childRowsClasses}`;\n\n if (index >= 0) {\n if (isParent) rowClass += ` ${this.arrayRowsWithClasses[index].class}`;\n else if (this.arrayRowsWithClasses[index].childRowsClass) rowClass += ` ${this.arrayRowsWithClasses[index].childRowsClass}`;\n }\n }\n\n if (this.disabledStateByRow(row)) {\n rowClass += ' -disabled';\n }\n\n rowClass += ' ' + (typeof this.getCustomRowClasses === 'function' ? this.getCustomRowClasses(row) : '');\n\n if (this.cardMode && (this.data.length - 1 === rowIndex || this.data[rowIndex + 1]?.item?.isCardHeader)) {\n rowClass += ' -last-card-row';\n }\n\n return rowClass + ' ';\n }\n\n /**\n * Updating the main array of selected rows\n * @param {row} row to add/remove from the array `selectedItems`\n * @param {state} state for selected/unselected row\n * @param {boolean} isParent click target is parent if true\n * @private\n */\n private updateSelectedItems(row: any, state: boolean, isParent: boolean): void {\n let clone = [...this.selectedItems];\n\n if (!this.multipleSelect) clone = []; // for Single Selected Mode\n\n const selectedKey = isParent ? this.bindParentKey || this.bindSelected : this.bindSelectedChildren || this.bindSelected;\n const index = clone.findIndex((item) => item[selectedKey] === row[selectedKey]);\n\n if (state) {\n if (index === -1) clone.push(row);\n } else {\n if (index >= 0) clone.splice(index, 1);\n }\n\n this.#selectedItems = clone;\n this.selectAllOnAllPages.emit(this.#selectedItems.length);\n }\n\n /**\n * Do some actions if click/check on row/checkbox\n * @param {ExtendedTableRow} row Click was on this element\n * @param {boolean} isParent Click was on parent/child row\n * @param {MouseEvent} event Mouse click event. If event is `null`, then click on checkbox, else it's click on row\n */\n handleRowClick(row: ExtendedTableRow, isParent: boolean, event: MouseEvent): void {\n const _row = isParent ? row.item : row;\n const isCheckboxCell =\n (event?.target as HTMLElement)?.classList.contains('mbs-table-grid_checkbox') ||\n (event?.target as HTMLElement)?.classList.contains('mbs-table-grid_checkbox-cell');\n\n this.clickTableElement.emit(_row);\n\n if (this.showCheckboxes && !isCheckboxCell) return;\n\n if (this.disabledStateByRow(_row) || (this.collapsibleMode && !this.showCheckboxes) || (isParent && !this.canSelectParent)) {\n return;\n }\n\n const buttonParent = (event.target as Element).closest('button');\n const linkParent = isNil(buttonParent) && (event.target as Element).closest('a');\n const switcherParent = isNil(linkParent) && isNil(buttonParent) && (event.target as Element).closest('.mbs-switcher');\n\n if (!isNil(buttonParent) || !isNil(linkParent) || !isNil(switcherParent)) {\n event.stopPropagation();\n return;\n }\n\n if ((this.showCheckboxes || this.selectable) && !this.disabledStateByRow(_row)) {\n const oldState = this.isSelectedRow(_row, isParent);\n\n if (this.multipleSelectType == MultipleSelectType.Keyboard) {\n this.updateShiftSelectedRows(_row, event, oldState, isParent);\n }\n\n if (this.multipleSelectType == MultipleSelectType.Mouse) {\n this.updateSelectedItems(_row, !oldState, isParent);\n\n // nothing any do if `multipleSelect` is false\n if (!this.multipleSelect) {\n this.changeSelected.emit(this.selectedItems);\n return;\n }\n\n // click on parent row\n if (isParent) {\n // dependent children\n if (this.dependenceChildren) {\n if (!oldState) row.indeterminate = false;\n _row[this.bindChildren] && _row[this.bindChildren].forEach((child) => this.updateSelectedItems(child, !oldState, false));\n row.indeterminate = _row[this.bindChildren] && !this.isSelectedRow(_row, isParent) && !oldState;\n }\n // independent children\n else {\n this.updateSelectedItems(_row, !oldState, isParent);\n }\n }\n // click on child row\n else {\n const parent = this.getParent(_row);\n\n // dependent children\n if (this.dependenceChildren) {\n const firstState = this.isSelectedRow(parent.item[this.bindChildren][0], false);\n const sameState = !parent.item[this.bindChildren].some((child) => this.isSelectedRow(child, false) !== firstState);\n\n if (sameState) {\n parent.indeterminate = false;\n this.updateSelectedItems(parent.item, firstState, true);\n } else {\n parent.indeterminate = true;\n }\n }\n }\n }\n\n // disabled children\n if (this.disableChildren) {\n const parent = this.getParent(_row);\n\n parent[this.bindChildren] && parent[this.bindChildren].forEach((child) => (child.disabled = !this.isSelectedRow(parent, true)));\n }\n }\n\n this.changeSelected.emit(this.selectedItems);\n }\n\n /**\n * Update selectable rows if use MultipleSelectType.Keyboard mode\n * @param row\n * @param event\n * @param oldState\n * @private\n */\n\n private updateShiftSelectedRows(row, event: MouseEvent, oldState: boolean, isParent = false): void {\n const isMac = navigator.platform.startsWith('Mac');\n const ctrlOrCmd = event.ctrlKey || (isMac && event.metaKey);\n\n if (!ctrlOrCmd && !event.shiftKey) {\n this.#selectedItems = [];\n this.updateSelectedItems(row, !oldState, isParent);\n } else if (event.shiftKey && this.selectedItems.length !== 0) {\n const currentClickIndex = this.#flatData.findIndex((dataItem) => dataItem.item[this.bindSelected] === row[this.bindSelected]);\n let start: number = null;\n let end: number = null;\n\n if (currentClickIndex > this.lastShiftSelectedIndex) {\n start = this.lastShiftSelectedIndex;\n end = currentClickIndex;\n } else if (currentClickIndex <= this.lastShiftSelectedIndex) {\n start = currentClickIndex;\n end = this.lastShiftSelectedIndex;\n }\n\n this.#selectedItems = [];\n this.#selectedItems = Array.from(this.getOriginalFlatData(this.#flatData).slice(start, end + 1));\n } else {\n this.updateSelectedItems(row, !oldState, isParent);\n }\n\n // must be after all updateSelectedItems()\n if (this.selectedItems.length === 1) {\n this.lastShiftSelectedIndex = this.#flatData.findIndex((dataItem) => dataItem.item[this.bindSelected] === row[this.bindSelected]);\n }\n }\n\n /**\n * Get parent elements of child\n * @param {any} row\n * @return {any}\n * @private\n */\n private getParent(row: any) {\n const isParent = this.data.some((dataItem) => dataItem.item[this.bindSelected] === row[this.bindSelected]);\n\n if (isParent) {\n return row;\n } else {\n return this.data.find((dataItem) => {\n return (\n !isNil(dataItem.item[this.bindChildren]) &&\n dataItem.item[this.bindChildren].some((child) => child[this.bindSelectedChildren] === row[this.bindSelectedChildren])\n );\n });\n }\n }\n\n generateActualTableColumnsForStyles(): void {\n this.actualTableColumnsForStyles = this.actualTableColumnsForStyles.length > 0 ? [] : this.actualTableColumnsForStyles;\n this.headers.forEach((header: TableColumn) => {\n if (header.colSpan) {\n header.colSpan.forEach((item: string, idx: number) => {\n this.actualTableColumnsForStyles.push({\n name: header.name,\n class: Array.isArray(header.class) ? header.class[idx] : header.class,\n overflow: header.overflow\n });\n });\n } else {\n this.actualTableColumnsForStyles.push({\n name: header.name,\n class: header.class,\n overflow: header.overflow\n });\n }\n });\n }\n\n updateClassTableGridObject(): void {\n const result = {\n 'mbs-table-grid': true,\n '-striped': this.striped,\n '-hover': this.hover,\n '-bordered': this.bordered,\n '-loading': this.loading,\n '-sm': this.size === 'sm',\n '-lg': this.size === 'lg',\n 'pb-3': this.cardMode,\n 'pr-3': this.cardMode && this.gridSize?.hasVerticalScroll,\n ...this.classesTable\n .split(' ')\n .filter(Boolean)\n .reduce((acc, item) => ({ ...acc, [item]: true }), {})\n };\n\n if (!isEqual(this.classTableGridObject, result)) {\n this.classTableGridObject = result;\n }\n }\n\n getStyles(h: TableColumn[]): string[] {\n const result = [];\n\n for (let i = 0; i < h.length; i++) {\n let colspan = h[i].colSpan ? h[i].colSpan.length : 0;\n\n if (colspan) {\n let j = i;\n\n while (colspan > 0) {\n const size = h[i].colSpan ? h[i].colSpan[j - i] : '15fr';\n\n result.push(`minmax(1px, ${size})`);\n colspan--;\n j++;\n }\n } else {\n result.push(`minmax(${h[i].gridColMin || '1px'}, ${h[i].gridColSize || '15fr'})`);\n }\n }\n\n return result;\n }\n\n getHeaderStyles(h: TableColumn[]): string[] {\n const result = [];\n\n if (h.some((col) => col.colSpan && col.colSpan.some((size) => size.includes('fr')))) {\n console.error('do not use FRs in colSpan. It is not working properly');\n return [];\n }\n\n for (let i = 0; i < h.length; i++) {\n const sizes = h[i].colSpan;\n\n if (sizes && sizes.length) {\n let colspan = sizes.length;\n let j = i;\n let tmp = `minmax(${h[i].gridColMin || '1px'}, calc( `;\n\n while (colspan > 0) {\n tmp += sizes[j - i];\n colspan--;\n tmp = colspan ? `${tmp} + ` : `${tmp} ))`;\n j++;\n }\n result.push(tmp);\n } else {\n result.push(`minmax(${h[i].gridColMin || '1px'}, ${h[i].gridColSize || '15fr'})`);\n }\n }\n\n return result;\n }\n\n handleSort(event: SortEvent): void {\n this.sort.emit(event);\n }\n\n private classToObject(column: TableColumn): any {\n return column ? { 'text-overflow': column.overflow } : {};\n }\n\n isTextMuted(columns: TableColumn[], i: number): boolean {\n const obj = this.columnClassToObject(columns, i);\n\n return obj && !isNil(obj['text-muted']) && obj['text-muted'];\n }\n\n columnClassToObject(columns: TableColumn[], i: number): any {\n if (columns && columns[i]) {\n const column = columns[i];\n const classes = this.classToObject(column);\n\n if (column && column.class) {\n const rawClass = Array.isArray(column.class) ? column.class[0] : column.class;\n\n rawClass.split(' ').forEach((item) => {\n classes[item] = true;\n });\n }\n\n return classes;\n }\n }\n\n headerClassToObject(column: TableColumn): any {\n if (column && column.headerClass) {\n const headerClass = this.classToObject(column);\n\n headerClass[column.headerClass] = true;\n this.cardMode && (headerClass['head-cell-card'] = true);\n\n return headerClass;\n } else {\n return this.columnClassToObject([column], 0);\n }\n }\n\n findHeaderTemplate(column: TableColumn): TemplateRef {\n const content = this.myHeaderTemplates.find((i) => i.value === column.headerName || i.value === column.name);\n\n if (content) {\n return content.template;\n }\n\n return null;\n }\n\n get allChecked(): boolean {\n if (this.selectAllIgnoreDisabled) {\n const notDisabledElements = this.selectAllIsNotDisabled();\n\n return this.selectedItems.length > 0 && notDisabledElements.length === this.selectedItems.length;\n }\n\n return this.selectedItems.length > 0 && this.#flatData.length === this.selectedItems.length;\n }\n\n set allChecked(isChecked: boolean) {\n this.selectAll(isChecked);\n this.changeSelected.emit(this.selectedItems);\n }\n\n /**\n * Select/unselect all rows\n * @param {boolean} isChecked\n */\n selectAll(isChecked: boolean): void {\n if (this.selectAllIgnoreDisabled) {\n this.#selectedItems = isChecked ? this.getOriginalFlatData(this.selectAllIsNotDisabled()) : [];\n } else {\n this.#selectedItems = isChecked ? Array.from(this.getOriginalFlatData(this.#flatData)) : [];\n this.selectAllOnAllPages.emit(this.#selectedItems.length);\n }\n }\n\n public clearSelection() {\n this.changeSelected.emit([]);\n this.selectAllOnAllPages.emit(0);\n }\n\n public selectAllOnAllPagesHandle() {\n this.selectAllOnAllPages.emit(this.totalItems);\n }\n\n public getSelectAllButtonTextDefault(): string {\n return this.entityName ? `Select all ${this.entityName}: ${this.totalItems}` : `Select all: ${this.totalItems}`;\n }\n\n public getSelectedCountTextDefault(): string {\n return `Selected ${this.totalSelectedItems || this.selectedItems?.length} ${this.entityName || ''} ${\n this.isSelectedAllOnAllPages() ? ' on all pages.' : ' on this page.'\n }`;\n }\n\n public isSelectedAllOnAllPages(): boolean {\n return this.totalSelectedItems === this.totalItems;\n }\n\n private getOriginalFlatData(flatData: any): any[] {\n return flatData.map((item) => (item.item ? item.item : item));\n }\n\n selectAllIsNotDisabled(): any[] {\n return this.bindDisabledValues\n ? this.#flatData.filter(\n (dataItem) => dataItem.item[this.bindDisabledValues.key] !== this.bindDisabledValues.value && !dataItem.item.disabled\n )\n : this.#flatData.filter((dataItem) => !dataItem.item.disabled);\n }\n\n /**\n * Checking status checkbox relative to whether item is in main selectedItems array (used in view)\n * @param {any} row\n * @param {boolean} isParent\n * @return {boolean}\n */\n isChecked(row, isParent: boolean): boolean {\n if (this.selectedItems.length === 0 || !row) return false;\n\n return this.isSelectedRow(isParent ? row.item : row, isParent);\n }\n\n noDataIsTemplate(): boolean {\n return isTemplate(this.noDataMessage);\n }\n\n handleToggleCollapse(event, row): void {\n event && event.stopPropagation();\n const openedItemIndex = this.openedCollapsibleItems.indexOf(row.item[this.bindParentKey]);\n\n if (openedItemIndex >= 0) {\n this.openedCollapsibleItems.splice(openedItemIndex, 1);\n } else {\n if (this.lazy && !row.loadedChildren) {\n row.loadingChildren = true;\n\n this.getItems(row.item)\n .pipe(\n filter((children) => !isNil(children)),\n untilDestroyed(this)\n )\n .subscribe((children) => {\n row.item[this.bindChildren] = children;\n row.loadingChildren = false;\n row.loadedChildren = true;\n\n if (row.item[this.bindChildren] && row.item[this.bindChildren].length) {\n this.openedCollapsibleItems.push(row.item[this.bindParentKey]);\n }\n\n this.requestedChildren.push(row.item[this.bindParentKey]);\n this.cdr.detectChanges();\n });\n } else {\n this.openedCollapsibleItems.push(row.item[this.bindParentKey]);\n }\n }\n }\n\n /**\n * Checking is collapsed children elements\n * @param {any} row\n * @return {boolean}\n */\n isCollapsed(row): boolean {\n const parent = this.getParent(row);\n const _parent = parent.item ? parent.item : parent;\n\n return !this.openedCollapsibleItems.includes(_parent[this.bindParentKey]);\n }\n\n hasData(): boolean {\n return this.data && this.data.length > 0;\n }\n\n // Custom dynamic item size for cdk-virtual-scroll-viewport component for virual scroll mode\n get virtualScrollItemSize() {\n const value = this.data.length / this.virtualScrollItemSizeDivider;\n\n if (value < this.minVirtualScrollItemSize) return this.minVirtualScrollItemSize;\n\n if (value > this.maxVirtualScrollItemSize) return this.maxVirtualScrollItemSize;\n\n return value;\n }\n\n get virtualScrollViewportSize(): string {\n const height = this.maxHeight ?? this.height;\n\n return height ? `calc(${height} - ${this.virtualItemSize}px` : `${this.virtualItemSize * this.virtualItemsNumber}px`;\n }\n\n /**\n * Generate flat data from data\n * @param {any[]} data\n */\n updateFlatData(data: any[]): void {\n this.#flatData = [];\n\n data.forEach((dataItem) => {\n this.#flatData.push(dataItem);\n\n if (dataItem.item && dataItem.item[this.bindChildren]) {\n dataItem.item[this.bindChildren].forEach((child) => this.#flatData.push(child));\n }\n });\n }\n\n getCollapsableModeVSContainerHeight(rowCount) {\n return (rowCount >= this.virtualItemsNumber ? this.virtualItemsNumber * this.virtualItemSize : rowCount * this.virtualItemSize) + 'px';\n }\n\n handleGridSizeChanged(size: ElementSize) {\n this.gridSize = size;\n this.updateClassTableGridObject();\n }\n\n isCardHeader(item): boolean {\n return this.cardMode && item?.isCardHeader;\n }\n\n getGridWidth(): string {\n return this.gridSize?.width ? `${this.gridSize?.width - 2}px` : '100%';\n }\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n/**\n * This directive must be used to wrap content to be displayed in the Tab\n * */\n@Directive({\n selector: '[mbsTabsetContent]'\n})\nexport class TabsetContentDirective {\n constructor(public templateRef: TemplateRef) {}\n}\n","import { ContentChildren, Directive, Inject, Input, Optional, QueryList } from '@angular/core';\nimport { TabsetItemDirectiveToken, TabsetItemDirectiveType } from '../tokens/tabset-item.directive.token';\nimport { TabsetDirectiveToken, TabsetDirectiveType } from '../tokens/tabset.directive.token';\nimport { TabsetLinkDirective } from './tabset-link.directive';\n\n@Directive({\n selector: '[mbsTabsetGroup]',\n exportAs: 'mbsTabsetGroup',\n host: {\n '[class.mbs-tabset_group]': 'true',\n '[class.-active]': 'isActive',\n '[class.d-none]': '!isActive',\n '[class.-disabled]': 'isDisabled'\n }\n})\nexport class TabsetGroupDirective {\n @Input('mbsTabsetGroup') id: string;\n\n get isActive(): boolean {\n return this.items.toArray().some(item => item.isActive);\n }\n\n set isActive(bool) {\n if (bool) {\n const firstActive = this.items.toArray().find(item => {\n return !item.isDisabled;\n });\n if (firstActive) {\n this.parentTabset.select(firstActive.id);\n } else {\n this.parentTabset.select(this.items.first.id);\n }\n }\n }\n\n public get isDisabled(): boolean {\n return this.items ? this.items.first.parentTab.isDisabled : false;\n }\n\n @ContentChildren(TabsetItemDirectiveToken, { descendants: true }) private items: QueryList;\n @ContentChildren(TabsetLinkDirective, { descendants: true }) private links: QueryList;\n\n constructor(@Optional() @Inject(TabsetDirectiveToken) private parentTabset: TabsetDirectiveType) {}\n}\n","import {\n AfterContentChecked,\n ChangeDetectorRef,\n ContentChildren,\n Directive,\n forwardRef,\n Inject,\n Input,\n Optional,\n QueryList,\n SkipSelf\n} from '@angular/core';\nimport { isNil } from 'lodash';\nimport { TabsetItemDirectiveToken } from '../tokens/tabset-item.directive.token';\nimport { TabsetDirectiveToken, TabsetDirectiveType } from '../tokens/tabset.directive.token';\nimport { TabsetContentDirective } from './tabset-content.directive';\n\n/**\n * The directive used to group Tab link and related Tab content.\n * As well as set Tab identifier and some options.\n */\n@Directive({\n selector: '[mbsTabsetItem]',\n exportAs: 'mbsTabsetItem',\n host: {\n '[class.mbs-tabset_item]': '!nested',\n '[class.mbs-tabset_group-item]': 'nested',\n '[class.-active]': 'isActiveAndNotDisabled',\n '[class.-disabled]': 'isDisabled',\n '[class.-loading]': 'isLoading'\n },\n providers: [{ provide: TabsetItemDirectiveToken, useExisting: forwardRef(() => TabsetItemDirective) }]\n})\nexport class TabsetItemDirective implements AfterContentChecked {\n public nested = false;\n public forceDisabled = false;\n public forceLoading = false;\n public contentTemplate: TabsetContentDirective;\n\n @Input() disabled: boolean;\n @Input() loading: boolean;\n @Input() fullHeight: boolean;\n @Input() loadOnAppearance: boolean;\n @Input('mbsTabsetItem') id: string;\n @Input() linkId: string;\n\n @Input() set active(isActive: boolean) {\n isActive && this.activateSelf();\n }\n\n @ContentChildren(TabsetContentDirective, { descendants: false }) contentDirectives: QueryList;\n @ContentChildren(forwardRef(() => TabsetItemDirective), { descendants: true }) nestedItems: QueryList;\n\n get isActiveAndNotDisabled(): boolean {\n return this.isActive ? !this.disabled && !this.forceDisabled : false;\n }\n\n get isActive(): boolean {\n if (this.id === this.parentTabset.activeId) return true;\n\n const nested = this.nestedItems.toArray();\n\n return nested.length > 0 && !!nested.find((item) => item.id === this.parentTabset.activeId);\n }\n\n get isDisabled(): boolean {\n return this.disabled || this.forceDisabled || (this.parentTab && this.parentTab.isDisabled);\n }\n\n get isLoading(): boolean {\n return this.loading || this.forceLoading || (this.parentTab && this.parentTab.isLoading);\n }\n\n constructor(\n @Optional() @Inject(TabsetDirectiveToken) public parentTabset: TabsetDirectiveType,\n @SkipSelf() @Optional() @Inject(forwardRef(() => TabsetItemDirective)) public parentTab: TabsetItemDirective,\n private cdRef: ChangeDetectorRef\n ) {\n this.nested = !isNil(this.parentTab);\n\n if (isNil(this.loadOnAppearance)) {\n this.loadOnAppearance = this.parentTabset.loadOnAppearance;\n }\n }\n\n detectChanges(): void {\n this.cdRef.detectChanges();\n }\n\n activateSelf(): void {\n this.parentTabset.select(this.id);\n }\n\n isPanelInDom(): boolean {\n return (\n (isNil(this.loadOnAppearance) ? !this.loadOnAppearance : !this.parentTabset.loadOnAppearance) ||\n (this.isActive && !this.nested && this.nestedItems.toArray().length === 0) ||\n (this.isActive && !isNil(this.parentTab))\n );\n }\n\n ngAfterContentChecked(): void {\n // We are using @ContentChildren instead of @ContentChild as in the Angular version being used\n // only @ContentChildren allows us to specify the {descendants: false} option.\n // Without {descendants: false} we are hitting bugs described in:\n // https://github.com/ng-bootstrap/ng-bootstrap/issues/2240\n this.contentTemplate = this.contentDirectives.first;\n }\n}\n","import { Directive, Inject, Optional } from '@angular/core';\nimport { TabsetItemDirectiveToken, TabsetItemDirectiveType } from '../tokens/tabset-item.directive.token';\nimport { TabsetDirectiveToken, TabsetDirectiveType } from '../tokens/tabset.directive.token';\n\n@Directive({\n selector: '[mbsTabsetLink]',\n host: {\n '[class.mbs-tabset_link]': '!nested',\n '[class.mbs-tabset_group-link]': 'nested',\n '[class.-disabled]': 'isDisabled',\n '(click)': 'parentTabset.click(parentTab); $event.stopPropagation(); $event.preventDefault()'\n }\n})\nexport class TabsetLinkDirective {\n public nested = false;\n\n get isDisabled(): boolean {\n return this.parentTab.isDisabled;\n }\n\n constructor(\n @Optional() @Inject(TabsetItemDirectiveToken) public parentTab: TabsetItemDirectiveType,\n @Optional() @Inject(TabsetDirectiveToken) public parentTabset: TabsetDirectiveType\n ) {\n this.nested = this.parentTab.nested;\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectorRef,\n ContentChildren,\n Directive,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n QueryList\n} from '@angular/core';\nimport { isNil } from 'lodash';\nimport { TabsetDirectiveToken, TabsetDirectiveType } from '../tokens/tabset.directive.token';\nimport { TabsetGroupDirective } from './tabset-group.directive';\nimport { TabsetItemDirective } from './tabset-item.directive';\n\n@Directive({\n selector: '[mbsTabset]',\n exportAs: 'mbsTabset',\n host: {\n '[class.mbs-tabset]': 'true',\n '[class.-horizontal]': 'horizontal',\n '[class.-vertical]': 'vertical',\n '[class.-inline]': 'inline'\n },\n providers: [{ provide: TabsetDirectiveToken, useExisting: forwardRef(() => TabsetDirective) }]\n})\nexport class TabsetDirective implements AfterContentInit, TabsetDirectiveType {\n @Input() public activeId: string;\n @Input() loadOnAppearance = true;\n @Input() public mode: 'vertical' | 'horizontal' | 'inline' = 'horizontal';\n @Input() public defaultTab: string;\n\n get horizontal(): boolean {\n return this.mode === 'horizontal';\n }\n\n get vertical(): boolean {\n return this.mode === 'vertical';\n }\n\n get inline(): boolean {\n return this.mode === 'inline';\n }\n\n @Output() beforeUpdate = new EventEmitter();\n @Output() afterUpdate = new EventEmitter();\n @ContentChildren(TabsetItemDirective, { descendants: true }) items: QueryList;\n @ContentChildren(TabsetGroupDirective, { descendants: true }) groups: QueryList;\n\n constructor(private cdRef: ChangeDetectorRef) {}\n\n ngAfterContentInit(): void {\n if (isNil(this.activeId)) {\n let nextId = this.items.first?.id || null;\n nextId = this.defaultTab && this.items.some((tab) => tab.id === this.defaultTab) ? this.defaultTab : nextId;\n this.updateActiveId(nextId, false);\n this.cdRef.detectChanges();\n }\n }\n\n public activateGroup(groupId: string): void {\n const group = this.groups.toArray().find((group: TabsetGroupDirective) => group.id === groupId);\n if (!group.isDisabled) {\n group.isActive = true;\n }\n }\n\n public click(item: TabsetItemDirective): void {\n if (!item.isDisabled) {\n this.updateActiveId(item.id);\n }\n }\n\n public select(itemId: string): void {\n this.updateActiveId(itemId, false);\n }\n\n private updateActiveId(nextId: string, emitEvent = true): void {\n if (this.activeId !== nextId) {\n let performUpdate = true;\n\n this.beforeUpdate.emit({\n nextId: nextId,\n currentId: this.activeId,\n stop: () => {\n performUpdate = false;\n }\n });\n\n if (performUpdate) {\n this.activeId = nextId;\n\n if (emitEvent) {\n this.afterUpdate.emit(nextId);\n }\n }\n }\n }\n}\n","import { ContentChildren, Directive, forwardRef, Inject, Injectable, Input, OnDestroy, Optional, QueryList } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { BehaviorSubject, combineLatest, Observable, ReplaySubject, Subscription } from 'rxjs';\nimport { filter, map, startWith, take, tap } from 'rxjs/operators';\nimport { FormsUtil } from '../utils/forms-util';\nimport { TabsetItemDirective } from './directives/tabset-item.directive';\nimport { TabsetDirective } from './directives/tabset.directive';\nimport { TabsetDirectiveToken, TabsetDirectiveType } from './tokens/tabset.directive.token';\n\nexport class TabsetItemTabComponentPair {\n tabSetItem: TabsetItemDirective;\n component: TabBase;\n\n constructor(init?: Partial) {\n if (init) {\n Object.assign(this, init);\n }\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TabsService {\n private errorsBus$ = new ReplaySubject(1);\n private myTabSets = new Map();\n private tabSetComponentPairs: TabsetItemTabComponentPair[] = [];\n\n get allTabsValid(): boolean {\n return this.tabSetComponentPairs.length == 0 || !this.tabSetComponentPairs.some((x) => x.component.valid === false);\n }\n\n constructor() {}\n\n attachTabSet(tabSetValidated: TabsetValidatedDirective): void {\n this.myTabSets.set(tabSetValidated.tabSet, tabSetValidated);\n }\n\n deattachTabSet(tabset: TabsetDirective): void {\n this.myTabSets.delete(tabset);\n tabset.items.forEach((item: TabsetItemDirective) => {\n this.tabSetComponentPairs = this.tabSetComponentPairs.filter((t) => t.tabSetItem !== item);\n });\n }\n\n attachComponent(component: TabBase, tabSetItem: TabsetItemDirective): void {\n if (this.myTabSets.has(tabSetItem.parentTabset)) {\n const customValidItem = (this.myTabSets.get(tabSetItem.parentTabset).validTabsetItems || []).find(\n (it) => it.tabSetItem == tabSetItem\n ) as TabsetItemValidDirective;\n if (customValidItem) {\n component.valid = customValidItem.valid;\n }\n }\n component.showErrors$ = this.errorsBus$.pipe(\n filter((item) => item === tabSetItem),\n map(() => true)\n );\n const pair = this.tabSetComponentPairs.find((t) => t.tabSetItem == tabSetItem);\n if (pair) {\n pair.component = component;\n } else {\n this.tabSetComponentPairs.push(\n new TabsetItemTabComponentPair({\n tabSetItem,\n component\n })\n );\n }\n }\n\n deattachComponent(component: TabBase): void {\n const pairs = this.tabSetComponentPairs.find((t) => t.component == component);\n if (pairs) {\n const newTab = {} as TabBase;\n newTab.valid = pairs.component.valid;\n pairs.component = newTab;\n }\n }\n\n openFirstError(): void {\n const firstFoundPair = this.tabSetComponentPairs.find((x) => x.component.valid === false);\n if (firstFoundPair) {\n firstFoundPair.tabSetItem.activateSelf();\n this.errorsBus$.next(firstFoundPair.tabSetItem);\n }\n }\n\n checkAllTabsStatus(): Observable {\n // Note: Please make sure that your tab is inherited from TabBase. Otherwise, the pairsStatuses$ array will be empty\n const pairsStatuses$ = this.tabSetComponentPairs.map((pair) => pair.component?.clearFormStatus$).filter(Boolean);\n return combineLatest(pairsStatuses$).pipe(\n map((statuses) => statuses.every((status) => status === 'valid')),\n tap((status) => !status && this.openFirstError())\n );\n }\n\n getDataByTabId(tabId: string): any {\n return this.tabSetComponentPairs.find((x) => x.tabSetItem.id == tabId).component.model;\n }\n}\n\n@Directive({\n selector: '[mbsTabsetItem][mbsTabSetValid]',\n exportAs: 'mbsTabSetValid'\n})\nexport class TabsetItemValidDirective {\n @Input('mbsTabSetValid') valid = true;\n constructor(public tabSetItem: TabsetItemDirective) {}\n}\n\n@Directive({\n selector: '[mbsTabset][mbsTabSetValidated]',\n exportAs: 'mbsTabSetValidated'\n})\nexport class TabsetValidatedDirective implements OnDestroy {\n private tabSetService: TabsService;\n @ContentChildren(TabsetItemValidDirective) validTabsetItems: QueryList;\n\n constructor(\n @Inject(forwardRef(() => TabsService)) tabSetService: TabsService,\n @Optional() @Inject(TabsetDirectiveToken) public tabSet: TabsetDirectiveType\n ) {\n this.tabSetService = tabSetService;\n this.tabSetService.attachTabSet(this);\n }\n\n ngOnDestroy(): void {\n this.tabSetService.deattachTabSet(this.tabSet);\n }\n}\n\ntype FormStatus = 'VALID' | 'INVALID' | 'PENDING' | 'DISABLED';\n@Injectable()\nexport class TabBase implements OnDestroy {\n public model: any;\n public valid: boolean;\n\n private myLastStatus: FormStatus;\n public get lastStatus(): FormStatus {\n return this.myLastStatus;\n }\n\n protected form: FormGroup;\n\n private subscriptions: Subscription;\n public showErrors$: Observable;\n private tabSetService: TabsService;\n public formStatus$ = new BehaviorSubject('valid');\n\n public clearFormStatus$ = this.formStatus$.pipe(\n filter((status: string) => status.toLowerCase() !== 'pending'),\n take(1)\n );\n\n constructor(@Inject(forwardRef(() => TabsService)) tabsService: TabsService, parentTab: TabsetItemDirective) {\n this.tabSetService = tabsService;\n this.tabSetService.attachComponent(this, parentTab);\n }\n\n afterFormInit(form: FormGroup = this.form): void {\n if (form && !this.subscriptions) {\n this.subscriptions = new Subscription();\n this.subscriptions.add(\n this.showErrors$.subscribe({\n next: () => {\n FormsUtil.triggerValidation(form);\n }\n })\n );\n this.subscriptions.add(\n form.statusChanges.pipe(startWith(form.status)).subscribe((status: FormStatus) => {\n this.formStatus$.next(status.toLowerCase());\n this.myLastStatus = status;\n this.valid = status == 'VALID';\n })\n );\n }\n }\n\n ngOnDestroy(): void {\n this.destroy();\n }\n\n destroy(): void {\n this.tabSetService.deattachComponent(this);\n this.subscriptions && this.subscriptions.unsubscribe();\n this.subscriptions = undefined;\n }\n}\n\n/**\n * The directive will remove this tabset from list of tabsets\n * to prevent validation after destroy.\n */\n@Directive({\n selector: '[mbsTabset]',\n exportAs: 'mbsTabsetDestroyer'\n})\nexport class TabsetDestroyerDirective implements OnDestroy {\n constructor(@Optional() @Inject(TabsetDirectiveToken) private tabset: TabsetDirectiveType, private tabsetService: TabsService) {}\n\n ngOnDestroy(): void {\n this.tabsetService.deattachTabSet(this.tabset);\n }\n}\n","/** @format */\n\nimport { Component, Input } from '@angular/core';\nimport { TabsetDirective } from './directives/tabset.directive';\n\n@Component({\n selector: '[mbsTabsetOutlet]',\n host: { '[class.mbs-tabset_content]': 'true' },\n styleUrls: ['./tabset-content-outlet.component.scss'],\n // prettier-ignore\n template: `\n \n \n
\n \n
\n \n
\n
\n
\n \n `\n})\nexport class TabsetContentOutlet {\n /**\n * A role to set on the nav pane\n */\n @Input() paneRole;\n\n /**\n * Reference to the `mbsTabset` instance\n */\n @Input('mbsTabsetOutlet') nav: TabsetDirective;\n}\n","import { InjectionToken } from '@angular/core';\nimport { TabsetItemDirective } from '../directives/tabset-item.directive';\n\nexport type TabsetItemDirectiveType = TabsetItemDirective;\n\nexport const TabsetItemDirectiveToken = new InjectionToken('TabsetItemDirectiveToken');\n","import { InjectionToken } from '@angular/core';\nimport { TabsetDirective } from '../directives/tabset.directive';\n\nexport type TabsetDirectiveType = TabsetDirective;\n\nexport const TabsetDirectiveToken = new InjectionToken('TabsetDirectiveToken');\n","\n \n \n \n\n\n\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef\n} from '@angular/core';\nimport { ButtonSize } from '../button';\nimport { MbsSize, MbsType } from '../utils';\n\n@Component({\n selector: 'mbs-tag',\n templateUrl: 'tag.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses',\n '(click)': 'handleClick()'\n }\n})\nexport class TagComponent implements OnInit, OnChanges {\n /**\n * Tag id. Required.\n */\n @Input() id: string;\n\n @Input() disabled: boolean;\n\n /**\n * If `true` - component emits `mbsClick` event on click. Should not be used with `closable`.\n */\n @Input() clickable = false;\n\n /**\n * If `true` - shows close icon. Component emits `mbsClose` event on click at the close button inside tag. Should not be used with `clickable`.\n */\n @Input() closable: boolean;\n\n /**\n * Color theme for close icon.\n */\n @Input() closeIconType: MbsType;\n\n /**\n * Highlights tag via `-active` css-class.\n */\n @Input() active: boolean;\n\n /**\n * Custom css classes.\n */\n @Input('class') customClass: string;\n\n /**\n * Tag size. Default or `MbsSize.sm`\n */\n @Input() size: MbsSize.sm | '' = '';\n\n /**\n * Tooltip for text-ellipsis\n */\n @Input() tooltip: string | TemplateRef;\n\n /**\n * Border will be transparent if true\n */\n @Input() noBorder = false;\n\n /**\n * Emits on click if `clickable` is `true`\n */\n @Output() mbsClick = new EventEmitter();\n\n /**\n * Emits on click at close icon;\n */\n @Output() mbsClose = new EventEmitter();\n\n public readonly mbsType = MbsType;\n public readonly mbsSize = MbsSize;\n\n public closableSize: ButtonSize = MbsSize.xs;\n public hostClasses = '';\n public closeIcon = '';\n\n private closeIconClass = 'ico ico-failed mr-0 ctrl-ico '; // space in the end is required\n\n ngOnInit() {\n this.updateHostClasses();\n this.updateClosableSize();\n this.updateCloseIconClasses();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (\n changes.active ||\n changes.type ||\n changes.customClass ||\n changes.clickable ||\n changes.size ||\n changes.closable ||\n changes.noBorder\n ) {\n this.updateHostClasses();\n }\n\n if (changes.size) {\n this.updateClosableSize();\n }\n\n if (changes.active || changes.closable) {\n this.updateCloseIconClasses();\n }\n }\n\n private updateCloseIconClasses() {\n if (this.closable) {\n this.closeIcon = this.closeIconClass.concat(this.active && !this.disabled ? 'text-white' : '');\n }\n }\n\n private updateClosableSize(): void {\n this.closableSize = this.size ? MbsSize.xxs : MbsSize.xs;\n }\n\n private updateHostClasses(): void {\n const temp = ['mbs-tag', '-primary', 'mw-100'];\n\n if (this.active) {\n temp.push('-active');\n }\n\n if (this.customClass) {\n temp.push(this.customClass);\n }\n\n if (this.clickable) {\n temp.push('-clickable');\n }\n\n if (this.closable) {\n temp.push('-closable');\n }\n\n if (this.disabled) {\n temp.push('-disabled');\n }\n\n if (this.size) {\n temp.push(`-${this.size}`);\n }\n\n if (this.noBorder) {\n temp.push('-no-border');\n }\n\n this.hostClasses = temp.join(' ');\n }\n\n public handleClick() {\n if (this.clickable) {\n this.mbsClick.emit(this.id);\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ButtonModule } from '../button/button.module';\nimport { TextEllipsisModule } from '../text-ellipsis';\nimport { TagComponent } from './tag.component';\n\n@NgModule({\n imports: [CommonModule, ButtonModule, TextEllipsisModule],\n declarations: [TagComponent],\n exports: [TagComponent]\n})\nexport class TagModule {\n constructor() {}\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[mbsTextEllipsisAppend]'\n})\nexport class TextEllipsisAppendDirective {\n @Input() hide = false;\n constructor(public template: TemplateRef) {}\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[mbsTextEllipsisPrepend]'\n})\nexport class TextEllipsisPrependDirective {\n @Input() hide = false;\n constructor(public template: TemplateRef) {}\n}\n","\n \n\n\n \n \n \n\n\n \n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewRef\n} from '@angular/core';\nimport { TextEllipsisAppendDirective } from './text-ellipsis-append.directive';\nimport { TextEllipsisPrependDirective } from './text-ellipsis-prepend.directive';\n\n@Component({\n selector: 'mbs-text-ellipsis',\n templateUrl: './text-ellipsis.component.html',\n host: {\n '[class]': 'innerHostClasses'\n }\n})\nexport class TextEllipsisComponent implements AfterViewInit {\n @Input() autoClose = false;\n @Input() closeDelay = 0;\n @Input() container = 'body';\n @Input() disableTooltip = false;\n @Input() openDelay = 0;\n @Input('class') hostClasses = '';\n @Input() placement = 'top-left';\n @Input() tooltip: string | TemplateRef;\n @Input() tooltipClass: string;\n @Input() triggers = 'hover focus';\n @Output() checkFit = new EventEmitter();\n\n public isTruncated = true;\n private defaultHostClasses = 'mbs-text-ellipsis row no-gutters flex-nowrap mw-100';\n\n @ContentChild(TextEllipsisAppendDirective, { static: false, read: TextEllipsisAppendDirective })\n public append: TextEllipsisAppendDirective;\n\n @ContentChild(TextEllipsisPrependDirective, { static: false, read: TextEllipsisPrependDirective })\n public prepend: TextEllipsisPrependDirective;\n\n @ViewChild('wrapper', { static: false, read: ElementRef }) public wrapperSpan: ElementRef;\n @ViewChild('content', { static: false, read: ElementRef }) public contentSpan: ElementRef;\n\n constructor(private elem: ElementRef, private cdr: ChangeDetectorRef) {}\n\n get innerHostClasses(): string {\n return this.defaultHostClasses + ' ' + this.hostClasses;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.hostClasses && !changes.hostClasses.firstChange) {\n queueMicrotask(this.check.bind(this) as () => void);\n }\n }\n\n ngAfterViewInit(): void {\n this.check();\n }\n\n onContentChange(): void {\n this.check();\n }\n\n @HostListener('mouseenter')\n check(): void {\n if (!this.wrapperSpan || !this.contentSpan || !this.canAbilityCdRef()) return;\n\n this.updateIsTruncated();\n\n this.checkFit.emit(!this.isTruncated);\n this.cdr.detectChanges();\n }\n\n private updateIsTruncated(): void {\n const textEllipsisWidth = this.wrapperSpan.nativeElement.getBoundingClientRect().width;\n const spanWidth = this.contentSpan.nativeElement.getBoundingClientRect().width;\n this.isTruncated = textEllipsisWidth < spanWidth;\n }\n\n private canAbilityCdRef(): boolean {\n return this.cdr && !(this.cdr as ViewRef).destroyed;\n }\n}\n","import { ObserversModule } from '@angular/cdk/observers';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\nimport { TextEllipsisAppendDirective } from './text-ellipsis-append.directive';\nimport { TextEllipsisPrependDirective } from './text-ellipsis-prepend.directive';\nimport { TextEllipsisComponent } from './text-ellipsis.component';\n\n@NgModule({\n imports: [CommonModule, NgbTooltipModule, ObserversModule],\n declarations: [TextEllipsisComponent, TextEllipsisAppendDirective, TextEllipsisPrependDirective],\n exports: [TextEllipsisComponent, TextEllipsisAppendDirective, TextEllipsisPrependDirective]\n})\nexport class TextEllipsisModule {}\n","
\n \n \n
\n\n\n
\n
\n \n \n
\n
\n
\n
\n \n
\n
\n {{ header.name }}:\n
\n
\n \n
\n
\n
\n
\n
\n
\n\n\n {{ data[header.headerName] | json }}\n\n\n\n\n
\n \n
\n
\n {{ title }}\n
\n
\n","import { Component, ElementRef, EventEmitter, Input, Output } from '@angular/core';\nimport { TableHeader } from '../table-grid/models/table-header';\nimport { isNil } from 'lodash';\n\n@Component({\n selector: 'mbs-tile',\n templateUrl: './tile.component.html'\n})\nexport class TileComponent {\n @Input() statusClass: string;\n @Input() data: any;\n @Input() disabled = false;\n\n private gridHeaders: TableHeader[];\n @Input()\n set headers(value: TableHeader[]) {\n this.gridHeaders = value.map((h, index) => Object.assign({ id: index }, h)).filter((h) => h.isGridColumn !== false);\n }\n\n get headers(): TableHeader[] {\n return this.gridHeaders;\n }\n\n @Input() showBody = true;\n @Input() icon: string;\n @Input() title: string;\n @Input() headerTemplate: ElementRef;\n @Input() tileTemplate: ElementRef;\n @Input() templates: ElementRef[];\n @Input() selected = false;\n @Input() borderedSelected = false;\n @Input() selectable = false;\n @Input() autoDeselect = true;\n @Input() selectedClass = '-selected';\n @Input() hoverAble = true;\n @Input() borderPadding: 'default' | 'none' = 'default'\n @Output() click = new EventEmitter();\n\n handleClick(event: MouseEvent): void {\n event.stopPropagation();\n if (this.selectable && !this.disabled && this.autoDeselect) {\n this.selected = !this.selected;\n }\n this.click.emit({ ...this.data, event });\n }\n\n getTileClasses(): string {\n const classes = [`-${this.borderPadding}Padding`];\n\n if (!isNil(this.statusClass)) {\n classes.push(this.statusClass);\n }\n if (this.selectable) {\n classes.push('-selectable');\n }\n if (this.disabled) {\n classes.push('-disabled');\n }\n if (this.selectable && this.selected) {\n classes.push(this.selectedClass);\n }\n if (this.hoverAble) {\n classes.push('-hoverAble');\n }\n if (this.borderedSelected) {\n classes.push('-borderedSelected');\n }\n\n return classes.join(' ').trim();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\nimport { TileComponent } from './tile.component';\n\n@NgModule({\n imports: [CommonModule, NgbTooltipModule],\n declarations: [TileComponent],\n exports: [TileComponent]\n})\nexport class TileModule {\n constructor() {}\n}\n","\n\n
\n \n
\n\n
\n\n \n
\n\n \n \n \n \n \n\n \n\n\n
\n\n \n
\n\n \n
\n\n \n
\n\n \n
\n
\n \n {{ button.label || 'Show more...' }}\n \n
\n
\n
\n\n \n \n \n\n
\n\n
\n\n
\n \n \n
\n\n
\n\n\n\n
\n
\n\n\n \n\n","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { isNil } from 'lodash';\nimport { filter } from 'rxjs/operators';\nimport { MbsPopupIcon, MbsPopupType, MbsSize, TextBreak, isTemplate } from '../utils';\nimport Toast, { Button, DelayConfig } from './toast.model';\nimport { ToastService } from './toast.service';\n\n@Component({\n selector: 'mbs-toasts',\n templateUrl: './toast.component.html',\n host: {\n '[class.ngb-toasts]': 'true',\n 'aria-live': 'polite',\n 'aria-atomic': 'true'\n }\n})\nexport class ToastComponent implements OnInit, OnChanges {\n public readonly MbsSize = MbsSize;\n public toasts: Toast[] = [];\n public readonly isTemplate = isTemplate;\n public readonly TextBreak = TextBreak;\n\n /**\n * Default variants value by color type schema\n * @private\n */\n private defaultConfig: DelayConfig = {\n [MbsPopupType.info]: 3000,\n [MbsPopupType.success]: 3000,\n [MbsPopupType.warning]: 5000,\n [MbsPopupType.danger]: 5000\n };\n\n /**\n * If `true` - Toast will be hidden after few seconds.\n */\n @Input() autohide = true;\n\n /**\n * Max number of visible toasts. By default - 3\n */\n @Input() max = 3;\n\n /**\n * Delay custom config by color type schema. Default `defaultConfig`\n * @private\n */\n @Input() delayConfig: DelayConfig = Object.assign({}, this.defaultConfig);\n\n /**\n * Toasts for display, but no more than `max` quantity\n */\n public get visibleToasts(): Toast[] {\n return this.toasts.slice(0, this.max);\n }\n\n constructor(private toastService: ToastService) {}\n\n ngOnInit(): void {\n this.toastService\n .getById()\n .pipe(filter((t) => !isNil(t)))\n .subscribe((toast: Toast) => this.toasts.push(toast));\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.delayConfig) {\n this.delayConfig = Object.assign({}, this.defaultConfig, changes.delayConfig.currentValue) as DelayConfig;\n }\n }\n\n /**\n * Remove toast from visible\n * @param {Toast} toast\n */\n handleRemove(toast: Toast): void {\n this.toasts = this.toasts.filter((t) => t !== toast);\n }\n\n /**\n * Custom classes for toast\n * @param {Toast} toast\n * @param {boolean} isLast\n * @return {string}\n */\n getToastClasses(toast: Toast, isLast: boolean): string {\n const type = toast.type || MbsPopupType.info;\n const classes = ['mbs-toast', `mbs-toast-${type}`];\n\n isLast && classes.push('-old');\n toast.header && !toast.showClose && classes.push('-noClose');\n toast.classname && classes.push(toast.classname);\n\n return classes.join(' ');\n }\n\n /**\n * Adding classes for default icon by type or custom icon. Used in header of toast\n * @param {Toast} toast\n * @return {string}\n */\n getIconClasses(toast: Toast): string {\n const type = toast.type || MbsPopupType.info;\n const classes = ['mbs-toast-ico', `text-${MbsPopupType[type]}`];\n const iconClasses = toast.icon && typeof toast.icon === 'string' ? toast.icon : MbsPopupIcon[type];\n\n classes.push(iconClasses);\n\n return classes.join(' ');\n }\n\n public onButtonClick(button: Button, toast: Toast): void {\n button.clickHandler();\n !toast.preventClose && this.handleRemove(toast);\n }\n}\n","import { TemplateRef } from '@angular/core';\nimport { ButtonType } from '../button';\nimport { MbsPopupType, TextBreak } from '../utils';\n\nexport type Button = {\n isCtrl?: boolean;\n type?: ButtonType;\n label?: string;\n clickHandler: (data?: any) => void;\n};\n\nexport interface DelayConfig {\n [MbsPopupType.info]: number;\n [MbsPopupType.success]: number;\n [MbsPopupType.warning]: number;\n [MbsPopupType.danger]: number;\n}\n\nexport default class Toast {\n /**\n * Button settings for insert to footer of toast\n */\n buttons?: Button[] = [];\n\n /**\n * Color theme\n */\n type?: MbsPopupType = MbsPopupType.danger;\n\n /**\n * String or TemplateRef for Toast's header template;\n */\n header?: string | TemplateRef;\n\n /**\n * String (supports raw HTML) or TemplateRef for Toast's body template\n */\n content?: string | TemplateRef = 'Sorry, something went wrong';\n\n /**\n * HTML or TemplateRef for Toast's footer template;\n */\n footer?: string | TemplateRef;\n\n /**\n * Toast id\n */\n id?: string;\n\n /**\n * Custom class(es) for Toast\n */\n classname?: string;\n\n /**\n * Delay (in milliseconds) before Toast disappears\n */\n delay?: number;\n\n /**\n * Icon class for Toast's header. Visible only if `header` is set
\n * If set `boolean`: will be used default icon by toast type
\n * If set `string` (with custom icon class): will be used custom icon class\n */\n icon?: string | boolean;\n\n /**\n * Need to add `text-break` CSS-class to Toast:\n *
\n *\n * Possible values: `TextBreak.header | TextBreak.content | TextBreak.both | TextBreak.none`\n */\n textBreak?: TextBreak.header | TextBreak.content | TextBreak.both | TextBreak.none = TextBreak.none;\n\n /**\n * Keep state toast after you route to change.
\n * Toast will be removed if flag is false\n */\n keepAfterRouteChange?: boolean;\n\n /**\n * Show close button in Toast's header. Will be shown if header is set.\n * Now close button is always shown !\n */\n showClose? = true;\n\n preventClose? = false;\n\n constructor(init?: Partial) {\n Object.assign(this, init);\n }\n}\n","import { Injectable, TemplateRef } from '@angular/core';\nimport { NavigationStart, Router } from '@angular/router';\nimport { Observable, Subject } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { MbsPopupType } from '../utils';\nimport Toast from './toast.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ToastService {\n private subject = new Subject();\n private keepAfterRouteChange = false;\n\n constructor(private router: Router) {\n // clear alert messages on route change unless 'keepAfterRouteChange' flag is true\n router.events.subscribe((event) => {\n if (event instanceof NavigationStart) {\n if (this.keepAfterRouteChange) {\n this.keepAfterRouteChange = false;\n } else {\n // TODO: need refactored. Create empty toast with default setting\n // this.clearById();\n }\n }\n });\n }\n\n /**\n * Subscribe to toasts. Get toast by `Id`\n * @param {string} id\n * @return {Observable}\n */\n getById(id?: string): Observable {\n return this.subject.pipe(filter((x: Toast) => x && x.id === id));\n }\n\n /**\n * Alias for calling Toast by type: `MbsPopupType.success`\n * @default text for `content` is \"Success\"\n *\n * @param {string} message\n * @param {string} title\n */\n success(message?: string | TemplateRef, title?: string): void {\n this.toast(\n new Toast({\n header: title,\n icon: true,\n content: message || 'Success',\n type: MbsPopupType.success\n })\n );\n }\n\n /**\n * Alias for calling Toast by type: `MbsPopupType.danger`\n * @default text for `content` is \"Sorry, something went wrong\"\n *\n * @param {string} message\n * @param {string} title\n */\n error(message?: string | TemplateRef, title?: string): void {\n this.toast(\n new Toast({\n header: title,\n icon: true,\n content: message || 'Sorry, something went wrong',\n type: MbsPopupType.danger\n })\n );\n }\n\n /**\n * Alias for calling Toast by type: `MbsPopupType.info`\n *\n * @param {string} message\n * @param {string} title\n */\n info(message: string | TemplateRef, title?: string): void {\n this.toast(\n new Toast({\n header: title,\n icon: true,\n content: message,\n type: MbsPopupType.info\n })\n );\n }\n\n /**\n * alias for calling Toast by type: `MbsPopupType.warning`\n *\n * @param {string} message\n * @param {string} title\n */\n warn(message: string | TemplateRef, title?: string): void {\n this.toast(\n new Toast({\n header: title,\n icon: true,\n content: message,\n type: MbsPopupType.warning\n })\n );\n }\n\n /**\n * Method for calling custom Toast\n *\n * @param {Toast} toast\n */\n toast(toast: Toast): void {\n this.keepAfterRouteChange = toast.keepAfterRouteChange;\n this.subject.next(toast);\n }\n\n /**\n * Remove toast by id\n * @param {string} id\n */\n clearById(id?: string): void {\n this.subject.next(new Toast({ id }));\n }\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[treeElement]'\n})\nexport class TreeElementDirective {\n constructor(public template: TemplateRef) {}\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[treeLoadMore]'\n})\nexport class TreeLoadMoreDirective {\n constructor(public template: TemplateRef) {}\n}\n","import * as i0 from '@angular/core';\nimport { Version, InjectionToken, inject, NgModule, Optional, Inject, LOCALE_ID, Injectable, Directive, Input, Component, ViewEncapsulation, ChangeDetectionStrategy, EventEmitter, Output, ViewChild, ANIMATION_MODULE_TYPE as ANIMATION_MODULE_TYPE$1, NgZone, ElementRef } from '@angular/core';\nimport * as i1 from '@angular/cdk/a11y';\nimport { isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader } from '@angular/cdk/a11y';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { VERSION as VERSION$1 } from '@angular/cdk';\nimport * as i3 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i1$1 from '@angular/cdk/platform';\nimport { Platform, _isTestEnvironment, normalizePassiveListenerOptions, _getEventTarget } from '@angular/cdk/platform';\nimport { coerceBooleanProperty, coerceNumberProperty, coerceElement } from '@angular/cdk/coercion';\nimport { Observable, Subject } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { ENTER, SPACE, hasModifierKey } from '@angular/cdk/keycodes';\n\n/** Current version of Angular Material. */\nconst VERSION = new Version('16.2.10');\n\n/** @docs-private */\nclass AnimationCurves {\n static { this.STANDARD_CURVE = 'cubic-bezier(0.4,0.0,0.2,1)'; }\n static { this.DECELERATION_CURVE = 'cubic-bezier(0.0,0.0,0.2,1)'; }\n static { this.ACCELERATION_CURVE = 'cubic-bezier(0.4,0.0,1,1)'; }\n static { this.SHARP_CURVE = 'cubic-bezier(0.4,0.0,0.6,1)'; }\n}\n/** @docs-private */\nclass AnimationDurations {\n static { this.COMPLEX = '375ms'; }\n static { this.ENTERING = '225ms'; }\n static { this.EXITING = '195ms'; }\n}\n\n/** @docs-private */\nfunction MATERIAL_SANITY_CHECKS_FACTORY() {\n return true;\n}\n/** Injection token that configures whether the Material sanity checks are enabled. */\nconst MATERIAL_SANITY_CHECKS = new InjectionToken('mat-sanity-checks', {\n providedIn: 'root',\n factory: MATERIAL_SANITY_CHECKS_FACTORY,\n});\n/**\n * Module that captures anything that should be loaded and/or run for *all* Angular Material\n * components. This includes Bidi, etc.\n *\n * This module should be imported to each top-level component module (e.g., MatTabsModule).\n */\nclass MatCommonModule {\n constructor(highContrastModeDetector, _sanityChecks, _document) {\n this._sanityChecks = _sanityChecks;\n this._document = _document;\n /** Whether we've done the global sanity checks (e.g. a theme is loaded, there is a doctype). */\n this._hasDoneGlobalChecks = false;\n // While A11yModule also does this, we repeat it here to avoid importing A11yModule\n // in MatCommonModule.\n highContrastModeDetector._applyBodyHighContrastModeCssClasses();\n if (!this._hasDoneGlobalChecks) {\n this._hasDoneGlobalChecks = true;\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // Inject in here so the reference to `Platform` can be removed in production mode.\n const platform = inject(Platform, { optional: true });\n if (this._checkIsEnabled('doctype')) {\n _checkDoctypeIsDefined(this._document);\n }\n if (this._checkIsEnabled('theme')) {\n _checkThemeIsPresent(this._document, !!platform?.isBrowser);\n }\n if (this._checkIsEnabled('version')) {\n _checkCdkVersionMatch();\n }\n }\n }\n }\n /** Gets whether a specific sanity check is enabled. */\n _checkIsEnabled(name) {\n if (_isTestEnvironment()) {\n return false;\n }\n if (typeof this._sanityChecks === 'boolean') {\n return this._sanityChecks;\n }\n return !!this._sanityChecks[name];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCommonModule, deps: [{ token: i1.HighContrastModeDetector }, { token: MATERIAL_SANITY_CHECKS, optional: true }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCommonModule, imports: [BidiModule], exports: [BidiModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCommonModule, imports: [BidiModule, BidiModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCommonModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [BidiModule],\n exports: [BidiModule],\n }]\n }], ctorParameters: function () { return [{ type: i1.HighContrastModeDetector }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MATERIAL_SANITY_CHECKS]\n }] }, { type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n/** Checks that the page has a doctype. */\nfunction _checkDoctypeIsDefined(doc) {\n if (!doc.doctype) {\n console.warn('Current document does not have a doctype. This may cause ' +\n 'some Angular Material components not to behave as expected.');\n }\n}\n/** Checks that a theme has been included. */\nfunction _checkThemeIsPresent(doc, isBrowser) {\n // We need to assert that the `body` is defined, because these checks run very early\n // and the `body` won't be defined if the consumer put their scripts in the `head`.\n if (!doc.body || !isBrowser) {\n return;\n }\n const testElement = doc.createElement('div');\n testElement.classList.add('mat-theme-loaded-marker');\n doc.body.appendChild(testElement);\n const computedStyle = getComputedStyle(testElement);\n // In some situations the computed style of the test element can be null. For example in\n // Firefox, the computed style is null if an application is running inside of a hidden iframe.\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n if (computedStyle && computedStyle.display !== 'none') {\n console.warn('Could not find Angular Material core theme. Most Material ' +\n 'components may not work as expected. For more info refer ' +\n 'to the theming guide: https://material.angular.io/guide/theming');\n }\n testElement.remove();\n}\n/** Checks whether the Material version matches the CDK version. */\nfunction _checkCdkVersionMatch() {\n if (VERSION.full !== VERSION$1.full) {\n console.warn('The Angular Material version (' +\n VERSION.full +\n ') does not match ' +\n 'the Angular CDK version (' +\n VERSION$1.full +\n ').\\n' +\n 'Please ensure the versions of these two packages exactly match.');\n }\n}\n\nfunction mixinDisabled(base) {\n return class extends base {\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n }\n constructor(...args) {\n super(...args);\n this._disabled = false;\n }\n };\n}\n\nfunction mixinColor(base, defaultColor) {\n return class extends base {\n get color() {\n return this._color;\n }\n set color(value) {\n const colorPalette = value || this.defaultColor;\n if (colorPalette !== this._color) {\n if (this._color) {\n this._elementRef.nativeElement.classList.remove(`mat-${this._color}`);\n }\n if (colorPalette) {\n this._elementRef.nativeElement.classList.add(`mat-${colorPalette}`);\n }\n this._color = colorPalette;\n }\n }\n constructor(...args) {\n super(...args);\n this.defaultColor = defaultColor;\n // Set the default color that can be specified from the mixin.\n this.color = defaultColor;\n }\n };\n}\n\nfunction mixinDisableRipple(base) {\n return class extends base {\n /** Whether the ripple effect is disabled or not. */\n get disableRipple() {\n return this._disableRipple;\n }\n set disableRipple(value) {\n this._disableRipple = coerceBooleanProperty(value);\n }\n constructor(...args) {\n super(...args);\n this._disableRipple = false;\n }\n };\n}\n\nfunction mixinTabIndex(base, defaultTabIndex = 0) {\n return class extends base {\n get tabIndex() {\n return this.disabled ? -1 : this._tabIndex;\n }\n set tabIndex(value) {\n // If the specified tabIndex value is null or undefined, fall back to the default value.\n this._tabIndex = value != null ? coerceNumberProperty(value) : this.defaultTabIndex;\n }\n constructor(...args) {\n super(...args);\n this._tabIndex = defaultTabIndex;\n this.defaultTabIndex = defaultTabIndex;\n }\n };\n}\n\nfunction mixinErrorState(base) {\n return class extends base {\n /** Updates the error state based on the provided error state matcher. */\n updateErrorState() {\n const oldState = this.errorState;\n const parent = this._parentFormGroup || this._parentForm;\n const matcher = this.errorStateMatcher || this._defaultErrorStateMatcher;\n const control = this.ngControl ? this.ngControl.control : null;\n const newState = matcher.isErrorState(control, parent);\n if (newState !== oldState) {\n this.errorState = newState;\n this.stateChanges.next();\n }\n }\n constructor(...args) {\n super(...args);\n /** Whether the component is in an error state. */\n this.errorState = false;\n }\n };\n}\n\n/** Mixin to augment a directive with an initialized property that will emits when ngOnInit ends. */\nfunction mixinInitialized(base) {\n return class extends base {\n constructor(...args) {\n super(...args);\n /** Whether this directive has been marked as initialized. */\n this._isInitialized = false;\n /**\n * List of subscribers that subscribed before the directive was initialized. Should be notified\n * during _markInitialized. Set to null after pending subscribers are notified, and should\n * not expect to be populated after.\n */\n this._pendingSubscribers = [];\n /**\n * Observable stream that emits when the directive initializes. If already initialized, the\n * subscriber is stored to be notified once _markInitialized is called.\n */\n this.initialized = new Observable(subscriber => {\n // If initialized, immediately notify the subscriber. Otherwise store the subscriber to notify\n // when _markInitialized is called.\n if (this._isInitialized) {\n this._notifySubscriber(subscriber);\n }\n else {\n this._pendingSubscribers.push(subscriber);\n }\n });\n }\n /**\n * Marks the state as initialized and notifies pending subscribers. Should be called at the end\n * of ngOnInit.\n * @docs-private\n */\n _markInitialized() {\n if (this._isInitialized && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('This directive has already been marked as initialized and ' +\n 'should not be called twice.');\n }\n this._isInitialized = true;\n this._pendingSubscribers.forEach(this._notifySubscriber);\n this._pendingSubscribers = null;\n }\n /** Emits and completes the subscriber stream (should only emit once). */\n _notifySubscriber(subscriber) {\n subscriber.next();\n subscriber.complete();\n }\n };\n}\n\n/** InjectionToken for datepicker that can be used to override default locale code. */\nconst MAT_DATE_LOCALE = new InjectionToken('MAT_DATE_LOCALE', {\n providedIn: 'root',\n factory: MAT_DATE_LOCALE_FACTORY,\n});\n/** @docs-private */\nfunction MAT_DATE_LOCALE_FACTORY() {\n return inject(LOCALE_ID);\n}\n/** Adapts type `D` to be usable as a date by cdk-based components that work with dates. */\nclass DateAdapter {\n constructor() {\n this._localeChanges = new Subject();\n /** A stream that emits when the locale changes. */\n this.localeChanges = this._localeChanges;\n }\n /**\n * Given a potential date object, returns that same date object if it is\n * a valid date, or `null` if it's not a valid date.\n * @param obj The object to check.\n * @returns A date or `null`.\n */\n getValidDateOrNull(obj) {\n return this.isDateInstance(obj) && this.isValid(obj) ? obj : null;\n }\n /**\n * Attempts to deserialize a value to a valid date object. This is different from parsing in that\n * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\n * string). The default implementation does not allow any deserialization, it simply checks that\n * the given value is already a valid date object or null. The `` will call this\n * method on all of its `@Input()` properties that accept dates. It is therefore possible to\n * support passing values from your backend directly to these properties by overriding this method\n * to also deserialize the format used by your backend.\n * @param value The value to be deserialized into a date object.\n * @returns The deserialized date object, either a valid date, null if the value can be\n * deserialized into a null date (e.g. the empty string), or an invalid date.\n */\n deserialize(value) {\n if (value == null || (this.isDateInstance(value) && this.isValid(value))) {\n return value;\n }\n return this.invalid();\n }\n /**\n * Sets the locale used for all dates.\n * @param locale The new locale.\n */\n setLocale(locale) {\n this.locale = locale;\n this._localeChanges.next();\n }\n /**\n * Compares two dates.\n * @param first The first date to compare.\n * @param second The second date to compare.\n * @returns 0 if the dates are equal, a number less than 0 if the first date is earlier,\n * a number greater than 0 if the first date is later.\n */\n compareDate(first, second) {\n return (this.getYear(first) - this.getYear(second) ||\n this.getMonth(first) - this.getMonth(second) ||\n this.getDate(first) - this.getDate(second));\n }\n /**\n * Checks if two dates are equal.\n * @param first The first date to check.\n * @param second The second date to check.\n * @returns Whether the two dates are equal.\n * Null dates are considered equal to other null dates.\n */\n sameDate(first, second) {\n if (first && second) {\n let firstValid = this.isValid(first);\n let secondValid = this.isValid(second);\n if (firstValid && secondValid) {\n return !this.compareDate(first, second);\n }\n return firstValid == secondValid;\n }\n return first == second;\n }\n /**\n * Clamp the given date between min and max dates.\n * @param date The date to clamp.\n * @param min The minimum value to allow. If null or omitted no min is enforced.\n * @param max The maximum value to allow. If null or omitted no max is enforced.\n * @returns `min` if `date` is less than `min`, `max` if date is greater than `max`,\n * otherwise `date`.\n */\n clampDate(date, min, max) {\n if (min && this.compareDate(date, min) < 0) {\n return min;\n }\n if (max && this.compareDate(date, max) > 0) {\n return max;\n }\n return date;\n }\n}\n\nconst MAT_DATE_FORMATS = new InjectionToken('mat-date-formats');\n\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings an with out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX = /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\n/** Creates an array and fills it with values. */\nfunction range(length, valueFunction) {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n/** Adapts the native JS Date for use with cdk-based components that work with dates. */\nclass NativeDateAdapter extends DateAdapter {\n constructor(matDateLocale, \n /**\n * @deprecated No longer being used. To be removed.\n * @breaking-change 14.0.0\n */\n _platform) {\n super();\n /**\n * @deprecated No longer being used. To be removed.\n * @breaking-change 14.0.0\n */\n this.useUtcForDisplay = false;\n super.setLocale(matDateLocale);\n }\n getYear(date) {\n return date.getFullYear();\n }\n getMonth(date) {\n return date.getMonth();\n }\n getDate(date) {\n return date.getDate();\n }\n getDayOfWeek(date) {\n return date.getDay();\n }\n getMonthNames(style) {\n const dtf = new Intl.DateTimeFormat(this.locale, { month: style, timeZone: 'utc' });\n return range(12, i => this._format(dtf, new Date(2017, i, 1)));\n }\n getDateNames() {\n const dtf = new Intl.DateTimeFormat(this.locale, { day: 'numeric', timeZone: 'utc' });\n return range(31, i => this._format(dtf, new Date(2017, 0, i + 1)));\n }\n getDayOfWeekNames(style) {\n const dtf = new Intl.DateTimeFormat(this.locale, { weekday: style, timeZone: 'utc' });\n return range(7, i => this._format(dtf, new Date(2017, 0, i + 1)));\n }\n getYearName(date) {\n const dtf = new Intl.DateTimeFormat(this.locale, { year: 'numeric', timeZone: 'utc' });\n return this._format(dtf, date);\n }\n getFirstDayOfWeek() {\n // We can't tell using native JS Date what the first day of the week is, we default to Sunday.\n return 0;\n }\n getNumDaysInMonth(date) {\n return this.getDate(this._createDateWithOverflow(this.getYear(date), this.getMonth(date) + 1, 0));\n }\n clone(date) {\n return new Date(date.getTime());\n }\n createDate(year, month, date) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // Check for invalid month and date (except upper bound on date which we have to check after\n // creating the Date).\n if (month < 0 || month > 11) {\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n }\n if (date < 1) {\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n }\n }\n let result = this._createDateWithOverflow(year, month, date);\n // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n if (result.getMonth() != month && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n }\n return result;\n }\n today() {\n return new Date();\n }\n parse(value, parseFormat) {\n // We have no way using the native JS Date to set the parse format or locale, so we ignore these\n // parameters.\n if (typeof value == 'number') {\n return new Date(value);\n }\n return value ? new Date(Date.parse(value)) : null;\n }\n format(date, displayFormat) {\n if (!this.isValid(date)) {\n throw Error('NativeDateAdapter: Cannot format invalid date.');\n }\n const dtf = new Intl.DateTimeFormat(this.locale, { ...displayFormat, timeZone: 'utc' });\n return this._format(dtf, date);\n }\n addCalendarYears(date, years) {\n return this.addCalendarMonths(date, years * 12);\n }\n addCalendarMonths(date, months) {\n let newDate = this._createDateWithOverflow(this.getYear(date), this.getMonth(date) + months, this.getDate(date));\n // It's possible to wind up in the wrong month if the original month has more days than the new\n // month. In this case we want to go to the last day of the desired month.\n // Note: the additional + 12 % 12 ensures we end up with a positive number, since JS % doesn't\n // guarantee this.\n if (this.getMonth(newDate) != (((this.getMonth(date) + months) % 12) + 12) % 12) {\n newDate = this._createDateWithOverflow(this.getYear(newDate), this.getMonth(newDate), 0);\n }\n return newDate;\n }\n addCalendarDays(date, days) {\n return this._createDateWithOverflow(this.getYear(date), this.getMonth(date), this.getDate(date) + days);\n }\n toIso8601(date) {\n return [\n date.getUTCFullYear(),\n this._2digit(date.getUTCMonth() + 1),\n this._2digit(date.getUTCDate()),\n ].join('-');\n }\n /**\n * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n * invalid date for all other values.\n */\n deserialize(value) {\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n // string is the right format first.\n if (ISO_8601_REGEX.test(value)) {\n let date = new Date(value);\n if (this.isValid(date)) {\n return date;\n }\n }\n }\n return super.deserialize(value);\n }\n isDateInstance(obj) {\n return obj instanceof Date;\n }\n isValid(date) {\n return !isNaN(date.getTime());\n }\n invalid() {\n return new Date(NaN);\n }\n /** Creates a date but allows the month and date to overflow. */\n _createDateWithOverflow(year, month, date) {\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n // To work around this we use `setFullYear` and `setHours` instead.\n const d = new Date();\n d.setFullYear(year, month, date);\n d.setHours(0, 0, 0, 0);\n return d;\n }\n /**\n * Pads a number to make it two digits.\n * @param n The number to pad.\n * @returns The padded number.\n */\n _2digit(n) {\n return ('00' + n).slice(-2);\n }\n /**\n * When converting Date object to string, javascript built-in functions may return wrong\n * results because it applies its internal DST rules. The DST rules around the world change\n * very frequently, and the current valid rule is not always valid in previous years though.\n * We work around this problem building a new Date object which has its internal UTC\n * representation with the local date and time.\n * @param dtf Intl.DateTimeFormat object, containing the desired string format. It must have\n * timeZone set to 'utc' to work fine.\n * @param date Date from which we want to get the string representation according to dtf\n * @returns A Date object with its UTC representation based on the passed in date info\n */\n _format(dtf, date) {\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n // To work around this we use `setUTCFullYear` and `setUTCHours` instead.\n const d = new Date();\n d.setUTCFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n d.setUTCHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n return dtf.format(d);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: NativeDateAdapter, deps: [{ token: MAT_DATE_LOCALE, optional: true }, { token: i1$1.Platform }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: NativeDateAdapter }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: NativeDateAdapter, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DATE_LOCALE]\n }] }, { type: i1$1.Platform }]; } });\n\nconst MAT_NATIVE_DATE_FORMATS = {\n parse: {\n dateInput: null,\n },\n display: {\n dateInput: { year: 'numeric', month: 'numeric', day: 'numeric' },\n monthYearLabel: { year: 'numeric', month: 'short' },\n dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },\n monthYearA11yLabel: { year: 'numeric', month: 'long' },\n },\n};\n\nclass NativeDateModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: NativeDateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: NativeDateModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: NativeDateModule, providers: [{ provide: DateAdapter, useClass: NativeDateAdapter }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: NativeDateModule, decorators: [{\n type: NgModule,\n args: [{\n providers: [{ provide: DateAdapter, useClass: NativeDateAdapter }],\n }]\n }] });\nclass MatNativeDateModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatNativeDateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: MatNativeDateModule, imports: [NativeDateModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatNativeDateModule, providers: [{ provide: MAT_DATE_FORMATS, useValue: MAT_NATIVE_DATE_FORMATS }], imports: [NativeDateModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatNativeDateModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [NativeDateModule],\n providers: [{ provide: MAT_DATE_FORMATS, useValue: MAT_NATIVE_DATE_FORMATS }],\n }]\n }] });\n\n/** Error state matcher that matches when a control is invalid and dirty. */\nclass ShowOnDirtyErrorStateMatcher {\n isErrorState(control, form) {\n return !!(control && control.invalid && (control.dirty || (form && form.submitted)));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ShowOnDirtyErrorStateMatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ShowOnDirtyErrorStateMatcher }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ShowOnDirtyErrorStateMatcher, decorators: [{\n type: Injectable\n }] });\n/** Provider that defines how form controls behave with regards to displaying error messages. */\nclass ErrorStateMatcher {\n isErrorState(control, form) {\n return !!(control && control.invalid && (control.touched || (form && form.submitted)));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ErrorStateMatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ErrorStateMatcher, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ErrorStateMatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/**\n * Shared directive to count lines inside a text area, such as a list item.\n * Line elements can be extracted with a @ContentChildren(MatLine) query, then\n * counted by checking the query list's length.\n */\nclass MatLine {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatLine, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatLine, selector: \"[mat-line], [matLine]\", host: { classAttribute: \"mat-line\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatLine, decorators: [{\n type: Directive,\n args: [{\n selector: '[mat-line], [matLine]',\n host: { 'class': 'mat-line' },\n }]\n }] });\n/**\n * Helper that takes a query list of lines and sets the correct class on the host.\n * @docs-private\n */\nfunction setLines(lines, element, prefix = 'mat') {\n // Note: doesn't need to unsubscribe, because `changes`\n // gets completed by Angular when the view is destroyed.\n lines.changes.pipe(startWith(lines)).subscribe(({ length }) => {\n setClass(element, `${prefix}-2-line`, false);\n setClass(element, `${prefix}-3-line`, false);\n setClass(element, `${prefix}-multi-line`, false);\n if (length === 2 || length === 3) {\n setClass(element, `${prefix}-${length}-line`, true);\n }\n else if (length > 3) {\n setClass(element, `${prefix}-multi-line`, true);\n }\n });\n}\n/** Adds or removes a class from an element. */\nfunction setClass(element, className, isAdd) {\n element.nativeElement.classList.toggle(className, isAdd);\n}\nclass MatLineModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatLineModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: MatLineModule, declarations: [MatLine], imports: [MatCommonModule], exports: [MatLine, MatCommonModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatLineModule, imports: [MatCommonModule, MatCommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatLineModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatCommonModule],\n exports: [MatLine, MatCommonModule],\n declarations: [MatLine],\n }]\n }] });\n\n/**\n * Reference to a previously launched ripple element.\n */\nclass RippleRef {\n constructor(_renderer, \n /** Reference to the ripple HTML element. */\n element, \n /** Ripple configuration used for the ripple. */\n config, \n /* Whether animations are forcibly disabled for ripples through CSS. */\n _animationForciblyDisabledThroughCss = false) {\n this._renderer = _renderer;\n this.element = element;\n this.config = config;\n this._animationForciblyDisabledThroughCss = _animationForciblyDisabledThroughCss;\n /** Current state of the ripple. */\n this.state = 3 /* RippleState.HIDDEN */;\n }\n /** Fades out the ripple element. */\n fadeOut() {\n this._renderer.fadeOutRipple(this);\n }\n}\n\n/** Options used to bind a passive capturing event. */\nconst passiveCapturingEventOptions$1 = normalizePassiveListenerOptions({\n passive: true,\n capture: true,\n});\n/** Manages events through delegation so that as few event handlers as possible are bound. */\nclass RippleEventManager {\n constructor() {\n this._events = new Map();\n /** Event handler that is bound and which dispatches the events to the different targets. */\n this._delegateEventHandler = (event) => {\n const target = _getEventTarget(event);\n if (target) {\n this._events.get(event.type)?.forEach((handlers, element) => {\n if (element === target || element.contains(target)) {\n handlers.forEach(handler => handler.handleEvent(event));\n }\n });\n }\n };\n }\n /** Adds an event handler. */\n addHandler(ngZone, name, element, handler) {\n const handlersForEvent = this._events.get(name);\n if (handlersForEvent) {\n const handlersForElement = handlersForEvent.get(element);\n if (handlersForElement) {\n handlersForElement.add(handler);\n }\n else {\n handlersForEvent.set(element, new Set([handler]));\n }\n }\n else {\n this._events.set(name, new Map([[element, new Set([handler])]]));\n ngZone.runOutsideAngular(() => {\n document.addEventListener(name, this._delegateEventHandler, passiveCapturingEventOptions$1);\n });\n }\n }\n /** Removes an event handler. */\n removeHandler(name, element, handler) {\n const handlersForEvent = this._events.get(name);\n if (!handlersForEvent) {\n return;\n }\n const handlersForElement = handlersForEvent.get(element);\n if (!handlersForElement) {\n return;\n }\n handlersForElement.delete(handler);\n if (handlersForElement.size === 0) {\n handlersForEvent.delete(element);\n }\n if (handlersForEvent.size === 0) {\n this._events.delete(name);\n document.removeEventListener(name, this._delegateEventHandler, passiveCapturingEventOptions$1);\n }\n }\n}\n\n/**\n * Default ripple animation configuration for ripples without an explicit\n * animation config specified.\n */\nconst defaultRippleAnimationConfig = {\n enterDuration: 225,\n exitDuration: 150,\n};\n/**\n * Timeout for ignoring mouse events. Mouse events will be temporary ignored after touch\n * events to avoid synthetic mouse events.\n */\nconst ignoreMouseEventsTimeout = 800;\n/** Options used to bind a passive capturing event. */\nconst passiveCapturingEventOptions = normalizePassiveListenerOptions({\n passive: true,\n capture: true,\n});\n/** Events that signal that the pointer is down. */\nconst pointerDownEvents = ['mousedown', 'touchstart'];\n/** Events that signal that the pointer is up. */\nconst pointerUpEvents = ['mouseup', 'mouseleave', 'touchend', 'touchcancel'];\n/**\n * Helper service that performs DOM manipulations. Not intended to be used outside this module.\n * The constructor takes a reference to the ripple directive's host element and a map of DOM\n * event handlers to be installed on the element that triggers ripple animations.\n * This will eventually become a custom renderer once Angular support exists.\n * @docs-private\n */\nclass RippleRenderer {\n static { this._eventManager = new RippleEventManager(); }\n constructor(_target, _ngZone, elementOrElementRef, _platform) {\n this._target = _target;\n this._ngZone = _ngZone;\n this._platform = _platform;\n /** Whether the pointer is currently down or not. */\n this._isPointerDown = false;\n /**\n * Map of currently active ripple references.\n * The ripple reference is mapped to its element event listeners.\n * The reason why `| null` is used is that event listeners are added only\n * when the condition is truthy (see the `_startFadeOutTransition` method).\n */\n this._activeRipples = new Map();\n /** Whether pointer-up event listeners have been registered. */\n this._pointerUpEventsRegistered = false;\n // Only do anything if we're on the browser.\n if (_platform.isBrowser) {\n this._containerElement = coerceElement(elementOrElementRef);\n }\n }\n /**\n * Fades in a ripple at the given coordinates.\n * @param x Coordinate within the element, along the X axis at which to start the ripple.\n * @param y Coordinate within the element, along the Y axis at which to start the ripple.\n * @param config Extra ripple options.\n */\n fadeInRipple(x, y, config = {}) {\n const containerRect = (this._containerRect =\n this._containerRect || this._containerElement.getBoundingClientRect());\n const animationConfig = { ...defaultRippleAnimationConfig, ...config.animation };\n if (config.centered) {\n x = containerRect.left + containerRect.width / 2;\n y = containerRect.top + containerRect.height / 2;\n }\n const radius = config.radius || distanceToFurthestCorner(x, y, containerRect);\n const offsetX = x - containerRect.left;\n const offsetY = y - containerRect.top;\n const enterDuration = animationConfig.enterDuration;\n const ripple = document.createElement('div');\n ripple.classList.add('mat-ripple-element');\n ripple.style.left = `${offsetX - radius}px`;\n ripple.style.top = `${offsetY - radius}px`;\n ripple.style.height = `${radius * 2}px`;\n ripple.style.width = `${radius * 2}px`;\n // If a custom color has been specified, set it as inline style. If no color is\n // set, the default color will be applied through the ripple theme styles.\n if (config.color != null) {\n ripple.style.backgroundColor = config.color;\n }\n ripple.style.transitionDuration = `${enterDuration}ms`;\n this._containerElement.appendChild(ripple);\n // By default the browser does not recalculate the styles of dynamically created\n // ripple elements. This is critical to ensure that the `scale` animates properly.\n // We enforce a style recalculation by calling `getComputedStyle` and *accessing* a property.\n // See: https://gist.github.com/paulirish/5d52fb081b3570c81e3a\n const computedStyles = window.getComputedStyle(ripple);\n const userTransitionProperty = computedStyles.transitionProperty;\n const userTransitionDuration = computedStyles.transitionDuration;\n // Note: We detect whether animation is forcibly disabled through CSS (e.g. through\n // `transition: none` or `display: none`). This is technically unexpected since animations are\n // controlled through the animation config, but this exists for backwards compatibility. This\n // logic does not need to be super accurate since it covers some edge cases which can be easily\n // avoided by users.\n const animationForciblyDisabledThroughCss = userTransitionProperty === 'none' ||\n // Note: The canonical unit for serialized CSS `
\\n\\n\\n\", styles: [\".mat-mdc-optgroup{color:var(--mat-optgroup-label-text-color);font-family:var(--mat-optgroup-label-text-font);line-height:var(--mat-optgroup-label-text-line-height);font-size:var(--mat-optgroup-label-text-size);letter-spacing:var(--mat-optgroup-label-text-tracking);font-weight:var(--mat-optgroup-label-text-weight)}.mat-mdc-optgroup-label{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:16px;padding-right:16px;min-height:48px}.mat-mdc-optgroup-label:focus{outline:none}[dir=rtl] .mat-mdc-optgroup-label,.mat-mdc-optgroup-label[dir=rtl]{padding-left:16px;padding-right:16px}.mat-mdc-optgroup-label.mdc-list-item--disabled{opacity:.38}.mat-mdc-optgroup-label .mdc-list-item__primary-text{font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;font-family:inherit;text-decoration:inherit;text-transform:inherit;white-space:normal}\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatOptgroup, decorators: [{\n type: Component,\n args: [{ selector: 'mat-optgroup', exportAs: 'matOptgroup', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, inputs: ['disabled'], host: {\n 'class': 'mat-mdc-optgroup',\n '[attr.role]': '_inert ? null : \"group\"',\n '[attr.aria-disabled]': '_inert ? null : disabled.toString()',\n '[attr.aria-labelledby]': '_inert ? null : _labelId',\n }, providers: [{ provide: MAT_OPTGROUP, useExisting: MatOptgroup }], template: \"\\n {{ label }} \\n
\\n\\n\\n\", styles: [\".mat-mdc-optgroup{color:var(--mat-optgroup-label-text-color);font-family:var(--mat-optgroup-label-text-font);line-height:var(--mat-optgroup-label-text-line-height);font-size:var(--mat-optgroup-label-text-size);letter-spacing:var(--mat-optgroup-label-text-tracking);font-weight:var(--mat-optgroup-label-text-weight)}.mat-mdc-optgroup-label{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:16px;padding-right:16px;min-height:48px}.mat-mdc-optgroup-label:focus{outline:none}[dir=rtl] .mat-mdc-optgroup-label,.mat-mdc-optgroup-label[dir=rtl]{padding-left:16px;padding-right:16px}.mat-mdc-optgroup-label.mdc-list-item--disabled{opacity:.38}.mat-mdc-optgroup-label .mdc-list-item__primary-text{font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;font-family:inherit;text-decoration:inherit;text-transform:inherit;white-space:normal}\"] }]\n }] });\n\n/**\n * Option IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nlet _uniqueIdCounter = 0;\n/** Event object emitted by MatOption when selected or deselected. */\nclass MatOptionSelectionChange {\n constructor(\n /** Reference to the option that emitted the event. */\n source, \n /** Whether the change in the option's value was a result of a user action. */\n isUserInput = false) {\n this.source = source;\n this.isUserInput = isUserInput;\n }\n}\nclass _MatOptionBase {\n /** Whether the wrapping component is in multiple selection mode. */\n get multiple() {\n return this._parent && this._parent.multiple;\n }\n /** Whether or not the option is currently selected. */\n get selected() {\n return this._selected;\n }\n /** Whether the option is disabled. */\n get disabled() {\n return (this.group && this.group.disabled) || this._disabled;\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n }\n /** Whether ripples for the option are disabled. */\n get disableRipple() {\n return !!(this._parent && this._parent.disableRipple);\n }\n /** Whether to display checkmark for single-selection. */\n get hideSingleSelectionIndicator() {\n return !!(this._parent && this._parent.hideSingleSelectionIndicator);\n }\n constructor(_element, _changeDetectorRef, _parent, group) {\n this._element = _element;\n this._changeDetectorRef = _changeDetectorRef;\n this._parent = _parent;\n this.group = group;\n this._selected = false;\n this._active = false;\n this._disabled = false;\n this._mostRecentViewValue = '';\n /** The unique ID of the option. */\n this.id = `mat-option-${_uniqueIdCounter++}`;\n /** Event emitted when the option is selected or deselected. */\n // tslint:disable-next-line:no-output-on-prefix\n this.onSelectionChange = new EventEmitter();\n /** Emits when the state of the option changes and any parents have to be notified. */\n this._stateChanges = new Subject();\n }\n /**\n * Whether or not the option is currently active and ready to be selected.\n * An active option displays styles as if it is focused, but the\n * focus is actually retained somewhere else. This comes in handy\n * for components like autocomplete where focus must remain on the input.\n */\n get active() {\n return this._active;\n }\n /**\n * The displayed value of the option. It is necessary to show the selected option in the\n * select's trigger.\n */\n get viewValue() {\n // TODO(kara): Add input property alternative for node envs.\n return (this._text?.nativeElement.textContent || '').trim();\n }\n /** Selects the option. */\n select(emitEvent = true) {\n if (!this._selected) {\n this._selected = true;\n this._changeDetectorRef.markForCheck();\n if (emitEvent) {\n this._emitSelectionChangeEvent();\n }\n }\n }\n /** Deselects the option. */\n deselect(emitEvent = true) {\n if (this._selected) {\n this._selected = false;\n this._changeDetectorRef.markForCheck();\n if (emitEvent) {\n this._emitSelectionChangeEvent();\n }\n }\n }\n /** Sets focus onto this option. */\n focus(_origin, options) {\n // Note that we aren't using `_origin`, but we need to keep it because some internal consumers\n // use `MatOption` in a `FocusKeyManager` and we need it to match `FocusableOption`.\n const element = this._getHostElement();\n if (typeof element.focus === 'function') {\n element.focus(options);\n }\n }\n /**\n * This method sets display styles on the option to make it appear\n * active. This is used by the ActiveDescendantKeyManager so key\n * events will display the proper options as active on arrow key events.\n */\n setActiveStyles() {\n if (!this._active) {\n this._active = true;\n this._changeDetectorRef.markForCheck();\n }\n }\n /**\n * This method removes display styles on the option that made it appear\n * active. This is used by the ActiveDescendantKeyManager so key\n * events will display the proper options as active on arrow key events.\n */\n setInactiveStyles() {\n if (this._active) {\n this._active = false;\n this._changeDetectorRef.markForCheck();\n }\n }\n /** Gets the label to be used when determining whether the option should be focused. */\n getLabel() {\n return this.viewValue;\n }\n /** Ensures the option is selected when activated from the keyboard. */\n _handleKeydown(event) {\n if ((event.keyCode === ENTER || event.keyCode === SPACE) && !hasModifierKey(event)) {\n this._selectViaInteraction();\n // Prevent the page from scrolling down and form submits.\n event.preventDefault();\n }\n }\n /**\n * `Selects the option while indicating the selection came from the user. Used to\n * determine if the select's view -> model callback should be invoked.`\n */\n _selectViaInteraction() {\n if (!this.disabled) {\n this._selected = this.multiple ? !this._selected : true;\n this._changeDetectorRef.markForCheck();\n this._emitSelectionChangeEvent(true);\n }\n }\n /** Returns the correct tabindex for the option depending on disabled state. */\n // This method is only used by `MatLegacyOption`. Keeping it here to avoid breaking the types.\n // That's because `MatLegacyOption` use `MatOption` type in a few places such as\n // `MatOptionSelectionChange`. It is safe to delete this when `MatLegacyOption` is deleted.\n _getTabIndex() {\n return this.disabled ? '-1' : '0';\n }\n /** Gets the host DOM element. */\n _getHostElement() {\n return this._element.nativeElement;\n }\n ngAfterViewChecked() {\n // Since parent components could be using the option's label to display the selected values\n // (e.g. `mat-select`) and they don't have a way of knowing if the option's label has changed\n // we have to check for changes in the DOM ourselves and dispatch an event. These checks are\n // relatively cheap, however we still limit them only to selected options in order to avoid\n // hitting the DOM too often.\n if (this._selected) {\n const viewValue = this.viewValue;\n if (viewValue !== this._mostRecentViewValue) {\n if (this._mostRecentViewValue) {\n this._stateChanges.next();\n }\n this._mostRecentViewValue = viewValue;\n }\n }\n }\n ngOnDestroy() {\n this._stateChanges.complete();\n }\n /** Emits the selection change event. */\n _emitSelectionChangeEvent(isUserInput = false) {\n this.onSelectionChange.emit(new MatOptionSelectionChange(this, isUserInput));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: _MatOptionBase, deps: \"invalid\", target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: _MatOptionBase, inputs: { value: \"value\", id: \"id\", disabled: \"disabled\" }, outputs: { onSelectionChange: \"onSelectionChange\" }, viewQueries: [{ propertyName: \"_text\", first: true, predicate: [\"text\"], descendants: true, static: true }], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: _MatOptionBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: undefined }, { type: _MatOptgroupBase }]; }, propDecorators: { value: [{\n type: Input\n }], id: [{\n type: Input\n }], disabled: [{\n type: Input\n }], onSelectionChange: [{\n type: Output\n }], _text: [{\n type: ViewChild,\n args: ['text', { static: true }]\n }] } });\n/**\n * Single option inside of a `` element.\n */\nclass MatOption extends _MatOptionBase {\n constructor(element, changeDetectorRef, parent, group) {\n super(element, changeDetectorRef, parent, group);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatOption, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: MAT_OPTION_PARENT_COMPONENT, optional: true }, { token: MAT_OPTGROUP, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatOption, selector: \"mat-option\", host: { attributes: { \"role\": \"option\" }, listeners: { \"click\": \"_selectViaInteraction()\", \"keydown\": \"_handleKeydown($event)\" }, properties: { \"class.mdc-list-item--selected\": \"selected\", \"class.mat-mdc-option-multiple\": \"multiple\", \"class.mat-mdc-option-active\": \"active\", \"class.mdc-list-item--disabled\": \"disabled\", \"id\": \"id\", \"attr.aria-selected\": \"selected\", \"attr.aria-disabled\": \"disabled.toString()\" }, classAttribute: \"mat-mdc-option mdc-list-item\" }, exportAs: [\"matOption\"], usesInheritance: true, ngImport: i0, template: \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n({{ group.label }})\\n\\n
\\n
\\n\", styles: [\".mat-mdc-option{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:16px;padding-right:16px;-webkit-user-select:none;user-select:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0);color:var(--mat-option-label-text-color);font-family:var(--mat-option-label-text-font);line-height:var(--mat-option-label-text-line-height);font-size:var(--mat-option-label-text-size);letter-spacing:var(--mat-option-label-text-tracking);font-weight:var(--mat-option-label-text-weight);min-height:48px}.mat-mdc-option:focus{outline:none}[dir=rtl] .mat-mdc-option,.mat-mdc-option[dir=rtl]{padding-left:16px;padding-right:16px}.mat-mdc-option:hover:not(.mdc-list-item--disabled){background-color:var(--mat-option-hover-state-layer-color)}.mat-mdc-option:focus.mdc-list-item,.mat-mdc-option.mat-mdc-option-active.mdc-list-item{background-color:var(--mat-option-focus-state-layer-color)}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mat-option-selected-state-label-text-color)}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled):not(.mat-mdc-option-multiple){background-color:var(--mat-option-selected-state-layer-color)}.mat-mdc-option.mdc-list-item{align-items:center}.mat-mdc-option.mdc-list-item--disabled{cursor:default;pointer-events:none}.mat-mdc-option.mdc-list-item--disabled .mat-mdc-option-pseudo-checkbox,.mat-mdc-option.mdc-list-item--disabled .mdc-list-item__primary-text,.mat-mdc-option.mdc-list-item--disabled>mat-icon{opacity:.38}.mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:32px}[dir=rtl] .mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:16px;padding-right:32px}.mat-mdc-option .mat-icon,.mat-mdc-option .mat-pseudo-checkbox-full{margin-right:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-icon,[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-full{margin-right:0;margin-left:16px}.mat-mdc-option .mat-pseudo-checkbox-minimal{margin-left:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-minimal{margin-right:16px;margin-left:0}.mat-mdc-option .mat-mdc-option-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-mdc-option .mdc-list-item__primary-text{white-space:normal;font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;font-family:inherit;text-decoration:inherit;text-transform:inherit;margin-right:auto}[dir=rtl] .mat-mdc-option .mdc-list-item__primary-text{margin-right:0;margin-left:auto}.cdk-high-contrast-active .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple)::after{content:\\\"\\\";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}[dir=rtl] .cdk-high-contrast-active .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple)::after{right:auto;left:16px}.mat-mdc-option-active .mat-mdc-focus-indicator::before{content:\\\"\\\"}\"], dependencies: [{ kind: \"directive\", type: MatRipple, selector: \"[mat-ripple], [matRipple]\", inputs: [\"matRippleColor\", \"matRippleUnbounded\", \"matRippleCentered\", \"matRippleRadius\", \"matRippleAnimation\", \"matRippleDisabled\", \"matRippleTrigger\"], exportAs: [\"matRipple\"] }, { kind: \"directive\", type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"component\", type: MatPseudoCheckbox, selector: \"mat-pseudo-checkbox\", inputs: [\"state\", \"disabled\", \"appearance\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatOption, decorators: [{\n type: Component,\n args: [{ selector: 'mat-option', exportAs: 'matOption', host: {\n 'role': 'option',\n '[class.mdc-list-item--selected]': 'selected',\n '[class.mat-mdc-option-multiple]': 'multiple',\n '[class.mat-mdc-option-active]': 'active',\n '[class.mdc-list-item--disabled]': 'disabled',\n '[id]': 'id',\n // Set aria-selected to false for non-selected items and true for selected items. Conform to\n // [WAI ARIA Listbox authoring practices guide](\n // https://www.w3.org/WAI/ARIA/apg/patterns/listbox/), \"If any options are selected, each\n // selected option has either aria-selected or aria-checked set to true. All options that are\n // selectable but not selected have either aria-selected or aria-checked set to false.\" Align\n // aria-selected implementation of Chips and List components.\n //\n // Set `aria-selected=\"false\"` on not-selected listbox options to fix VoiceOver announcing\n // every option as \"selected\" (#21491).\n '[attr.aria-selected]': 'selected',\n '[attr.aria-disabled]': 'disabled.toString()',\n '(click)': '_selectViaInteraction()',\n '(keydown)': '_handleKeydown($event)',\n 'class': 'mat-mdc-option mdc-list-item',\n }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n({{ group.label }})\\n\\n
\\n
\\n\", styles: [\".mat-mdc-option{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:16px;padding-right:16px;-webkit-user-select:none;user-select:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0);color:var(--mat-option-label-text-color);font-family:var(--mat-option-label-text-font);line-height:var(--mat-option-label-text-line-height);font-size:var(--mat-option-label-text-size);letter-spacing:var(--mat-option-label-text-tracking);font-weight:var(--mat-option-label-text-weight);min-height:48px}.mat-mdc-option:focus{outline:none}[dir=rtl] .mat-mdc-option,.mat-mdc-option[dir=rtl]{padding-left:16px;padding-right:16px}.mat-mdc-option:hover:not(.mdc-list-item--disabled){background-color:var(--mat-option-hover-state-layer-color)}.mat-mdc-option:focus.mdc-list-item,.mat-mdc-option.mat-mdc-option-active.mdc-list-item{background-color:var(--mat-option-focus-state-layer-color)}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mat-option-selected-state-label-text-color)}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled):not(.mat-mdc-option-multiple){background-color:var(--mat-option-selected-state-layer-color)}.mat-mdc-option.mdc-list-item{align-items:center}.mat-mdc-option.mdc-list-item--disabled{cursor:default;pointer-events:none}.mat-mdc-option.mdc-list-item--disabled .mat-mdc-option-pseudo-checkbox,.mat-mdc-option.mdc-list-item--disabled .mdc-list-item__primary-text,.mat-mdc-option.mdc-list-item--disabled>mat-icon{opacity:.38}.mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:32px}[dir=rtl] .mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:16px;padding-right:32px}.mat-mdc-option .mat-icon,.mat-mdc-option .mat-pseudo-checkbox-full{margin-right:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-icon,[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-full{margin-right:0;margin-left:16px}.mat-mdc-option .mat-pseudo-checkbox-minimal{margin-left:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-minimal{margin-right:16px;margin-left:0}.mat-mdc-option .mat-mdc-option-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-mdc-option .mdc-list-item__primary-text{white-space:normal;font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;font-family:inherit;text-decoration:inherit;text-transform:inherit;margin-right:auto}[dir=rtl] .mat-mdc-option .mdc-list-item__primary-text{margin-right:0;margin-left:auto}.cdk-high-contrast-active .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple)::after{content:\\\"\\\";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}[dir=rtl] .cdk-high-contrast-active .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple)::after{right:auto;left:16px}.mat-mdc-option-active .mat-mdc-focus-indicator::before{content:\\\"\\\"}\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_OPTION_PARENT_COMPONENT]\n }] }, { type: MatOptgroup, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_OPTGROUP]\n }] }]; } });\n/**\n * Counts the amount of option group labels that precede the specified option.\n * @param optionIndex Index of the option at which to start counting.\n * @param options Flat list of all of the options.\n * @param optionGroups Flat list of all of the option groups.\n * @docs-private\n */\nfunction _countGroupLabelsBeforeOption(optionIndex, options, optionGroups) {\n if (optionGroups.length) {\n let optionsArray = options.toArray();\n let groups = optionGroups.toArray();\n let groupCounter = 0;\n for (let i = 0; i < optionIndex + 1; i++) {\n if (optionsArray[i].group && optionsArray[i].group === groups[groupCounter]) {\n groupCounter++;\n }\n }\n return groupCounter;\n }\n return 0;\n}\n/**\n * Determines the position to which to scroll a panel in order for an option to be into view.\n * @param optionOffset Offset of the option from the top of the panel.\n * @param optionHeight Height of the options.\n * @param currentScrollPosition Current scroll position of the panel.\n * @param panelHeight Height of the panel.\n * @docs-private\n */\nfunction _getOptionScrollPosition(optionOffset, optionHeight, currentScrollPosition, panelHeight) {\n if (optionOffset < currentScrollPosition) {\n return optionOffset;\n }\n if (optionOffset + optionHeight > currentScrollPosition + panelHeight) {\n return Math.max(0, optionOffset - panelHeight + optionHeight);\n }\n return currentScrollPosition;\n}\n\nclass MatOptionModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatOptionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: MatOptionModule, declarations: [MatOption, MatOptgroup], imports: [MatRippleModule, CommonModule, MatCommonModule, MatPseudoCheckboxModule], exports: [MatOption, MatOptgroup] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatOptionModule, imports: [MatRippleModule, CommonModule, MatCommonModule, MatPseudoCheckboxModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatOptionModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatRippleModule, CommonModule, MatCommonModule, MatPseudoCheckboxModule],\n exports: [MatOption, MatOptgroup],\n declarations: [MatOption, MatOptgroup],\n }]\n }] });\n\n/** The options for the MatRippleLoader's event listeners. */\nconst eventListenerOptions = { capture: true };\n/** The events that should trigger the initialization of the ripple. */\nconst rippleInteractionEvents = ['focus', 'click', 'mouseenter', 'touchstart'];\n/** The attribute attached to a component whose ripple has not yet been initialized. */\nconst matRippleUninitialized = 'mat-ripple-loader-uninitialized';\n/** Additional classes that should be added to the ripple when it is rendered. */\nconst matRippleClassName = 'mat-ripple-loader-class-name';\n/** Whether the ripple should be centered. */\nconst matRippleCentered = 'mat-ripple-loader-centered';\n/** Whether the ripple should be disabled. */\nconst matRippleDisabled = 'mat-ripple-loader-disabled';\n/**\n * Handles attaching ripples on demand.\n *\n * This service allows us to avoid eagerly creating & attaching MatRipples.\n * It works by creating & attaching a ripple only when a component is first interacted with.\n */\nclass MatRippleLoader {\n constructor() {\n this._document = inject(DOCUMENT, { optional: true });\n this._animationMode = inject(ANIMATION_MODULE_TYPE$1, { optional: true });\n this._globalRippleOptions = inject(MAT_RIPPLE_GLOBAL_OPTIONS, { optional: true });\n this._platform = inject(Platform);\n this._ngZone = inject(NgZone);\n /** Handles creating and attaching component internals when a component it is initially interacted with. */\n this._onInteraction = (event) => {\n if (!(event.target instanceof HTMLElement)) {\n return;\n }\n const eventTarget = event.target;\n // TODO(wagnermaciel): Consider batching these events to improve runtime performance.\n const element = eventTarget.closest(`[${matRippleUninitialized}]`);\n if (element) {\n this.createRipple(element);\n }\n };\n this._ngZone.runOutsideAngular(() => {\n for (const event of rippleInteractionEvents) {\n this._document?.addEventListener(event, this._onInteraction, eventListenerOptions);\n }\n });\n }\n ngOnDestroy() {\n for (const event of rippleInteractionEvents) {\n this._document?.removeEventListener(event, this._onInteraction, eventListenerOptions);\n }\n }\n /**\n * Configures the ripple that will be rendered by the ripple loader.\n *\n * Stores the given information about how the ripple should be configured on the host\n * element so that it can later be retrived & used when the ripple is actually created.\n */\n configureRipple(host, config) {\n // Indicates that the ripple has not yet been rendered for this component.\n host.setAttribute(matRippleUninitialized, '');\n // Store the additional class name(s) that should be added to the ripple element.\n if (config.className || !host.hasAttribute(matRippleClassName)) {\n host.setAttribute(matRippleClassName, config.className || '');\n }\n // Store whether the ripple should be centered.\n if (config.centered) {\n host.setAttribute(matRippleCentered, '');\n }\n if (config.disabled) {\n host.setAttribute(matRippleDisabled, '');\n }\n }\n /** Returns the ripple instance for the given host element. */\n getRipple(host) {\n if (host.matRipple) {\n return host.matRipple;\n }\n return this.createRipple(host);\n }\n /** Sets the disabled state on the ripple instance corresponding to the given host element. */\n setDisabled(host, disabled) {\n const ripple = host.matRipple;\n // If the ripple has already been instantiated, just disable it.\n if (ripple) {\n ripple.disabled = disabled;\n return;\n }\n // Otherwise, set an attribute so we know what the\n // disabled state should be when the ripple is initialized.\n if (disabled) {\n host.setAttribute(matRippleDisabled, '');\n }\n else {\n host.removeAttribute(matRippleDisabled);\n }\n }\n /** Creates a MatRipple and appends it to the given element. */\n createRipple(host) {\n if (!this._document) {\n return;\n }\n // Create the ripple element.\n host.querySelector('.mat-ripple')?.remove();\n const rippleEl = this._document.createElement('span');\n rippleEl.classList.add('mat-ripple', host.getAttribute(matRippleClassName));\n host.append(rippleEl);\n // Create the MatRipple.\n const ripple = new MatRipple(new ElementRef(rippleEl), this._ngZone, this._platform, this._globalRippleOptions ? this._globalRippleOptions : undefined, this._animationMode ? this._animationMode : undefined);\n ripple._isInitialized = true;\n ripple.trigger = host;\n ripple.centered = host.hasAttribute(matRippleCentered);\n ripple.disabled = host.hasAttribute(matRippleDisabled);\n this.attachRipple(host, ripple);\n return ripple;\n }\n attachRipple(host, ripple) {\n host.removeAttribute(matRippleUninitialized);\n host.matRipple = ripple;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatRippleLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatRippleLoader, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatRippleLoader, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return []; } });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AnimationCurves, AnimationDurations, DateAdapter, ErrorStateMatcher, MATERIAL_SANITY_CHECKS, MAT_DATE_FORMATS, MAT_DATE_LOCALE, MAT_DATE_LOCALE_FACTORY, MAT_NATIVE_DATE_FORMATS, MAT_OPTGROUP, MAT_OPTION_PARENT_COMPONENT, MAT_RIPPLE_GLOBAL_OPTIONS, MatCommonModule, MatLine, MatLineModule, MatNativeDateModule, MatOptgroup, MatOption, MatOptionModule, MatOptionSelectionChange, MatPseudoCheckbox, MatPseudoCheckboxModule, MatRipple, MatRippleLoader, MatRippleModule, NativeDateAdapter, NativeDateModule, RippleRef, RippleRenderer, ShowOnDirtyErrorStateMatcher, VERSION, _MatOptgroupBase, _MatOptionBase, _countGroupLabelsBeforeOption, _getOptionScrollPosition, defaultRippleAnimationConfig, mixinColor, mixinDisableRipple, mixinDisabled, mixinErrorState, mixinInitialized, mixinTabIndex, setLines };\n","import { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { inject, APP_ID, Injectable, Inject, QueryList, Directive, Input, InjectionToken, Optional, EventEmitter, Output, NgModule } from '@angular/core';\nimport * as i1 from '@angular/cdk/platform';\nimport { _getFocusedElementPierceShadowDom, normalizePassiveListenerOptions, _getEventTarget, _getShadowRoot } from '@angular/cdk/platform';\nimport { Subject, Subscription, BehaviorSubject, of } from 'rxjs';\nimport { hasModifierKey, A, Z, ZERO, NINE, PAGE_DOWN, PAGE_UP, END, HOME, LEFT_ARROW, RIGHT_ARROW, UP_ARROW, DOWN_ARROW, TAB, ALT, CONTROL, MAC_META, META, SHIFT } from '@angular/cdk/keycodes';\nimport { tap, debounceTime, filter, map, take, skip, distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { coerceBooleanProperty, coerceElement } from '@angular/cdk/coercion';\nimport * as i1$1 from '@angular/cdk/observers';\nimport { ObserversModule } from '@angular/cdk/observers';\nimport { BreakpointObserver } from '@angular/cdk/layout';\n\n/** IDs are delimited by an empty space, as per the spec. */\nconst ID_DELIMITER = ' ';\n/**\n * Adds the given ID to the specified ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nfunction addAriaReferencedId(el, attr, id) {\n const ids = getAriaReferenceIds(el, attr);\n if (ids.some(existingId => existingId.trim() == id.trim())) {\n return;\n }\n ids.push(id.trim());\n el.setAttribute(attr, ids.join(ID_DELIMITER));\n}\n/**\n * Removes the given ID from the specified ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nfunction removeAriaReferencedId(el, attr, id) {\n const ids = getAriaReferenceIds(el, attr);\n const filteredIds = ids.filter(val => val != id.trim());\n if (filteredIds.length) {\n el.setAttribute(attr, filteredIds.join(ID_DELIMITER));\n }\n else {\n el.removeAttribute(attr);\n }\n}\n/**\n * Gets the list of IDs referenced by the given ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nfunction getAriaReferenceIds(el, attr) {\n // Get string array of all individual ids (whitespace delimited) in the attribute value\n return (el.getAttribute(attr) || '').match(/\\S+/g) || [];\n}\n\n/**\n * ID used for the body container where all messages are appended.\n * @deprecated No longer being used. To be removed.\n * @breaking-change 14.0.0\n */\nconst MESSAGES_CONTAINER_ID = 'cdk-describedby-message-container';\n/**\n * ID prefix used for each created message element.\n * @deprecated To be turned into a private variable.\n * @breaking-change 14.0.0\n */\nconst CDK_DESCRIBEDBY_ID_PREFIX = 'cdk-describedby-message';\n/**\n * Attribute given to each host element that is described by a message element.\n * @deprecated To be turned into a private variable.\n * @breaking-change 14.0.0\n */\nconst CDK_DESCRIBEDBY_HOST_ATTRIBUTE = 'cdk-describedby-host';\n/** Global incremental identifier for each registered message element. */\nlet nextId = 0;\n/**\n * Utility that creates visually hidden elements with a message content. Useful for elements that\n * want to use aria-describedby to further describe themselves without adding additional visual\n * content.\n */\nclass AriaDescriber {\n constructor(_document, \n /**\n * @deprecated To be turned into a required parameter.\n * @breaking-change 14.0.0\n */\n _platform) {\n this._platform = _platform;\n /** Map of all registered message elements that have been placed into the document. */\n this._messageRegistry = new Map();\n /** Container for all registered messages. */\n this._messagesContainer = null;\n /** Unique ID for the service. */\n this._id = `${nextId++}`;\n this._document = _document;\n this._id = inject(APP_ID) + '-' + nextId++;\n }\n describe(hostElement, message, role) {\n if (!this._canBeDescribed(hostElement, message)) {\n return;\n }\n const key = getKey(message, role);\n if (typeof message !== 'string') {\n // We need to ensure that the element has an ID.\n setMessageId(message, this._id);\n this._messageRegistry.set(key, { messageElement: message, referenceCount: 0 });\n }\n else if (!this._messageRegistry.has(key)) {\n this._createMessageElement(message, role);\n }\n if (!this._isElementDescribedByMessage(hostElement, key)) {\n this._addMessageReference(hostElement, key);\n }\n }\n removeDescription(hostElement, message, role) {\n if (!message || !this._isElementNode(hostElement)) {\n return;\n }\n const key = getKey(message, role);\n if (this._isElementDescribedByMessage(hostElement, key)) {\n this._removeMessageReference(hostElement, key);\n }\n // If the message is a string, it means that it's one that we created for the\n // consumer so we can remove it safely, otherwise we should leave it in place.\n if (typeof message === 'string') {\n const registeredMessage = this._messageRegistry.get(key);\n if (registeredMessage && registeredMessage.referenceCount === 0) {\n this._deleteMessageElement(key);\n }\n }\n if (this._messagesContainer?.childNodes.length === 0) {\n this._messagesContainer.remove();\n this._messagesContainer = null;\n }\n }\n /** Unregisters all created message elements and removes the message container. */\n ngOnDestroy() {\n const describedElements = this._document.querySelectorAll(`[${CDK_DESCRIBEDBY_HOST_ATTRIBUTE}=\"${this._id}\"]`);\n for (let i = 0; i < describedElements.length; i++) {\n this._removeCdkDescribedByReferenceIds(describedElements[i]);\n describedElements[i].removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);\n }\n this._messagesContainer?.remove();\n this._messagesContainer = null;\n this._messageRegistry.clear();\n }\n /**\n * Creates a new element in the visually hidden message container element with the message\n * as its content and adds it to the message registry.\n */\n _createMessageElement(message, role) {\n const messageElement = this._document.createElement('div');\n setMessageId(messageElement, this._id);\n messageElement.textContent = message;\n if (role) {\n messageElement.setAttribute('role', role);\n }\n this._createMessagesContainer();\n this._messagesContainer.appendChild(messageElement);\n this._messageRegistry.set(getKey(message, role), { messageElement, referenceCount: 0 });\n }\n /** Deletes the message element from the global messages container. */\n _deleteMessageElement(key) {\n this._messageRegistry.get(key)?.messageElement?.remove();\n this._messageRegistry.delete(key);\n }\n /** Creates the global container for all aria-describedby messages. */\n _createMessagesContainer() {\n if (this._messagesContainer) {\n return;\n }\n const containerClassName = 'cdk-describedby-message-container';\n const serverContainers = this._document.querySelectorAll(`.${containerClassName}[platform=\"server\"]`);\n for (let i = 0; i < serverContainers.length; i++) {\n // When going from the server to the client, we may end up in a situation where there's\n // already a container on the page, but we don't have a reference to it. Clear the\n // old container so we don't get duplicates. Doing this, instead of emptying the previous\n // container, should be slightly faster.\n serverContainers[i].remove();\n }\n const messagesContainer = this._document.createElement('div');\n // We add `visibility: hidden` in order to prevent text in this container from\n // being searchable by the browser's Ctrl + F functionality.\n // Screen-readers will still read the description for elements with aria-describedby even\n // when the description element is not visible.\n messagesContainer.style.visibility = 'hidden';\n // Even though we use `visibility: hidden`, we still apply `cdk-visually-hidden` so that\n // the description element doesn't impact page layout.\n messagesContainer.classList.add(containerClassName);\n messagesContainer.classList.add('cdk-visually-hidden');\n // @breaking-change 14.0.0 Remove null check for `_platform`.\n if (this._platform && !this._platform.isBrowser) {\n messagesContainer.setAttribute('platform', 'server');\n }\n this._document.body.appendChild(messagesContainer);\n this._messagesContainer = messagesContainer;\n }\n /** Removes all cdk-describedby messages that are hosted through the element. */\n _removeCdkDescribedByReferenceIds(element) {\n // Remove all aria-describedby reference IDs that are prefixed by CDK_DESCRIBEDBY_ID_PREFIX\n const originalReferenceIds = getAriaReferenceIds(element, 'aria-describedby').filter(id => id.indexOf(CDK_DESCRIBEDBY_ID_PREFIX) != 0);\n element.setAttribute('aria-describedby', originalReferenceIds.join(' '));\n }\n /**\n * Adds a message reference to the element using aria-describedby and increments the registered\n * message's reference count.\n */\n _addMessageReference(element, key) {\n const registeredMessage = this._messageRegistry.get(key);\n // Add the aria-describedby reference and set the\n // describedby_host attribute to mark the element.\n addAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);\n element.setAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE, this._id);\n registeredMessage.referenceCount++;\n }\n /**\n * Removes a message reference from the element using aria-describedby\n * and decrements the registered message's reference count.\n */\n _removeMessageReference(element, key) {\n const registeredMessage = this._messageRegistry.get(key);\n registeredMessage.referenceCount--;\n removeAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);\n element.removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);\n }\n /** Returns true if the element has been described by the provided message ID. */\n _isElementDescribedByMessage(element, key) {\n const referenceIds = getAriaReferenceIds(element, 'aria-describedby');\n const registeredMessage = this._messageRegistry.get(key);\n const messageId = registeredMessage && registeredMessage.messageElement.id;\n return !!messageId && referenceIds.indexOf(messageId) != -1;\n }\n /** Determines whether a message can be described on a particular element. */\n _canBeDescribed(element, message) {\n if (!this._isElementNode(element)) {\n return false;\n }\n if (message && typeof message === 'object') {\n // We'd have to make some assumptions about the description element's text, if the consumer\n // passed in an element. Assume that if an element is passed in, the consumer has verified\n // that it can be used as a description.\n return true;\n }\n const trimmedMessage = message == null ? '' : `${message}`.trim();\n const ariaLabel = element.getAttribute('aria-label');\n // We shouldn't set descriptions if they're exactly the same as the `aria-label` of the\n // element, because screen readers will end up reading out the same text twice in a row.\n return trimmedMessage ? !ariaLabel || ariaLabel.trim() !== trimmedMessage : false;\n }\n /** Checks whether a node is an Element node. */\n _isElementNode(element) {\n return element.nodeType === this._document.ELEMENT_NODE;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: AriaDescriber, deps: [{ token: DOCUMENT }, { token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: AriaDescriber, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: AriaDescriber, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1.Platform }]; } });\n/** Gets a key that can be used to look messages up in the registry. */\nfunction getKey(message, role) {\n return typeof message === 'string' ? `${role || ''}/${message}` : message;\n}\n/** Assigns a unique ID to an element, if it doesn't have one already. */\nfunction setMessageId(element, serviceId) {\n if (!element.id) {\n element.id = `${CDK_DESCRIBEDBY_ID_PREFIX}-${serviceId}-${nextId++}`;\n }\n}\n\n/**\n * This class manages keyboard events for selectable lists. If you pass it a query list\n * of items, it will set the active item correctly when arrow events occur.\n */\nclass ListKeyManager {\n constructor(_items) {\n this._items = _items;\n this._activeItemIndex = -1;\n this._activeItem = null;\n this._wrap = false;\n this._letterKeyStream = new Subject();\n this._typeaheadSubscription = Subscription.EMPTY;\n this._vertical = true;\n this._allowedModifierKeys = [];\n this._homeAndEnd = false;\n this._pageUpAndDown = { enabled: false, delta: 10 };\n /**\n * Predicate function that can be used to check whether an item should be skipped\n * by the key manager. By default, disabled items are skipped.\n */\n this._skipPredicateFn = (item) => item.disabled;\n // Buffer for the letters that the user has pressed when the typeahead option is turned on.\n this._pressedLetters = [];\n /**\n * Stream that emits any time the TAB key is pressed, so components can react\n * when focus is shifted off of the list.\n */\n this.tabOut = new Subject();\n /** Stream that emits whenever the active item of the list manager changes. */\n this.change = new Subject();\n // We allow for the items to be an array because, in some cases, the consumer may\n // not have access to a QueryList of the items they want to manage (e.g. when the\n // items aren't being collected via `ViewChildren` or `ContentChildren`).\n if (_items instanceof QueryList) {\n this._itemChangesSubscription = _items.changes.subscribe((newItems) => {\n if (this._activeItem) {\n const itemArray = newItems.toArray();\n const newIndex = itemArray.indexOf(this._activeItem);\n if (newIndex > -1 && newIndex !== this._activeItemIndex) {\n this._activeItemIndex = newIndex;\n }\n }\n });\n }\n }\n /**\n * Sets the predicate function that determines which items should be skipped by the\n * list key manager.\n * @param predicate Function that determines whether the given item should be skipped.\n */\n skipPredicate(predicate) {\n this._skipPredicateFn = predicate;\n return this;\n }\n /**\n * Configures wrapping mode, which determines whether the active item will wrap to\n * the other end of list when there are no more items in the given direction.\n * @param shouldWrap Whether the list should wrap when reaching the end.\n */\n withWrap(shouldWrap = true) {\n this._wrap = shouldWrap;\n return this;\n }\n /**\n * Configures whether the key manager should be able to move the selection vertically.\n * @param enabled Whether vertical selection should be enabled.\n */\n withVerticalOrientation(enabled = true) {\n this._vertical = enabled;\n return this;\n }\n /**\n * Configures the key manager to move the selection horizontally.\n * Passing in `null` will disable horizontal movement.\n * @param direction Direction in which the selection can be moved.\n */\n withHorizontalOrientation(direction) {\n this._horizontal = direction;\n return this;\n }\n /**\n * Modifier keys which are allowed to be held down and whose default actions will be prevented\n * as the user is pressing the arrow keys. Defaults to not allowing any modifier keys.\n */\n withAllowedModifierKeys(keys) {\n this._allowedModifierKeys = keys;\n return this;\n }\n /**\n * Turns on typeahead mode which allows users to set the active item by typing.\n * @param debounceInterval Time to wait after the last keystroke before setting the active item.\n */\n withTypeAhead(debounceInterval = 200) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n this._items.length &&\n this._items.some(item => typeof item.getLabel !== 'function')) {\n throw Error('ListKeyManager items in typeahead mode must implement the `getLabel` method.');\n }\n this._typeaheadSubscription.unsubscribe();\n // Debounce the presses of non-navigational keys, collect the ones that correspond to letters\n // and convert those letters back into a string. Afterwards find the first item that starts\n // with that string and select it.\n this._typeaheadSubscription = this._letterKeyStream\n .pipe(tap(letter => this._pressedLetters.push(letter)), debounceTime(debounceInterval), filter(() => this._pressedLetters.length > 0), map(() => this._pressedLetters.join('')))\n .subscribe(inputString => {\n const items = this._getItemsArray();\n // Start at 1 because we want to start searching at the item immediately\n // following the current active item.\n for (let i = 1; i < items.length + 1; i++) {\n const index = (this._activeItemIndex + i) % items.length;\n const item = items[index];\n if (!this._skipPredicateFn(item) &&\n item.getLabel().toUpperCase().trim().indexOf(inputString) === 0) {\n this.setActiveItem(index);\n break;\n }\n }\n this._pressedLetters = [];\n });\n return this;\n }\n /** Cancels the current typeahead sequence. */\n cancelTypeahead() {\n this._pressedLetters = [];\n return this;\n }\n /**\n * Configures the key manager to activate the first and last items\n * respectively when the Home or End key is pressed.\n * @param enabled Whether pressing the Home or End key activates the first/last item.\n */\n withHomeAndEnd(enabled = true) {\n this._homeAndEnd = enabled;\n return this;\n }\n /**\n * Configures the key manager to activate every 10th, configured or first/last element in up/down direction\n * respectively when the Page-Up or Page-Down key is pressed.\n * @param enabled Whether pressing the Page-Up or Page-Down key activates the first/last item.\n * @param delta Whether pressing the Home or End key activates the first/last item.\n */\n withPageUpDown(enabled = true, delta = 10) {\n this._pageUpAndDown = { enabled, delta };\n return this;\n }\n setActiveItem(item) {\n const previousActiveItem = this._activeItem;\n this.updateActiveItem(item);\n if (this._activeItem !== previousActiveItem) {\n this.change.next(this._activeItemIndex);\n }\n }\n /**\n * Sets the active item depending on the key event passed in.\n * @param event Keyboard event to be used for determining which element should be active.\n */\n onKeydown(event) {\n const keyCode = event.keyCode;\n const modifiers = ['altKey', 'ctrlKey', 'metaKey', 'shiftKey'];\n const isModifierAllowed = modifiers.every(modifier => {\n return !event[modifier] || this._allowedModifierKeys.indexOf(modifier) > -1;\n });\n switch (keyCode) {\n case TAB:\n this.tabOut.next();\n return;\n case DOWN_ARROW:\n if (this._vertical && isModifierAllowed) {\n this.setNextItemActive();\n break;\n }\n else {\n return;\n }\n case UP_ARROW:\n if (this._vertical && isModifierAllowed) {\n this.setPreviousItemActive();\n break;\n }\n else {\n return;\n }\n case RIGHT_ARROW:\n if (this._horizontal && isModifierAllowed) {\n this._horizontal === 'rtl' ? this.setPreviousItemActive() : this.setNextItemActive();\n break;\n }\n else {\n return;\n }\n case LEFT_ARROW:\n if (this._horizontal && isModifierAllowed) {\n this._horizontal === 'rtl' ? this.setNextItemActive() : this.setPreviousItemActive();\n break;\n }\n else {\n return;\n }\n case HOME:\n if (this._homeAndEnd && isModifierAllowed) {\n this.setFirstItemActive();\n break;\n }\n else {\n return;\n }\n case END:\n if (this._homeAndEnd && isModifierAllowed) {\n this.setLastItemActive();\n break;\n }\n else {\n return;\n }\n case PAGE_UP:\n if (this._pageUpAndDown.enabled && isModifierAllowed) {\n const targetIndex = this._activeItemIndex - this._pageUpAndDown.delta;\n this._setActiveItemByIndex(targetIndex > 0 ? targetIndex : 0, 1);\n break;\n }\n else {\n return;\n }\n case PAGE_DOWN:\n if (this._pageUpAndDown.enabled && isModifierAllowed) {\n const targetIndex = this._activeItemIndex + this._pageUpAndDown.delta;\n const itemsLength = this._getItemsArray().length;\n this._setActiveItemByIndex(targetIndex < itemsLength ? targetIndex : itemsLength - 1, -1);\n break;\n }\n else {\n return;\n }\n default:\n if (isModifierAllowed || hasModifierKey(event, 'shiftKey')) {\n // Attempt to use the `event.key` which also maps it to the user's keyboard language,\n // otherwise fall back to resolving alphanumeric characters via the keyCode.\n if (event.key && event.key.length === 1) {\n this._letterKeyStream.next(event.key.toLocaleUpperCase());\n }\n else if ((keyCode >= A && keyCode <= Z) || (keyCode >= ZERO && keyCode <= NINE)) {\n this._letterKeyStream.next(String.fromCharCode(keyCode));\n }\n }\n // Note that we return here, in order to avoid preventing\n // the default action of non-navigational keys.\n return;\n }\n this._pressedLetters = [];\n event.preventDefault();\n }\n /** Index of the currently active item. */\n get activeItemIndex() {\n return this._activeItemIndex;\n }\n /** The active item. */\n get activeItem() {\n return this._activeItem;\n }\n /** Gets whether the user is currently typing into the manager using the typeahead feature. */\n isTyping() {\n return this._pressedLetters.length > 0;\n }\n /** Sets the active item to the first enabled item in the list. */\n setFirstItemActive() {\n this._setActiveItemByIndex(0, 1);\n }\n /** Sets the active item to the last enabled item in the list. */\n setLastItemActive() {\n this._setActiveItemByIndex(this._items.length - 1, -1);\n }\n /** Sets the active item to the next enabled item in the list. */\n setNextItemActive() {\n this._activeItemIndex < 0 ? this.setFirstItemActive() : this._setActiveItemByDelta(1);\n }\n /** Sets the active item to a previous enabled item in the list. */\n setPreviousItemActive() {\n this._activeItemIndex < 0 && this._wrap\n ? this.setLastItemActive()\n : this._setActiveItemByDelta(-1);\n }\n updateActiveItem(item) {\n const itemArray = this._getItemsArray();\n const index = typeof item === 'number' ? item : itemArray.indexOf(item);\n const activeItem = itemArray[index];\n // Explicitly check for `null` and `undefined` because other falsy values are valid.\n this._activeItem = activeItem == null ? null : activeItem;\n this._activeItemIndex = index;\n }\n /** Cleans up the key manager. */\n destroy() {\n this._typeaheadSubscription.unsubscribe();\n this._itemChangesSubscription?.unsubscribe();\n this._letterKeyStream.complete();\n this.tabOut.complete();\n this.change.complete();\n this._pressedLetters = [];\n }\n /**\n * This method sets the active item, given a list of items and the delta between the\n * currently active item and the new active item. It will calculate differently\n * depending on whether wrap mode is turned on.\n */\n _setActiveItemByDelta(delta) {\n this._wrap ? this._setActiveInWrapMode(delta) : this._setActiveInDefaultMode(delta);\n }\n /**\n * Sets the active item properly given \"wrap\" mode. In other words, it will continue to move\n * down the list until it finds an item that is not disabled, and it will wrap if it\n * encounters either end of the list.\n */\n _setActiveInWrapMode(delta) {\n const items = this._getItemsArray();\n for (let i = 1; i <= items.length; i++) {\n const index = (this._activeItemIndex + delta * i + items.length) % items.length;\n const item = items[index];\n if (!this._skipPredicateFn(item)) {\n this.setActiveItem(index);\n return;\n }\n }\n }\n /**\n * Sets the active item properly given the default mode. In other words, it will\n * continue to move down the list until it finds an item that is not disabled. If\n * it encounters either end of the list, it will stop and not wrap.\n */\n _setActiveInDefaultMode(delta) {\n this._setActiveItemByIndex(this._activeItemIndex + delta, delta);\n }\n /**\n * Sets the active item to the first enabled item starting at the index specified. If the\n * item is disabled, it will move in the fallbackDelta direction until it either\n * finds an enabled item or encounters the end of the list.\n */\n _setActiveItemByIndex(index, fallbackDelta) {\n const items = this._getItemsArray();\n if (!items[index]) {\n return;\n }\n while (this._skipPredicateFn(items[index])) {\n index += fallbackDelta;\n if (!items[index]) {\n return;\n }\n }\n this.setActiveItem(index);\n }\n /** Returns the items as an array. */\n _getItemsArray() {\n return this._items instanceof QueryList ? this._items.toArray() : this._items;\n }\n}\n\nclass ActiveDescendantKeyManager extends ListKeyManager {\n setActiveItem(index) {\n if (this.activeItem) {\n this.activeItem.setInactiveStyles();\n }\n super.setActiveItem(index);\n if (this.activeItem) {\n this.activeItem.setActiveStyles();\n }\n }\n}\n\nclass FocusKeyManager extends ListKeyManager {\n constructor() {\n super(...arguments);\n this._origin = 'program';\n }\n /**\n * Sets the focus origin that will be passed in to the items for any subsequent `focus` calls.\n * @param origin Focus origin to be used when focusing items.\n */\n setFocusOrigin(origin) {\n this._origin = origin;\n return this;\n }\n setActiveItem(item) {\n super.setActiveItem(item);\n if (this.activeItem) {\n this.activeItem.focus(this._origin);\n }\n }\n}\n\n/**\n * Configuration for the isFocusable method.\n */\nclass IsFocusableConfig {\n constructor() {\n /**\n * Whether to count an element as focusable even if it is not currently visible.\n */\n this.ignoreVisibility = false;\n }\n}\n// The InteractivityChecker leans heavily on the ally.js accessibility utilities.\n// Methods like `isTabbable` are only covering specific edge-cases for the browsers which are\n// supported.\n/**\n * Utility for checking the interactivity of an element, such as whether it is focusable or\n * tabbable.\n */\nclass InteractivityChecker {\n constructor(_platform) {\n this._platform = _platform;\n }\n /**\n * Gets whether an element is disabled.\n *\n * @param element Element to be checked.\n * @returns Whether the element is disabled.\n */\n isDisabled(element) {\n // This does not capture some cases, such as a non-form control with a disabled attribute or\n // a form control inside of a disabled form, but should capture the most common cases.\n return element.hasAttribute('disabled');\n }\n /**\n * Gets whether an element is visible for the purposes of interactivity.\n *\n * This will capture states like `display: none` and `visibility: hidden`, but not things like\n * being clipped by an `overflow: hidden` parent or being outside the viewport.\n *\n * @returns Whether the element is visible.\n */\n isVisible(element) {\n return hasGeometry(element) && getComputedStyle(element).visibility === 'visible';\n }\n /**\n * Gets whether an element can be reached via Tab key.\n * Assumes that the element has already been checked with isFocusable.\n *\n * @param element Element to be checked.\n * @returns Whether the element is tabbable.\n */\n isTabbable(element) {\n // Nothing is tabbable on the server 😎\n if (!this._platform.isBrowser) {\n return false;\n }\n const frameElement = getFrameElement(getWindow(element));\n if (frameElement) {\n // Frame elements inherit their tabindex onto all child elements.\n if (getTabIndexValue(frameElement) === -1) {\n return false;\n }\n // Browsers disable tabbing to an element inside of an invisible frame.\n if (!this.isVisible(frameElement)) {\n return false;\n }\n }\n let nodeName = element.nodeName.toLowerCase();\n let tabIndexValue = getTabIndexValue(element);\n if (element.hasAttribute('contenteditable')) {\n return tabIndexValue !== -1;\n }\n if (nodeName === 'iframe' || nodeName === 'object') {\n // The frame or object's content may be tabbable depending on the content, but it's\n // not possibly to reliably detect the content of the frames. We always consider such\n // elements as non-tabbable.\n return false;\n }\n // In iOS, the browser only considers some specific elements as tabbable.\n if (this._platform.WEBKIT && this._platform.IOS && !isPotentiallyTabbableIOS(element)) {\n return false;\n }\n if (nodeName === 'audio') {\n // Audio elements without controls enabled are never tabbable, regardless\n // of the tabindex attribute explicitly being set.\n if (!element.hasAttribute('controls')) {\n return false;\n }\n // Audio elements with controls are by default tabbable unless the\n // tabindex attribute is set to `-1` explicitly.\n return tabIndexValue !== -1;\n }\n if (nodeName === 'video') {\n // For all video elements, if the tabindex attribute is set to `-1`, the video\n // is not tabbable. Note: We cannot rely on the default `HTMLElement.tabIndex`\n // property as that one is set to `-1` in Chrome, Edge and Safari v13.1. The\n // tabindex attribute is the source of truth here.\n if (tabIndexValue === -1) {\n return false;\n }\n // If the tabindex is explicitly set, and not `-1` (as per check before), the\n // video element is always tabbable (regardless of whether it has controls or not).\n if (tabIndexValue !== null) {\n return true;\n }\n // Otherwise (when no explicit tabindex is set), a video is only tabbable if it\n // has controls enabled. Firefox is special as videos are always tabbable regardless\n // of whether there are controls or not.\n return this._platform.FIREFOX || element.hasAttribute('controls');\n }\n return element.tabIndex >= 0;\n }\n /**\n * Gets whether an element can be focused by the user.\n *\n * @param element Element to be checked.\n * @param config The config object with options to customize this method's behavior\n * @returns Whether the element is focusable.\n */\n isFocusable(element, config) {\n // Perform checks in order of left to most expensive.\n // Again, naive approach that does not capture many edge cases and browser quirks.\n return (isPotentiallyFocusable(element) &&\n !this.isDisabled(element) &&\n (config?.ignoreVisibility || this.isVisible(element)));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: InteractivityChecker, deps: [{ token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: InteractivityChecker, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: InteractivityChecker, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.Platform }]; } });\n/**\n * Returns the frame element from a window object. Since browsers like MS Edge throw errors if\n * the frameElement property is being accessed from a different host address, this property\n * should be accessed carefully.\n */\nfunction getFrameElement(window) {\n try {\n return window.frameElement;\n }\n catch {\n return null;\n }\n}\n/** Checks whether the specified element has any geometry / rectangles. */\nfunction hasGeometry(element) {\n // Use logic from jQuery to check for an invisible element.\n // See https://github.com/jquery/jquery/blob/master/src/css/hiddenVisibleSelectors.js#L12\n return !!(element.offsetWidth ||\n element.offsetHeight ||\n (typeof element.getClientRects === 'function' && element.getClientRects().length));\n}\n/** Gets whether an element's */\nfunction isNativeFormElement(element) {\n let nodeName = element.nodeName.toLowerCase();\n return (nodeName === 'input' ||\n nodeName === 'select' ||\n nodeName === 'button' ||\n nodeName === 'textarea');\n}\n/** Gets whether an element is an ``. */\nfunction isHiddenInput(element) {\n return isInputElement(element) && element.type == 'hidden';\n}\n/** Gets whether an element is an anchor that has an href attribute. */\nfunction isAnchorWithHref(element) {\n return isAnchorElement(element) && element.hasAttribute('href');\n}\n/** Gets whether an element is an input element. */\nfunction isInputElement(element) {\n return element.nodeName.toLowerCase() == 'input';\n}\n/** Gets whether an element is an anchor element. */\nfunction isAnchorElement(element) {\n return element.nodeName.toLowerCase() == 'a';\n}\n/** Gets whether an element has a valid tabindex. */\nfunction hasValidTabIndex(element) {\n if (!element.hasAttribute('tabindex') || element.tabIndex === undefined) {\n return false;\n }\n let tabIndex = element.getAttribute('tabindex');\n return !!(tabIndex && !isNaN(parseInt(tabIndex, 10)));\n}\n/**\n * Returns the parsed tabindex from the element attributes instead of returning the\n * evaluated tabindex from the browsers defaults.\n */\nfunction getTabIndexValue(element) {\n if (!hasValidTabIndex(element)) {\n return null;\n }\n // See browser issue in Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054\n const tabIndex = parseInt(element.getAttribute('tabindex') || '', 10);\n return isNaN(tabIndex) ? -1 : tabIndex;\n}\n/** Checks whether the specified element is potentially tabbable on iOS */\nfunction isPotentiallyTabbableIOS(element) {\n let nodeName = element.nodeName.toLowerCase();\n let inputType = nodeName === 'input' && element.type;\n return (inputType === 'text' ||\n inputType === 'password' ||\n nodeName === 'select' ||\n nodeName === 'textarea');\n}\n/**\n * Gets whether an element is potentially focusable without taking current visible/disabled state\n * into account.\n */\nfunction isPotentiallyFocusable(element) {\n // Inputs are potentially focusable *unless* they're type=\"hidden\".\n if (isHiddenInput(element)) {\n return false;\n }\n return (isNativeFormElement(element) ||\n isAnchorWithHref(element) ||\n element.hasAttribute('contenteditable') ||\n hasValidTabIndex(element));\n}\n/** Gets the parent window of a DOM node with regards of being inside of an iframe. */\nfunction getWindow(node) {\n // ownerDocument is null if `node` itself *is* a document.\n return (node.ownerDocument && node.ownerDocument.defaultView) || window;\n}\n\n/**\n * Class that allows for trapping focus within a DOM element.\n *\n * This class currently uses a relatively simple approach to focus trapping.\n * It assumes that the tab order is the same as DOM order, which is not necessarily true.\n * Things like `tabIndex > 0`, flex `order`, and shadow roots can cause the two to be misaligned.\n *\n * @deprecated Use `ConfigurableFocusTrap` instead.\n * @breaking-change 11.0.0\n */\nclass FocusTrap {\n /** Whether the focus trap is active. */\n get enabled() {\n return this._enabled;\n }\n set enabled(value) {\n this._enabled = value;\n if (this._startAnchor && this._endAnchor) {\n this._toggleAnchorTabIndex(value, this._startAnchor);\n this._toggleAnchorTabIndex(value, this._endAnchor);\n }\n }\n constructor(_element, _checker, _ngZone, _document, deferAnchors = false) {\n this._element = _element;\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._document = _document;\n this._hasAttached = false;\n // Event listeners for the anchors. Need to be regular functions so that we can unbind them later.\n this.startAnchorListener = () => this.focusLastTabbableElement();\n this.endAnchorListener = () => this.focusFirstTabbableElement();\n this._enabled = true;\n if (!deferAnchors) {\n this.attachAnchors();\n }\n }\n /** Destroys the focus trap by cleaning up the anchors. */\n destroy() {\n const startAnchor = this._startAnchor;\n const endAnchor = this._endAnchor;\n if (startAnchor) {\n startAnchor.removeEventListener('focus', this.startAnchorListener);\n startAnchor.remove();\n }\n if (endAnchor) {\n endAnchor.removeEventListener('focus', this.endAnchorListener);\n endAnchor.remove();\n }\n this._startAnchor = this._endAnchor = null;\n this._hasAttached = false;\n }\n /**\n * Inserts the anchors into the DOM. This is usually done automatically\n * in the constructor, but can be deferred for cases like directives with `*ngIf`.\n * @returns Whether the focus trap managed to attach successfully. This may not be the case\n * if the target element isn't currently in the DOM.\n */\n attachAnchors() {\n // If we're not on the browser, there can be no focus to trap.\n if (this._hasAttached) {\n return true;\n }\n this._ngZone.runOutsideAngular(() => {\n if (!this._startAnchor) {\n this._startAnchor = this._createAnchor();\n this._startAnchor.addEventListener('focus', this.startAnchorListener);\n }\n if (!this._endAnchor) {\n this._endAnchor = this._createAnchor();\n this._endAnchor.addEventListener('focus', this.endAnchorListener);\n }\n });\n if (this._element.parentNode) {\n this._element.parentNode.insertBefore(this._startAnchor, this._element);\n this._element.parentNode.insertBefore(this._endAnchor, this._element.nextSibling);\n this._hasAttached = true;\n }\n return this._hasAttached;\n }\n /**\n * Waits for the zone to stabilize, then focuses the first tabbable element.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusInitialElementWhenReady(options) {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusInitialElement(options)));\n });\n }\n /**\n * Waits for the zone to stabilize, then focuses\n * the first tabbable element within the focus trap region.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusFirstTabbableElementWhenReady(options) {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusFirstTabbableElement(options)));\n });\n }\n /**\n * Waits for the zone to stabilize, then focuses\n * the last tabbable element within the focus trap region.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusLastTabbableElementWhenReady(options) {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusLastTabbableElement(options)));\n });\n }\n /**\n * Get the specified boundary element of the trapped region.\n * @param bound The boundary to get (start or end of trapped region).\n * @returns The boundary element.\n */\n _getRegionBoundary(bound) {\n // Contains the deprecated version of selector, for temporary backwards comparability.\n const markers = this._element.querySelectorAll(`[cdk-focus-region-${bound}], ` + `[cdkFocusRegion${bound}], ` + `[cdk-focus-${bound}]`);\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n for (let i = 0; i < markers.length; i++) {\n // @breaking-change 8.0.0\n if (markers[i].hasAttribute(`cdk-focus-${bound}`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-${bound}', ` +\n `use 'cdkFocusRegion${bound}' instead. The deprecated ` +\n `attribute will be removed in 8.0.0.`, markers[i]);\n }\n else if (markers[i].hasAttribute(`cdk-focus-region-${bound}`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-region-${bound}', ` +\n `use 'cdkFocusRegion${bound}' instead. The deprecated attribute ` +\n `will be removed in 8.0.0.`, markers[i]);\n }\n }\n }\n if (bound == 'start') {\n return markers.length ? markers[0] : this._getFirstTabbableElement(this._element);\n }\n return markers.length\n ? markers[markers.length - 1]\n : this._getLastTabbableElement(this._element);\n }\n /**\n * Focuses the element that should be focused when the focus trap is initialized.\n * @returns Whether focus was moved successfully.\n */\n focusInitialElement(options) {\n // Contains the deprecated version of selector, for temporary backwards comparability.\n const redirectToElement = this._element.querySelector(`[cdk-focus-initial], ` + `[cdkFocusInitial]`);\n if (redirectToElement) {\n // @breaking-change 8.0.0\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n redirectToElement.hasAttribute(`cdk-focus-initial`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-initial', ` +\n `use 'cdkFocusInitial' instead. The deprecated attribute ` +\n `will be removed in 8.0.0`, redirectToElement);\n }\n // Warn the consumer if the element they've pointed to\n // isn't focusable, when not in production mode.\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n !this._checker.isFocusable(redirectToElement)) {\n console.warn(`Element matching '[cdkFocusInitial]' is not focusable.`, redirectToElement);\n }\n if (!this._checker.isFocusable(redirectToElement)) {\n const focusableChild = this._getFirstTabbableElement(redirectToElement);\n focusableChild?.focus(options);\n return !!focusableChild;\n }\n redirectToElement.focus(options);\n return true;\n }\n return this.focusFirstTabbableElement(options);\n }\n /**\n * Focuses the first tabbable element within the focus trap region.\n * @returns Whether focus was moved successfully.\n */\n focusFirstTabbableElement(options) {\n const redirectToElement = this._getRegionBoundary('start');\n if (redirectToElement) {\n redirectToElement.focus(options);\n }\n return !!redirectToElement;\n }\n /**\n * Focuses the last tabbable element within the focus trap region.\n * @returns Whether focus was moved successfully.\n */\n focusLastTabbableElement(options) {\n const redirectToElement = this._getRegionBoundary('end');\n if (redirectToElement) {\n redirectToElement.focus(options);\n }\n return !!redirectToElement;\n }\n /**\n * Checks whether the focus trap has successfully been attached.\n */\n hasAttached() {\n return this._hasAttached;\n }\n /** Get the first tabbable element from a DOM subtree (inclusive). */\n _getFirstTabbableElement(root) {\n if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n return root;\n }\n const children = root.children;\n for (let i = 0; i < children.length; i++) {\n const tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE\n ? this._getFirstTabbableElement(children[i])\n : null;\n if (tabbableChild) {\n return tabbableChild;\n }\n }\n return null;\n }\n /** Get the last tabbable element from a DOM subtree (inclusive). */\n _getLastTabbableElement(root) {\n if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n return root;\n }\n // Iterate in reverse DOM order.\n const children = root.children;\n for (let i = children.length - 1; i >= 0; i--) {\n const tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE\n ? this._getLastTabbableElement(children[i])\n : null;\n if (tabbableChild) {\n return tabbableChild;\n }\n }\n return null;\n }\n /** Creates an anchor element. */\n _createAnchor() {\n const anchor = this._document.createElement('div');\n this._toggleAnchorTabIndex(this._enabled, anchor);\n anchor.classList.add('cdk-visually-hidden');\n anchor.classList.add('cdk-focus-trap-anchor');\n anchor.setAttribute('aria-hidden', 'true');\n return anchor;\n }\n /**\n * Toggles the `tabindex` of an anchor, based on the enabled state of the focus trap.\n * @param isEnabled Whether the focus trap is enabled.\n * @param anchor Anchor on which to toggle the tabindex.\n */\n _toggleAnchorTabIndex(isEnabled, anchor) {\n // Remove the tabindex completely, rather than setting it to -1, because if the\n // element has a tabindex, the user might still hit it when navigating with the arrow keys.\n isEnabled ? anchor.setAttribute('tabindex', '0') : anchor.removeAttribute('tabindex');\n }\n /**\n * Toggles the`tabindex` of both anchors to either trap Tab focus or allow it to escape.\n * @param enabled: Whether the anchors should trap Tab.\n */\n toggleAnchors(enabled) {\n if (this._startAnchor && this._endAnchor) {\n this._toggleAnchorTabIndex(enabled, this._startAnchor);\n this._toggleAnchorTabIndex(enabled, this._endAnchor);\n }\n }\n /** Executes a function when the zone is stable. */\n _executeOnStable(fn) {\n if (this._ngZone.isStable) {\n fn();\n }\n else {\n this._ngZone.onStable.pipe(take(1)).subscribe(fn);\n }\n }\n}\n/**\n * Factory that allows easy instantiation of focus traps.\n * @deprecated Use `ConfigurableFocusTrapFactory` instead.\n * @breaking-change 11.0.0\n */\nclass FocusTrapFactory {\n constructor(_checker, _ngZone, _document) {\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._document = _document;\n }\n /**\n * Creates a focus-trapped region around the given element.\n * @param element The element around which focus will be trapped.\n * @param deferCaptureElements Defers the creation of focus-capturing elements to be done\n * manually by the user.\n * @returns The created focus trap instance.\n */\n create(element, deferCaptureElements = false) {\n return new FocusTrap(element, this._checker, this._ngZone, this._document, deferCaptureElements);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: FocusTrapFactory, deps: [{ token: InteractivityChecker }, { token: i0.NgZone }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: FocusTrapFactory, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: FocusTrapFactory, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: InteractivityChecker }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n/** Directive for trapping focus within a region. */\nclass CdkTrapFocus {\n /** Whether the focus trap is active. */\n get enabled() {\n return this.focusTrap.enabled;\n }\n set enabled(value) {\n this.focusTrap.enabled = coerceBooleanProperty(value);\n }\n /**\n * Whether the directive should automatically move focus into the trapped region upon\n * initialization and return focus to the previous activeElement upon destruction.\n */\n get autoCapture() {\n return this._autoCapture;\n }\n set autoCapture(value) {\n this._autoCapture = coerceBooleanProperty(value);\n }\n constructor(_elementRef, _focusTrapFactory, \n /**\n * @deprecated No longer being used. To be removed.\n * @breaking-change 13.0.0\n */\n _document) {\n this._elementRef = _elementRef;\n this._focusTrapFactory = _focusTrapFactory;\n /** Previously focused element to restore focus to upon destroy when using autoCapture. */\n this._previouslyFocusedElement = null;\n this.focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement, true);\n }\n ngOnDestroy() {\n this.focusTrap.destroy();\n // If we stored a previously focused element when using autoCapture, return focus to that\n // element now that the trapped region is being destroyed.\n if (this._previouslyFocusedElement) {\n this._previouslyFocusedElement.focus();\n this._previouslyFocusedElement = null;\n }\n }\n ngAfterContentInit() {\n this.focusTrap.attachAnchors();\n if (this.autoCapture) {\n this._captureFocus();\n }\n }\n ngDoCheck() {\n if (!this.focusTrap.hasAttached()) {\n this.focusTrap.attachAnchors();\n }\n }\n ngOnChanges(changes) {\n const autoCaptureChange = changes['autoCapture'];\n if (autoCaptureChange &&\n !autoCaptureChange.firstChange &&\n this.autoCapture &&\n this.focusTrap.hasAttached()) {\n this._captureFocus();\n }\n }\n _captureFocus() {\n this._previouslyFocusedElement = _getFocusedElementPierceShadowDom();\n this.focusTrap.focusInitialElementWhenReady();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkTrapFocus, deps: [{ token: i0.ElementRef }, { token: FocusTrapFactory }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkTrapFocus, selector: \"[cdkTrapFocus]\", inputs: { enabled: [\"cdkTrapFocus\", \"enabled\"], autoCapture: [\"cdkTrapFocusAutoCapture\", \"autoCapture\"] }, exportAs: [\"cdkTrapFocus\"], usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkTrapFocus, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkTrapFocus]',\n exportAs: 'cdkTrapFocus',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: FocusTrapFactory }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, propDecorators: { enabled: [{\n type: Input,\n args: ['cdkTrapFocus']\n }], autoCapture: [{\n type: Input,\n args: ['cdkTrapFocusAutoCapture']\n }] } });\n\n/**\n * Class that allows for trapping focus within a DOM element.\n *\n * This class uses a strategy pattern that determines how it traps focus.\n * See FocusTrapInertStrategy.\n */\nclass ConfigurableFocusTrap extends FocusTrap {\n /** Whether the FocusTrap is enabled. */\n get enabled() {\n return this._enabled;\n }\n set enabled(value) {\n this._enabled = value;\n if (this._enabled) {\n this._focusTrapManager.register(this);\n }\n else {\n this._focusTrapManager.deregister(this);\n }\n }\n constructor(_element, _checker, _ngZone, _document, _focusTrapManager, _inertStrategy, config) {\n super(_element, _checker, _ngZone, _document, config.defer);\n this._focusTrapManager = _focusTrapManager;\n this._inertStrategy = _inertStrategy;\n this._focusTrapManager.register(this);\n }\n /** Notifies the FocusTrapManager that this FocusTrap will be destroyed. */\n destroy() {\n this._focusTrapManager.deregister(this);\n super.destroy();\n }\n /** @docs-private Implemented as part of ManagedFocusTrap. */\n _enable() {\n this._inertStrategy.preventFocus(this);\n this.toggleAnchors(true);\n }\n /** @docs-private Implemented as part of ManagedFocusTrap. */\n _disable() {\n this._inertStrategy.allowFocus(this);\n this.toggleAnchors(false);\n }\n}\n\n/** The injection token used to specify the inert strategy. */\nconst FOCUS_TRAP_INERT_STRATEGY = new InjectionToken('FOCUS_TRAP_INERT_STRATEGY');\n\n/**\n * Lightweight FocusTrapInertStrategy that adds a document focus event\n * listener to redirect focus back inside the FocusTrap.\n */\nclass EventListenerFocusTrapInertStrategy {\n constructor() {\n /** Focus event handler. */\n this._listener = null;\n }\n /** Adds a document event listener that keeps focus inside the FocusTrap. */\n preventFocus(focusTrap) {\n // Ensure there's only one listener per document\n if (this._listener) {\n focusTrap._document.removeEventListener('focus', this._listener, true);\n }\n this._listener = (e) => this._trapFocus(focusTrap, e);\n focusTrap._ngZone.runOutsideAngular(() => {\n focusTrap._document.addEventListener('focus', this._listener, true);\n });\n }\n /** Removes the event listener added in preventFocus. */\n allowFocus(focusTrap) {\n if (!this._listener) {\n return;\n }\n focusTrap._document.removeEventListener('focus', this._listener, true);\n this._listener = null;\n }\n /**\n * Refocuses the first element in the FocusTrap if the focus event target was outside\n * the FocusTrap.\n *\n * This is an event listener callback. The event listener is added in runOutsideAngular,\n * so all this code runs outside Angular as well.\n */\n _trapFocus(focusTrap, event) {\n const target = event.target;\n const focusTrapRoot = focusTrap._element;\n // Don't refocus if target was in an overlay, because the overlay might be associated\n // with an element inside the FocusTrap, ex. mat-select.\n if (target && !focusTrapRoot.contains(target) && !target.closest?.('div.cdk-overlay-pane')) {\n // Some legacy FocusTrap usages have logic that focuses some element on the page\n // just before FocusTrap is destroyed. For backwards compatibility, wait\n // to be sure FocusTrap is still enabled before refocusing.\n setTimeout(() => {\n // Check whether focus wasn't put back into the focus trap while the timeout was pending.\n if (focusTrap.enabled && !focusTrapRoot.contains(focusTrap._document.activeElement)) {\n focusTrap.focusFirstTabbableElement();\n }\n });\n }\n }\n}\n\n/** Injectable that ensures only the most recently enabled FocusTrap is active. */\nclass FocusTrapManager {\n constructor() {\n // A stack of the FocusTraps on the page. Only the FocusTrap at the\n // top of the stack is active.\n this._focusTrapStack = [];\n }\n /**\n * Disables the FocusTrap at the top of the stack, and then pushes\n * the new FocusTrap onto the stack.\n */\n register(focusTrap) {\n // Dedupe focusTraps that register multiple times.\n this._focusTrapStack = this._focusTrapStack.filter(ft => ft !== focusTrap);\n let stack = this._focusTrapStack;\n if (stack.length) {\n stack[stack.length - 1]._disable();\n }\n stack.push(focusTrap);\n focusTrap._enable();\n }\n /**\n * Removes the FocusTrap from the stack, and activates the\n * FocusTrap that is the new top of the stack.\n */\n deregister(focusTrap) {\n focusTrap._disable();\n const stack = this._focusTrapStack;\n const i = stack.indexOf(focusTrap);\n if (i !== -1) {\n stack.splice(i, 1);\n if (stack.length) {\n stack[stack.length - 1]._enable();\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: FocusTrapManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: FocusTrapManager, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: FocusTrapManager, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/** Factory that allows easy instantiation of configurable focus traps. */\nclass ConfigurableFocusTrapFactory {\n constructor(_checker, _ngZone, _focusTrapManager, _document, _inertStrategy) {\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._focusTrapManager = _focusTrapManager;\n this._document = _document;\n // TODO split up the strategies into different modules, similar to DateAdapter.\n this._inertStrategy = _inertStrategy || new EventListenerFocusTrapInertStrategy();\n }\n create(element, config = { defer: false }) {\n let configObject;\n if (typeof config === 'boolean') {\n configObject = { defer: config };\n }\n else {\n configObject = config;\n }\n return new ConfigurableFocusTrap(element, this._checker, this._ngZone, this._document, this._focusTrapManager, this._inertStrategy, configObject);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ConfigurableFocusTrapFactory, deps: [{ token: InteractivityChecker }, { token: i0.NgZone }, { token: FocusTrapManager }, { token: DOCUMENT }, { token: FOCUS_TRAP_INERT_STRATEGY, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ConfigurableFocusTrapFactory, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ConfigurableFocusTrapFactory, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: InteractivityChecker }, { type: i0.NgZone }, { type: FocusTrapManager }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FOCUS_TRAP_INERT_STRATEGY]\n }] }]; } });\n\n/** Gets whether an event could be a faked `mousedown` event dispatched by a screen reader. */\nfunction isFakeMousedownFromScreenReader(event) {\n // Some screen readers will dispatch a fake `mousedown` event when pressing enter or space on\n // a clickable element. We can distinguish these events when both `offsetX` and `offsetY` are\n // zero or `event.buttons` is zero, depending on the browser:\n // - `event.buttons` works on Firefox, but fails on Chrome.\n // - `offsetX` and `offsetY` work on Chrome, but fail on Firefox.\n // Note that there's an edge case where the user could click the 0x0 spot of the\n // screen themselves, but that is unlikely to contain interactive elements.\n return event.buttons === 0 || (event.offsetX === 0 && event.offsetY === 0);\n}\n/** Gets whether an event could be a faked `touchstart` event dispatched by a screen reader. */\nfunction isFakeTouchstartFromScreenReader(event) {\n const touch = (event.touches && event.touches[0]) || (event.changedTouches && event.changedTouches[0]);\n // A fake `touchstart` can be distinguished from a real one by looking at the `identifier`\n // which is typically >= 0 on a real device versus -1 from a screen reader. Just to be safe,\n // we can also look at `radiusX` and `radiusY`. This behavior was observed against a Windows 10\n // device with a touch screen running NVDA v2020.4 and Firefox 85 or Chrome 88.\n return (!!touch &&\n touch.identifier === -1 &&\n (touch.radiusX == null || touch.radiusX === 1) &&\n (touch.radiusY == null || touch.radiusY === 1));\n}\n\n/**\n * Injectable options for the InputModalityDetector. These are shallowly merged with the default\n * options.\n */\nconst INPUT_MODALITY_DETECTOR_OPTIONS = new InjectionToken('cdk-input-modality-detector-options');\n/**\n * Default options for the InputModalityDetector.\n *\n * Modifier keys are ignored by default (i.e. when pressed won't cause the service to detect\n * keyboard input modality) for two reasons:\n *\n * 1. Modifier keys are commonly used with mouse to perform actions such as 'right click' or 'open\n * in new tab', and are thus less representative of actual keyboard interaction.\n * 2. VoiceOver triggers some keyboard events when linearly navigating with Control + Option (but\n * confusingly not with Caps Lock). Thus, to have parity with other screen readers, we ignore\n * these keys so as to not update the input modality.\n *\n * Note that we do not by default ignore the right Meta key on Safari because it has the same key\n * code as the ContextMenu key on other browsers. When we switch to using event.key, we can\n * distinguish between the two.\n */\nconst INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS = {\n ignoreKeys: [ALT, CONTROL, MAC_META, META, SHIFT],\n};\n/**\n * The amount of time needed to pass after a touchstart event in order for a subsequent mousedown\n * event to be attributed as mouse and not touch.\n *\n * This is the value used by AngularJS Material. Through trial and error (on iPhone 6S) they found\n * that a value of around 650ms seems appropriate.\n */\nconst TOUCH_BUFFER_MS = 650;\n/**\n * Event listener options that enable capturing and also mark the listener as passive if the browser\n * supports it.\n */\nconst modalityEventListenerOptions = normalizePassiveListenerOptions({\n passive: true,\n capture: true,\n});\n/**\n * Service that detects the user's input modality.\n *\n * This service does not update the input modality when a user navigates with a screen reader\n * (e.g. linear navigation with VoiceOver, object navigation / browse mode with NVDA, virtual PC\n * cursor mode with JAWS). This is in part due to technical limitations (i.e. keyboard events do not\n * fire as expected in these modes) but is also arguably the correct behavior. Navigating with a\n * screen reader is akin to visually scanning a page, and should not be interpreted as actual user\n * input interaction.\n *\n * When a user is not navigating but *interacting* with a screen reader, this service attempts to\n * update the input modality to keyboard, but in general this service's behavior is largely\n * undefined.\n */\nclass InputModalityDetector {\n /** The most recently detected input modality. */\n get mostRecentModality() {\n return this._modality.value;\n }\n constructor(_platform, ngZone, document, options) {\n this._platform = _platform;\n /**\n * The most recently detected input modality event target. Is null if no input modality has been\n * detected or if the associated event target is null for some unknown reason.\n */\n this._mostRecentTarget = null;\n /** The underlying BehaviorSubject that emits whenever an input modality is detected. */\n this._modality = new BehaviorSubject(null);\n /**\n * The timestamp of the last touch input modality. Used to determine whether mousedown events\n * should be attributed to mouse or touch.\n */\n this._lastTouchMs = 0;\n /**\n * Handles keydown events. Must be an arrow function in order to preserve the context when it gets\n * bound.\n */\n this._onKeydown = (event) => {\n // If this is one of the keys we should ignore, then ignore it and don't update the input\n // modality to keyboard.\n if (this._options?.ignoreKeys?.some(keyCode => keyCode === event.keyCode)) {\n return;\n }\n this._modality.next('keyboard');\n this._mostRecentTarget = _getEventTarget(event);\n };\n /**\n * Handles mousedown events. Must be an arrow function in order to preserve the context when it\n * gets bound.\n */\n this._onMousedown = (event) => {\n // Touches trigger both touch and mouse events, so we need to distinguish between mouse events\n // that were triggered via mouse vs touch. To do so, check if the mouse event occurs closely\n // after the previous touch event.\n if (Date.now() - this._lastTouchMs < TOUCH_BUFFER_MS) {\n return;\n }\n // Fake mousedown events are fired by some screen readers when controls are activated by the\n // screen reader. Attribute them to keyboard input modality.\n this._modality.next(isFakeMousedownFromScreenReader(event) ? 'keyboard' : 'mouse');\n this._mostRecentTarget = _getEventTarget(event);\n };\n /**\n * Handles touchstart events. Must be an arrow function in order to preserve the context when it\n * gets bound.\n */\n this._onTouchstart = (event) => {\n // Same scenario as mentioned in _onMousedown, but on touch screen devices, fake touchstart\n // events are fired. Again, attribute to keyboard input modality.\n if (isFakeTouchstartFromScreenReader(event)) {\n this._modality.next('keyboard');\n return;\n }\n // Store the timestamp of this touch event, as it's used to distinguish between mouse events\n // triggered via mouse vs touch.\n this._lastTouchMs = Date.now();\n this._modality.next('touch');\n this._mostRecentTarget = _getEventTarget(event);\n };\n this._options = {\n ...INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS,\n ...options,\n };\n // Skip the first emission as it's null.\n this.modalityDetected = this._modality.pipe(skip(1));\n this.modalityChanged = this.modalityDetected.pipe(distinctUntilChanged());\n // If we're not in a browser, this service should do nothing, as there's no relevant input\n // modality to detect.\n if (_platform.isBrowser) {\n ngZone.runOutsideAngular(() => {\n document.addEventListener('keydown', this._onKeydown, modalityEventListenerOptions);\n document.addEventListener('mousedown', this._onMousedown, modalityEventListenerOptions);\n document.addEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions);\n });\n }\n }\n ngOnDestroy() {\n this._modality.complete();\n if (this._platform.isBrowser) {\n document.removeEventListener('keydown', this._onKeydown, modalityEventListenerOptions);\n document.removeEventListener('mousedown', this._onMousedown, modalityEventListenerOptions);\n document.removeEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: InputModalityDetector, deps: [{ token: i1.Platform }, { token: i0.NgZone }, { token: DOCUMENT }, { token: INPUT_MODALITY_DETECTOR_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: InputModalityDetector, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: InputModalityDetector, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.Platform }, { type: i0.NgZone }, { type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [INPUT_MODALITY_DETECTOR_OPTIONS]\n }] }]; } });\n\nconst LIVE_ANNOUNCER_ELEMENT_TOKEN = new InjectionToken('liveAnnouncerElement', {\n providedIn: 'root',\n factory: LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY,\n});\n/** @docs-private */\nfunction LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY() {\n return null;\n}\n/** Injection token that can be used to configure the default options for the LiveAnnouncer. */\nconst LIVE_ANNOUNCER_DEFAULT_OPTIONS = new InjectionToken('LIVE_ANNOUNCER_DEFAULT_OPTIONS');\n\nlet uniqueIds = 0;\nclass LiveAnnouncer {\n constructor(elementToken, _ngZone, _document, _defaultOptions) {\n this._ngZone = _ngZone;\n this._defaultOptions = _defaultOptions;\n // We inject the live element and document as `any` because the constructor signature cannot\n // reference browser globals (HTMLElement, Document) on non-browser environments, since having\n // a class decorator causes TypeScript to preserve the constructor signature types.\n this._document = _document;\n this._liveElement = elementToken || this._createLiveElement();\n }\n announce(message, ...args) {\n const defaultOptions = this._defaultOptions;\n let politeness;\n let duration;\n if (args.length === 1 && typeof args[0] === 'number') {\n duration = args[0];\n }\n else {\n [politeness, duration] = args;\n }\n this.clear();\n clearTimeout(this._previousTimeout);\n if (!politeness) {\n politeness =\n defaultOptions && defaultOptions.politeness ? defaultOptions.politeness : 'polite';\n }\n if (duration == null && defaultOptions) {\n duration = defaultOptions.duration;\n }\n // TODO: ensure changing the politeness works on all environments we support.\n this._liveElement.setAttribute('aria-live', politeness);\n if (this._liveElement.id) {\n this._exposeAnnouncerToModals(this._liveElement.id);\n }\n // This 100ms timeout is necessary for some browser + screen-reader combinations:\n // - Both JAWS and NVDA over IE11 will not announce anything without a non-zero timeout.\n // - With Chrome and IE11 with NVDA or JAWS, a repeated (identical) message won't be read a\n // second time without clearing and then using a non-zero delay.\n // (using JAWS 17 at time of this writing).\n return this._ngZone.runOutsideAngular(() => {\n if (!this._currentPromise) {\n this._currentPromise = new Promise(resolve => (this._currentResolve = resolve));\n }\n clearTimeout(this._previousTimeout);\n this._previousTimeout = setTimeout(() => {\n this._liveElement.textContent = message;\n if (typeof duration === 'number') {\n this._previousTimeout = setTimeout(() => this.clear(), duration);\n }\n this._currentResolve();\n this._currentPromise = this._currentResolve = undefined;\n }, 100);\n return this._currentPromise;\n });\n }\n /**\n * Clears the current text from the announcer element. Can be used to prevent\n * screen readers from reading the text out again while the user is going\n * through the page landmarks.\n */\n clear() {\n if (this._liveElement) {\n this._liveElement.textContent = '';\n }\n }\n ngOnDestroy() {\n clearTimeout(this._previousTimeout);\n this._liveElement?.remove();\n this._liveElement = null;\n this._currentResolve?.();\n this._currentPromise = this._currentResolve = undefined;\n }\n _createLiveElement() {\n const elementClass = 'cdk-live-announcer-element';\n const previousElements = this._document.getElementsByClassName(elementClass);\n const liveEl = this._document.createElement('div');\n // Remove any old containers. This can happen when coming in from a server-side-rendered page.\n for (let i = 0; i < previousElements.length; i++) {\n previousElements[i].remove();\n }\n liveEl.classList.add(elementClass);\n liveEl.classList.add('cdk-visually-hidden');\n liveEl.setAttribute('aria-atomic', 'true');\n liveEl.setAttribute('aria-live', 'polite');\n liveEl.id = `cdk-live-announcer-${uniqueIds++}`;\n this._document.body.appendChild(liveEl);\n return liveEl;\n }\n /**\n * Some browsers won't expose the accessibility node of the live announcer element if there is an\n * `aria-modal` and the live announcer is outside of it. This method works around the issue by\n * pointing the `aria-owns` of all modals to the live announcer element.\n */\n _exposeAnnouncerToModals(id) {\n // TODO(http://github.com/angular/components/issues/26853): consider de-duplicating this with\n // the `SnakBarContainer` and other usages.\n //\n // Note that the selector here is limited to CDK overlays at the moment in order to reduce the\n // section of the DOM we need to look through. This should cover all the cases we support, but\n // the selector can be expanded if it turns out to be too narrow.\n const modals = this._document.querySelectorAll('body > .cdk-overlay-container [aria-modal=\"true\"]');\n for (let i = 0; i < modals.length; i++) {\n const modal = modals[i];\n const ariaOwns = modal.getAttribute('aria-owns');\n if (!ariaOwns) {\n modal.setAttribute('aria-owns', id);\n }\n else if (ariaOwns.indexOf(id) === -1) {\n modal.setAttribute('aria-owns', ariaOwns + ' ' + id);\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: LiveAnnouncer, deps: [{ token: LIVE_ANNOUNCER_ELEMENT_TOKEN, optional: true }, { token: i0.NgZone }, { token: DOCUMENT }, { token: LIVE_ANNOUNCER_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: LiveAnnouncer, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: LiveAnnouncer, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [LIVE_ANNOUNCER_ELEMENT_TOKEN]\n }] }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [LIVE_ANNOUNCER_DEFAULT_OPTIONS]\n }] }]; } });\n/**\n * A directive that works similarly to aria-live, but uses the LiveAnnouncer to ensure compatibility\n * with a wider range of browsers and screen readers.\n */\nclass CdkAriaLive {\n /** The aria-live politeness level to use when announcing messages. */\n get politeness() {\n return this._politeness;\n }\n set politeness(value) {\n this._politeness = value === 'off' || value === 'assertive' ? value : 'polite';\n if (this._politeness === 'off') {\n if (this._subscription) {\n this._subscription.unsubscribe();\n this._subscription = null;\n }\n }\n else if (!this._subscription) {\n this._subscription = this._ngZone.runOutsideAngular(() => {\n return this._contentObserver.observe(this._elementRef).subscribe(() => {\n // Note that we use textContent here, rather than innerText, in order to avoid a reflow.\n const elementText = this._elementRef.nativeElement.textContent;\n // The `MutationObserver` fires also for attribute\n // changes which we don't want to announce.\n if (elementText !== this._previousAnnouncedText) {\n this._liveAnnouncer.announce(elementText, this._politeness, this.duration);\n this._previousAnnouncedText = elementText;\n }\n });\n });\n }\n }\n constructor(_elementRef, _liveAnnouncer, _contentObserver, _ngZone) {\n this._elementRef = _elementRef;\n this._liveAnnouncer = _liveAnnouncer;\n this._contentObserver = _contentObserver;\n this._ngZone = _ngZone;\n this._politeness = 'polite';\n }\n ngOnDestroy() {\n if (this._subscription) {\n this._subscription.unsubscribe();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkAriaLive, deps: [{ token: i0.ElementRef }, { token: LiveAnnouncer }, { token: i1$1.ContentObserver }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkAriaLive, selector: \"[cdkAriaLive]\", inputs: { politeness: [\"cdkAriaLive\", \"politeness\"], duration: [\"cdkAriaLiveDuration\", \"duration\"] }, exportAs: [\"cdkAriaLive\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkAriaLive, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkAriaLive]',\n exportAs: 'cdkAriaLive',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: LiveAnnouncer }, { type: i1$1.ContentObserver }, { type: i0.NgZone }]; }, propDecorators: { politeness: [{\n type: Input,\n args: ['cdkAriaLive']\n }], duration: [{\n type: Input,\n args: ['cdkAriaLiveDuration']\n }] } });\n\n/** InjectionToken for FocusMonitorOptions. */\nconst FOCUS_MONITOR_DEFAULT_OPTIONS = new InjectionToken('cdk-focus-monitor-default-options');\n/**\n * Event listener options that enable capturing and also\n * mark the listener as passive if the browser supports it.\n */\nconst captureEventListenerOptions = normalizePassiveListenerOptions({\n passive: true,\n capture: true,\n});\n/** Monitors mouse and keyboard events to determine the cause of focus events. */\nclass FocusMonitor {\n constructor(_ngZone, _platform, _inputModalityDetector, \n /** @breaking-change 11.0.0 make document required */\n document, options) {\n this._ngZone = _ngZone;\n this._platform = _platform;\n this._inputModalityDetector = _inputModalityDetector;\n /** The focus origin that the next focus event is a result of. */\n this._origin = null;\n /** Whether the window has just been focused. */\n this._windowFocused = false;\n /**\n * Whether the origin was determined via a touch interaction. Necessary as properly attributing\n * focus events to touch interactions requires special logic.\n */\n this._originFromTouchInteraction = false;\n /** Map of elements being monitored to their info. */\n this._elementInfo = new Map();\n /** The number of elements currently being monitored. */\n this._monitoredElementCount = 0;\n /**\n * Keeps track of the root nodes to which we've currently bound a focus/blur handler,\n * as well as the number of monitored elements that they contain. We have to treat focus/blur\n * handlers differently from the rest of the events, because the browser won't emit events\n * to the document when focus moves inside of a shadow root.\n */\n this._rootNodeFocusListenerCount = new Map();\n /**\n * Event listener for `focus` events on the window.\n * Needs to be an arrow function in order to preserve the context when it gets bound.\n */\n this._windowFocusListener = () => {\n // Make a note of when the window regains focus, so we can\n // restore the origin info for the focused element.\n this._windowFocused = true;\n this._windowFocusTimeoutId = window.setTimeout(() => (this._windowFocused = false));\n };\n /** Subject for stopping our InputModalityDetector subscription. */\n this._stopInputModalityDetector = new Subject();\n /**\n * Event listener for `focus` and 'blur' events on the document.\n * Needs to be an arrow function in order to preserve the context when it gets bound.\n */\n this._rootNodeFocusAndBlurListener = (event) => {\n const target = _getEventTarget(event);\n // We need to walk up the ancestor chain in order to support `checkChildren`.\n for (let element = target; element; element = element.parentElement) {\n if (event.type === 'focus') {\n this._onFocus(event, element);\n }\n else {\n this._onBlur(event, element);\n }\n }\n };\n this._document = document;\n this._detectionMode = options?.detectionMode || 0 /* FocusMonitorDetectionMode.IMMEDIATE */;\n }\n monitor(element, checkChildren = false) {\n const nativeElement = coerceElement(element);\n // Do nothing if we're not on the browser platform or the passed in node isn't an element.\n if (!this._platform.isBrowser || nativeElement.nodeType !== 1) {\n // Note: we don't want the observable to emit at all so we don't pass any parameters.\n return of();\n }\n // If the element is inside the shadow DOM, we need to bind our focus/blur listeners to\n // the shadow root, rather than the `document`, because the browser won't emit focus events\n // to the `document`, if focus is moving within the same shadow root.\n const rootNode = _getShadowRoot(nativeElement) || this._getDocument();\n const cachedInfo = this._elementInfo.get(nativeElement);\n // Check if we're already monitoring this element.\n if (cachedInfo) {\n if (checkChildren) {\n // TODO(COMP-318): this can be problematic, because it'll turn all non-checkChildren\n // observers into ones that behave as if `checkChildren` was turned on. We need a more\n // robust solution.\n cachedInfo.checkChildren = true;\n }\n return cachedInfo.subject;\n }\n // Create monitored element info.\n const info = {\n checkChildren: checkChildren,\n subject: new Subject(),\n rootNode,\n };\n this._elementInfo.set(nativeElement, info);\n this._registerGlobalListeners(info);\n return info.subject;\n }\n stopMonitoring(element) {\n const nativeElement = coerceElement(element);\n const elementInfo = this._elementInfo.get(nativeElement);\n if (elementInfo) {\n elementInfo.subject.complete();\n this._setClasses(nativeElement);\n this._elementInfo.delete(nativeElement);\n this._removeGlobalListeners(elementInfo);\n }\n }\n focusVia(element, origin, options) {\n const nativeElement = coerceElement(element);\n const focusedElement = this._getDocument().activeElement;\n // If the element is focused already, calling `focus` again won't trigger the event listener\n // which means that the focus classes won't be updated. If that's the case, update the classes\n // directly without waiting for an event.\n if (nativeElement === focusedElement) {\n this._getClosestElementsInfo(nativeElement).forEach(([currentElement, info]) => this._originChanged(currentElement, origin, info));\n }\n else {\n this._setOrigin(origin);\n // `focus` isn't available on the server\n if (typeof nativeElement.focus === 'function') {\n nativeElement.focus(options);\n }\n }\n }\n ngOnDestroy() {\n this._elementInfo.forEach((_info, element) => this.stopMonitoring(element));\n }\n /** Access injected document if available or fallback to global document reference */\n _getDocument() {\n return this._document || document;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n const doc = this._getDocument();\n return doc.defaultView || window;\n }\n _getFocusOrigin(focusEventTarget) {\n if (this._origin) {\n // If the origin was realized via a touch interaction, we need to perform additional checks\n // to determine whether the focus origin should be attributed to touch or program.\n if (this._originFromTouchInteraction) {\n return this._shouldBeAttributedToTouch(focusEventTarget) ? 'touch' : 'program';\n }\n else {\n return this._origin;\n }\n }\n // If the window has just regained focus, we can restore the most recent origin from before the\n // window blurred. Otherwise, we've reached the point where we can't identify the source of the\n // focus. This typically means one of two things happened:\n //\n // 1) The element was programmatically focused, or\n // 2) The element was focused via screen reader navigation (which generally doesn't fire\n // events).\n //\n // Because we can't distinguish between these two cases, we default to setting `program`.\n if (this._windowFocused && this._lastFocusOrigin) {\n return this._lastFocusOrigin;\n }\n // If the interaction is coming from an input label, we consider it a mouse interactions.\n // This is a special case where focus moves on `click`, rather than `mousedown` which breaks\n // our detection, because all our assumptions are for `mousedown`. We need to handle this\n // special case, because it's very common for checkboxes and radio buttons.\n if (focusEventTarget && this._isLastInteractionFromInputLabel(focusEventTarget)) {\n return 'mouse';\n }\n return 'program';\n }\n /**\n * Returns whether the focus event should be attributed to touch. Recall that in IMMEDIATE mode, a\n * touch origin isn't immediately reset at the next tick (see _setOrigin). This means that when we\n * handle a focus event following a touch interaction, we need to determine whether (1) the focus\n * event was directly caused by the touch interaction or (2) the focus event was caused by a\n * subsequent programmatic focus call triggered by the touch interaction.\n * @param focusEventTarget The target of the focus event under examination.\n */\n _shouldBeAttributedToTouch(focusEventTarget) {\n // Please note that this check is not perfect. Consider the following edge case:\n //\n //
\n //
\n //
\n //\n // Suppose there is a FocusMonitor in IMMEDIATE mode attached to #parent. When the user touches\n // #child, #parent is programmatically focused. This code will attribute the focus to touch\n // instead of program. This is a relatively minor edge-case that can be worked around by using\n // focusVia(parent, 'program') to focus #parent.\n return (this._detectionMode === 1 /* FocusMonitorDetectionMode.EVENTUAL */ ||\n !!focusEventTarget?.contains(this._inputModalityDetector._mostRecentTarget));\n }\n /**\n * Sets the focus classes on the element based on the given focus origin.\n * @param element The element to update the classes on.\n * @param origin The focus origin.\n */\n _setClasses(element, origin) {\n element.classList.toggle('cdk-focused', !!origin);\n element.classList.toggle('cdk-touch-focused', origin === 'touch');\n element.classList.toggle('cdk-keyboard-focused', origin === 'keyboard');\n element.classList.toggle('cdk-mouse-focused', origin === 'mouse');\n element.classList.toggle('cdk-program-focused', origin === 'program');\n }\n /**\n * Updates the focus origin. If we're using immediate detection mode, we schedule an async\n * function to clear the origin at the end of a timeout. The duration of the timeout depends on\n * the origin being set.\n * @param origin The origin to set.\n * @param isFromInteraction Whether we are setting the origin from an interaction event.\n */\n _setOrigin(origin, isFromInteraction = false) {\n this._ngZone.runOutsideAngular(() => {\n this._origin = origin;\n this._originFromTouchInteraction = origin === 'touch' && isFromInteraction;\n // If we're in IMMEDIATE mode, reset the origin at the next tick (or in `TOUCH_BUFFER_MS` ms\n // for a touch event). We reset the origin at the next tick because Firefox focuses one tick\n // after the interaction event. We wait `TOUCH_BUFFER_MS` ms before resetting the origin for\n // a touch event because when a touch event is fired, the associated focus event isn't yet in\n // the event queue. Before doing so, clear any pending timeouts.\n if (this._detectionMode === 0 /* FocusMonitorDetectionMode.IMMEDIATE */) {\n clearTimeout(this._originTimeoutId);\n const ms = this._originFromTouchInteraction ? TOUCH_BUFFER_MS : 1;\n this._originTimeoutId = setTimeout(() => (this._origin = null), ms);\n }\n });\n }\n /**\n * Handles focus events on a registered element.\n * @param event The focus event.\n * @param element The monitored element.\n */\n _onFocus(event, element) {\n // NOTE(mmalerba): We currently set the classes based on the focus origin of the most recent\n // focus event affecting the monitored element. If we want to use the origin of the first event\n // instead we should check for the cdk-focused class here and return if the element already has\n // it. (This only matters for elements that have includesChildren = true).\n // If we are not counting child-element-focus as focused, make sure that the event target is the\n // monitored element itself.\n const elementInfo = this._elementInfo.get(element);\n const focusEventTarget = _getEventTarget(event);\n if (!elementInfo || (!elementInfo.checkChildren && element !== focusEventTarget)) {\n return;\n }\n this._originChanged(element, this._getFocusOrigin(focusEventTarget), elementInfo);\n }\n /**\n * Handles blur events on a registered element.\n * @param event The blur event.\n * @param element The monitored element.\n */\n _onBlur(event, element) {\n // If we are counting child-element-focus as focused, make sure that we aren't just blurring in\n // order to focus another child of the monitored element.\n const elementInfo = this._elementInfo.get(element);\n if (!elementInfo ||\n (elementInfo.checkChildren &&\n event.relatedTarget instanceof Node &&\n element.contains(event.relatedTarget))) {\n return;\n }\n this._setClasses(element);\n this._emitOrigin(elementInfo, null);\n }\n _emitOrigin(info, origin) {\n if (info.subject.observers.length) {\n this._ngZone.run(() => info.subject.next(origin));\n }\n }\n _registerGlobalListeners(elementInfo) {\n if (!this._platform.isBrowser) {\n return;\n }\n const rootNode = elementInfo.rootNode;\n const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode) || 0;\n if (!rootNodeFocusListeners) {\n this._ngZone.runOutsideAngular(() => {\n rootNode.addEventListener('focus', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n rootNode.addEventListener('blur', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n });\n }\n this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners + 1);\n // Register global listeners when first element is monitored.\n if (++this._monitoredElementCount === 1) {\n // Note: we listen to events in the capture phase so we\n // can detect them even if the user stops propagation.\n this._ngZone.runOutsideAngular(() => {\n const window = this._getWindow();\n window.addEventListener('focus', this._windowFocusListener);\n });\n // The InputModalityDetector is also just a collection of global listeners.\n this._inputModalityDetector.modalityDetected\n .pipe(takeUntil(this._stopInputModalityDetector))\n .subscribe(modality => {\n this._setOrigin(modality, true /* isFromInteraction */);\n });\n }\n }\n _removeGlobalListeners(elementInfo) {\n const rootNode = elementInfo.rootNode;\n if (this._rootNodeFocusListenerCount.has(rootNode)) {\n const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode);\n if (rootNodeFocusListeners > 1) {\n this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners - 1);\n }\n else {\n rootNode.removeEventListener('focus', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n rootNode.removeEventListener('blur', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n this._rootNodeFocusListenerCount.delete(rootNode);\n }\n }\n // Unregister global listeners when last element is unmonitored.\n if (!--this._monitoredElementCount) {\n const window = this._getWindow();\n window.removeEventListener('focus', this._windowFocusListener);\n // Equivalently, stop our InputModalityDetector subscription.\n this._stopInputModalityDetector.next();\n // Clear timeouts for all potentially pending timeouts to prevent the leaks.\n clearTimeout(this._windowFocusTimeoutId);\n clearTimeout(this._originTimeoutId);\n }\n }\n /** Updates all the state on an element once its focus origin has changed. */\n _originChanged(element, origin, elementInfo) {\n this._setClasses(element, origin);\n this._emitOrigin(elementInfo, origin);\n this._lastFocusOrigin = origin;\n }\n /**\n * Collects the `MonitoredElementInfo` of a particular element and\n * all of its ancestors that have enabled `checkChildren`.\n * @param element Element from which to start the search.\n */\n _getClosestElementsInfo(element) {\n const results = [];\n this._elementInfo.forEach((info, currentElement) => {\n if (currentElement === element || (info.checkChildren && currentElement.contains(element))) {\n results.push([currentElement, info]);\n }\n });\n return results;\n }\n /**\n * Returns whether an interaction is likely to have come from the user clicking the `label` of\n * an `input` or `textarea` in order to focus it.\n * @param focusEventTarget Target currently receiving focus.\n */\n _isLastInteractionFromInputLabel(focusEventTarget) {\n const { _mostRecentTarget: mostRecentTarget, mostRecentModality } = this._inputModalityDetector;\n // If the last interaction used the mouse on an element contained by one of the labels\n // of an `input`/`textarea` that is currently focused, it is very likely that the\n // user redirected focus using the label.\n if (mostRecentModality !== 'mouse' ||\n !mostRecentTarget ||\n mostRecentTarget === focusEventTarget ||\n (focusEventTarget.nodeName !== 'INPUT' && focusEventTarget.nodeName !== 'TEXTAREA') ||\n focusEventTarget.disabled) {\n return false;\n }\n const labels = focusEventTarget.labels;\n if (labels) {\n for (let i = 0; i < labels.length; i++) {\n if (labels[i].contains(mostRecentTarget)) {\n return true;\n }\n }\n }\n return false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: FocusMonitor, deps: [{ token: i0.NgZone }, { token: i1.Platform }, { token: InputModalityDetector }, { token: DOCUMENT, optional: true }, { token: FOCUS_MONITOR_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: FocusMonitor, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: FocusMonitor, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.Platform }, { type: InputModalityDetector }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FOCUS_MONITOR_DEFAULT_OPTIONS]\n }] }]; } });\n/**\n * Directive that determines how a particular element was focused (via keyboard, mouse, touch, or\n * programmatically) and adds corresponding classes to the element.\n *\n * There are two variants of this directive:\n * 1) cdkMonitorElementFocus: does not consider an element to be focused if one of its children is\n * focused.\n * 2) cdkMonitorSubtreeFocus: considers an element focused if it or any of its children are focused.\n */\nclass CdkMonitorFocus {\n constructor(_elementRef, _focusMonitor) {\n this._elementRef = _elementRef;\n this._focusMonitor = _focusMonitor;\n this._focusOrigin = null;\n this.cdkFocusChange = new EventEmitter();\n }\n get focusOrigin() {\n return this._focusOrigin;\n }\n ngAfterViewInit() {\n const element = this._elementRef.nativeElement;\n this._monitorSubscription = this._focusMonitor\n .monitor(element, element.nodeType === 1 && element.hasAttribute('cdkMonitorSubtreeFocus'))\n .subscribe(origin => {\n this._focusOrigin = origin;\n this.cdkFocusChange.emit(origin);\n });\n }\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n if (this._monitorSubscription) {\n this._monitorSubscription.unsubscribe();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkMonitorFocus, deps: [{ token: i0.ElementRef }, { token: FocusMonitor }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkMonitorFocus, selector: \"[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]\", outputs: { cdkFocusChange: \"cdkFocusChange\" }, exportAs: [\"cdkMonitorFocus\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkMonitorFocus, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]',\n exportAs: 'cdkMonitorFocus',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: FocusMonitor }]; }, propDecorators: { cdkFocusChange: [{\n type: Output\n }] } });\n\n/** CSS class applied to the document body when in black-on-white high-contrast mode. */\nconst BLACK_ON_WHITE_CSS_CLASS = 'cdk-high-contrast-black-on-white';\n/** CSS class applied to the document body when in white-on-black high-contrast mode. */\nconst WHITE_ON_BLACK_CSS_CLASS = 'cdk-high-contrast-white-on-black';\n/** CSS class applied to the document body when in high-contrast mode. */\nconst HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS = 'cdk-high-contrast-active';\n/**\n * Service to determine whether the browser is currently in a high-contrast-mode environment.\n *\n * Microsoft Windows supports an accessibility feature called \"High Contrast Mode\". This mode\n * changes the appearance of all applications, including web applications, to dramatically increase\n * contrast.\n *\n * IE, Edge, and Firefox currently support this mode. Chrome does not support Windows High Contrast\n * Mode. This service does not detect high-contrast mode as added by the Chrome \"High Contrast\"\n * browser extension.\n */\nclass HighContrastModeDetector {\n constructor(_platform, document) {\n this._platform = _platform;\n this._document = document;\n this._breakpointSubscription = inject(BreakpointObserver)\n .observe('(forced-colors: active)')\n .subscribe(() => {\n if (this._hasCheckedHighContrastMode) {\n this._hasCheckedHighContrastMode = false;\n this._applyBodyHighContrastModeCssClasses();\n }\n });\n }\n /** Gets the current high-contrast-mode for the page. */\n getHighContrastMode() {\n if (!this._platform.isBrowser) {\n return 0 /* HighContrastMode.NONE */;\n }\n // Create a test element with an arbitrary background-color that is neither black nor\n // white; high-contrast mode will coerce the color to either black or white. Also ensure that\n // appending the test element to the DOM does not affect layout by absolutely positioning it\n const testElement = this._document.createElement('div');\n testElement.style.backgroundColor = 'rgb(1,2,3)';\n testElement.style.position = 'absolute';\n this._document.body.appendChild(testElement);\n // Get the computed style for the background color, collapsing spaces to normalize between\n // browsers. Once we get this color, we no longer need the test element. Access the `window`\n // via the document so we can fake it in tests. Note that we have extra null checks, because\n // this logic will likely run during app bootstrap and throwing can break the entire app.\n const documentWindow = this._document.defaultView || window;\n const computedStyle = documentWindow && documentWindow.getComputedStyle\n ? documentWindow.getComputedStyle(testElement)\n : null;\n const computedColor = ((computedStyle && computedStyle.backgroundColor) || '').replace(/ /g, '');\n testElement.remove();\n switch (computedColor) {\n // Pre Windows 11 dark theme.\n case 'rgb(0,0,0)':\n // Windows 11 dark themes.\n case 'rgb(45,50,54)':\n case 'rgb(32,32,32)':\n return 2 /* HighContrastMode.WHITE_ON_BLACK */;\n // Pre Windows 11 light theme.\n case 'rgb(255,255,255)':\n // Windows 11 light theme.\n case 'rgb(255,250,239)':\n return 1 /* HighContrastMode.BLACK_ON_WHITE */;\n }\n return 0 /* HighContrastMode.NONE */;\n }\n ngOnDestroy() {\n this._breakpointSubscription.unsubscribe();\n }\n /** Applies CSS classes indicating high-contrast mode to document body (browser-only). */\n _applyBodyHighContrastModeCssClasses() {\n if (!this._hasCheckedHighContrastMode && this._platform.isBrowser && this._document.body) {\n const bodyClasses = this._document.body.classList;\n bodyClasses.remove(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS, BLACK_ON_WHITE_CSS_CLASS, WHITE_ON_BLACK_CSS_CLASS);\n this._hasCheckedHighContrastMode = true;\n const mode = this.getHighContrastMode();\n if (mode === 1 /* HighContrastMode.BLACK_ON_WHITE */) {\n bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS, BLACK_ON_WHITE_CSS_CLASS);\n }\n else if (mode === 2 /* HighContrastMode.WHITE_ON_BLACK */) {\n bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS, WHITE_ON_BLACK_CSS_CLASS);\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: HighContrastModeDetector, deps: [{ token: i1.Platform }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: HighContrastModeDetector, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: HighContrastModeDetector, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.Platform }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n\nclass A11yModule {\n constructor(highContrastModeDetector) {\n highContrastModeDetector._applyBodyHighContrastModeCssClasses();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: A11yModule, deps: [{ token: HighContrastModeDetector }], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: A11yModule, declarations: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus], imports: [ObserversModule], exports: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: A11yModule, imports: [ObserversModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: A11yModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ObserversModule],\n declarations: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus],\n exports: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus],\n }]\n }], ctorParameters: function () { return [{ type: HighContrastModeDetector }]; } });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { A11yModule, ActiveDescendantKeyManager, AriaDescriber, CDK_DESCRIBEDBY_HOST_ATTRIBUTE, CDK_DESCRIBEDBY_ID_PREFIX, CdkAriaLive, CdkMonitorFocus, CdkTrapFocus, ConfigurableFocusTrap, ConfigurableFocusTrapFactory, EventListenerFocusTrapInertStrategy, FOCUS_MONITOR_DEFAULT_OPTIONS, FOCUS_TRAP_INERT_STRATEGY, FocusKeyManager, FocusMonitor, FocusTrap, FocusTrapFactory, HighContrastModeDetector, INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS, INPUT_MODALITY_DETECTOR_OPTIONS, InputModalityDetector, InteractivityChecker, IsFocusableConfig, LIVE_ANNOUNCER_DEFAULT_OPTIONS, LIVE_ANNOUNCER_ELEMENT_TOKEN, LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY, ListKeyManager, LiveAnnouncer, MESSAGES_CONTAINER_ID, addAriaReferencedId, getAriaReferenceIds, isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader, removeAriaReferencedId };\n","import * as i1 from '@angular/cdk/tree';\nimport { CdkTreeNode, CdkTreeNodeDef, CdkNestedTreeNode, CDK_TREE_NODE_OUTLET_NODE, CdkTreeNodePadding, CdkTreeNodeOutlet, CdkTree, CdkTreeNodeToggle, CdkTreeModule } from '@angular/cdk/tree';\nimport * as i0 from '@angular/core';\nimport { Directive, Attribute, Input, Inject, Optional, Component, ViewEncapsulation, ChangeDetectionStrategy, ViewChild, NgModule } from '@angular/core';\nimport { mixinTabIndex, mixinDisabled, MatCommonModule } from '@angular/material/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { DataSource } from '@angular/cdk/collections';\nimport { BehaviorSubject, merge } from 'rxjs';\nimport { take, map } from 'rxjs/operators';\n\nconst _MatTreeNodeBase = mixinTabIndex(mixinDisabled(CdkTreeNode));\n/**\n * Wrapper for the CdkTree node with Material design styles.\n */\nclass MatTreeNode extends _MatTreeNodeBase {\n constructor(elementRef, tree, tabIndex) {\n super(elementRef, tree);\n this.tabIndex = Number(tabIndex) || 0;\n }\n // This is a workaround for https://github.com/angular/angular/issues/23091\n // In aot mode, the lifecycle hooks from parent class are not called.\n ngOnInit() {\n super.ngOnInit();\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatTreeNode, deps: [{ token: i0.ElementRef }, { token: i1.CdkTree }, { token: 'tabindex', attribute: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatTreeNode, selector: \"mat-tree-node\", inputs: { role: \"role\", disabled: \"disabled\", tabIndex: \"tabIndex\" }, host: { classAttribute: \"mat-tree-node\" }, providers: [{ provide: CdkTreeNode, useExisting: MatTreeNode }], exportAs: [\"matTreeNode\"], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatTreeNode, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-tree-node',\n exportAs: 'matTreeNode',\n inputs: ['role', 'disabled', 'tabIndex'],\n providers: [{ provide: CdkTreeNode, useExisting: MatTreeNode }],\n host: {\n 'class': 'mat-tree-node',\n },\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.CdkTree }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['tabindex']\n }] }]; } });\n/**\n * Wrapper for the CdkTree node definition with Material design styles.\n * Captures the node's template and a when predicate that describes when this node should be used.\n */\nclass MatTreeNodeDef extends CdkTreeNodeDef {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatTreeNodeDef, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatTreeNodeDef, selector: \"[matTreeNodeDef]\", inputs: { when: [\"matTreeNodeDefWhen\", \"when\"], data: [\"matTreeNode\", \"data\"] }, providers: [{ provide: CdkTreeNodeDef, useExisting: MatTreeNodeDef }], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatTreeNodeDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[matTreeNodeDef]',\n inputs: ['when: matTreeNodeDefWhen'],\n providers: [{ provide: CdkTreeNodeDef, useExisting: MatTreeNodeDef }],\n }]\n }], propDecorators: { data: [{\n type: Input,\n args: ['matTreeNode']\n }] } });\n/**\n * Wrapper for the CdkTree nested node with Material design styles.\n */\nclass MatNestedTreeNode extends CdkNestedTreeNode {\n /** Whether the node is disabled. */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n }\n /** Tabindex for the node. */\n get tabIndex() {\n return this.disabled ? -1 : this._tabIndex;\n }\n set tabIndex(value) {\n // If the specified tabIndex value is null or undefined, fall back to the default value.\n this._tabIndex = value != null ? value : 0;\n }\n constructor(elementRef, tree, differs, tabIndex) {\n super(elementRef, tree, differs);\n this._disabled = false;\n this.tabIndex = Number(tabIndex) || 0;\n }\n // This is a workaround for https://github.com/angular/angular/issues/19145\n // In aot mode, the lifecycle hooks from parent class are not called.\n // TODO(tinayuangao): Remove when the angular issue #19145 is fixed\n ngOnInit() {\n super.ngOnInit();\n }\n ngAfterContentInit() {\n super.ngAfterContentInit();\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatNestedTreeNode, deps: [{ token: i0.ElementRef }, { token: i1.CdkTree }, { token: i0.IterableDiffers }, { token: 'tabindex', attribute: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatNestedTreeNode, selector: \"mat-nested-tree-node\", inputs: { role: \"role\", disabled: \"disabled\", tabIndex: \"tabIndex\", node: [\"matNestedTreeNode\", \"node\"] }, host: { classAttribute: \"mat-nested-tree-node\" }, providers: [\n { provide: CdkNestedTreeNode, useExisting: MatNestedTreeNode },\n { provide: CdkTreeNode, useExisting: MatNestedTreeNode },\n { provide: CDK_TREE_NODE_OUTLET_NODE, useExisting: MatNestedTreeNode },\n ], exportAs: [\"matNestedTreeNode\"], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatNestedTreeNode, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-nested-tree-node',\n exportAs: 'matNestedTreeNode',\n inputs: ['role', 'disabled', 'tabIndex'],\n providers: [\n { provide: CdkNestedTreeNode, useExisting: MatNestedTreeNode },\n { provide: CdkTreeNode, useExisting: MatNestedTreeNode },\n { provide: CDK_TREE_NODE_OUTLET_NODE, useExisting: MatNestedTreeNode },\n ],\n host: {\n 'class': 'mat-nested-tree-node',\n },\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.CdkTree }, { type: i0.IterableDiffers }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['tabindex']\n }] }]; }, propDecorators: { node: [{\n type: Input,\n args: ['matNestedTreeNode']\n }], disabled: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }] } });\n\n/**\n * Wrapper for the CdkTree padding with Material design styles.\n */\nclass MatTreeNodePadding extends CdkTreeNodePadding {\n /** The level of depth of the tree node. The padding will be `level * indent` pixels. */\n get level() {\n return this._level;\n }\n set level(value) {\n this._setLevelInput(value);\n }\n /** The indent for each level. Default number 40px from material design menu sub-menu spec. */\n get indent() {\n return this._indent;\n }\n set indent(indent) {\n this._setIndentInput(indent);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatTreeNodePadding, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatTreeNodePadding, selector: \"[matTreeNodePadding]\", inputs: { level: [\"matTreeNodePadding\", \"level\"], indent: [\"matTreeNodePaddingIndent\", \"indent\"] }, providers: [{ provide: CdkTreeNodePadding, useExisting: MatTreeNodePadding }], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatTreeNodePadding, decorators: [{\n type: Directive,\n args: [{\n selector: '[matTreeNodePadding]',\n providers: [{ provide: CdkTreeNodePadding, useExisting: MatTreeNodePadding }],\n }]\n }], propDecorators: { level: [{\n type: Input,\n args: ['matTreeNodePadding']\n }], indent: [{\n type: Input,\n args: ['matTreeNodePaddingIndent']\n }] } });\n\n/**\n * Outlet for nested CdkNode. Put `[matTreeNodeOutlet]` on a tag to place children dataNodes\n * inside the outlet.\n */\nclass MatTreeNodeOutlet {\n constructor(viewContainer, _node) {\n this.viewContainer = viewContainer;\n this._node = _node;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatTreeNodeOutlet, deps: [{ token: i0.ViewContainerRef }, { token: CDK_TREE_NODE_OUTLET_NODE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatTreeNodeOutlet, selector: \"[matTreeNodeOutlet]\", providers: [\n {\n provide: CdkTreeNodeOutlet,\n useExisting: MatTreeNodeOutlet,\n },\n ], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatTreeNodeOutlet, decorators: [{\n type: Directive,\n args: [{\n selector: '[matTreeNodeOutlet]',\n providers: [\n {\n provide: CdkTreeNodeOutlet,\n useExisting: MatTreeNodeOutlet,\n },\n ],\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_TREE_NODE_OUTLET_NODE]\n }, {\n type: Optional\n }] }]; } });\n\n/**\n * Wrapper for the CdkTable with Material design styles.\n */\nclass MatTree extends CdkTree {\n constructor() {\n super(...arguments);\n // Outlets within the tree's template where the dataNodes will be inserted.\n // We need an initializer here to avoid a TS error. The value will be set in `ngAfterViewInit`.\n this._nodeOutlet = undefined;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatTree, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatTree, selector: \"mat-tree\", host: { attributes: { \"role\": \"tree\" }, classAttribute: \"mat-tree\" }, providers: [{ provide: CdkTree, useExisting: MatTree }], viewQueries: [{ propertyName: \"_nodeOutlet\", first: true, predicate: MatTreeNodeOutlet, descendants: true, static: true }], exportAs: [\"matTree\"], usesInheritance: true, ngImport: i0, template: ``, isInline: true, styles: [\".mat-tree{display:block}.mat-tree-node{display:flex;align-items:center;flex:1;word-wrap:break-word}.mat-nested-tree-node{border-bottom-width:0}\"], dependencies: [{ kind: \"directive\", type: MatTreeNodeOutlet, selector: \"[matTreeNodeOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatTree, decorators: [{\n type: Component,\n args: [{ selector: 'mat-tree', exportAs: 'matTree', template: ``, host: {\n 'class': 'mat-tree',\n 'role': 'tree',\n }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, providers: [{ provide: CdkTree, useExisting: MatTree }], styles: [\".mat-tree{display:block}.mat-tree-node{display:flex;align-items:center;flex:1;word-wrap:break-word}.mat-nested-tree-node{border-bottom-width:0}\"] }]\n }], propDecorators: { _nodeOutlet: [{\n type: ViewChild,\n args: [MatTreeNodeOutlet, { static: true }]\n }] } });\n\n/**\n * Wrapper for the CdkTree's toggle with Material design styles.\n */\nclass MatTreeNodeToggle extends CdkTreeNodeToggle {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatTreeNodeToggle, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatTreeNodeToggle, selector: \"[matTreeNodeToggle]\", inputs: { recursive: [\"matTreeNodeToggleRecursive\", \"recursive\"] }, providers: [{ provide: CdkTreeNodeToggle, useExisting: MatTreeNodeToggle }], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatTreeNodeToggle, decorators: [{\n type: Directive,\n args: [{\n selector: '[matTreeNodeToggle]',\n providers: [{ provide: CdkTreeNodeToggle, useExisting: MatTreeNodeToggle }],\n inputs: ['recursive: matTreeNodeToggleRecursive'],\n }]\n }] });\n\nconst MAT_TREE_DIRECTIVES = [\n MatNestedTreeNode,\n MatTreeNodeDef,\n MatTreeNodePadding,\n MatTreeNodeToggle,\n MatTree,\n MatTreeNode,\n MatTreeNodeOutlet,\n];\nclass MatTreeModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatTreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: MatTreeModule, declarations: [MatNestedTreeNode,\n MatTreeNodeDef,\n MatTreeNodePadding,\n MatTreeNodeToggle,\n MatTree,\n MatTreeNode,\n MatTreeNodeOutlet], imports: [CdkTreeModule, MatCommonModule], exports: [MatCommonModule, MatNestedTreeNode,\n MatTreeNodeDef,\n MatTreeNodePadding,\n MatTreeNodeToggle,\n MatTree,\n MatTreeNode,\n MatTreeNodeOutlet] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatTreeModule, imports: [CdkTreeModule, MatCommonModule, MatCommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatTreeModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CdkTreeModule, MatCommonModule],\n exports: [MatCommonModule, MAT_TREE_DIRECTIVES],\n declarations: MAT_TREE_DIRECTIVES,\n }]\n }] });\n\n/**\n * Tree flattener to convert a normal type of node to node with children & level information.\n * Transform nested nodes of type `T` to flattened nodes of type `F`.\n *\n * For example, the input data of type `T` is nested, and contains its children data:\n * SomeNode: {\n * key: 'Fruits',\n * children: [\n * NodeOne: {\n * key: 'Apple',\n * },\n * NodeTwo: {\n * key: 'Pear',\n * }\n * ]\n * }\n * After flattener flatten the tree, the structure will become\n * SomeNode: {\n * key: 'Fruits',\n * expandable: true,\n * level: 1\n * },\n * NodeOne: {\n * key: 'Apple',\n * expandable: false,\n * level: 2\n * },\n * NodeTwo: {\n * key: 'Pear',\n * expandable: false,\n * level: 2\n * }\n * and the output flattened type is `F` with additional information.\n */\nclass MatTreeFlattener {\n constructor(transformFunction, getLevel, isExpandable, getChildren) {\n this.transformFunction = transformFunction;\n this.getLevel = getLevel;\n this.isExpandable = isExpandable;\n this.getChildren = getChildren;\n }\n _flattenNode(node, level, resultNodes, parentMap) {\n const flatNode = this.transformFunction(node, level);\n resultNodes.push(flatNode);\n if (this.isExpandable(flatNode)) {\n const childrenNodes = this.getChildren(node);\n if (childrenNodes) {\n if (Array.isArray(childrenNodes)) {\n this._flattenChildren(childrenNodes, level, resultNodes, parentMap);\n }\n else {\n childrenNodes.pipe(take(1)).subscribe(children => {\n this._flattenChildren(children, level, resultNodes, parentMap);\n });\n }\n }\n }\n return resultNodes;\n }\n _flattenChildren(children, level, resultNodes, parentMap) {\n children.forEach((child, index) => {\n let childParentMap = parentMap.slice();\n childParentMap.push(index != children.length - 1);\n this._flattenNode(child, level + 1, resultNodes, childParentMap);\n });\n }\n /**\n * Flatten a list of node type T to flattened version of node F.\n * Please note that type T may be nested, and the length of `structuredData` may be different\n * from that of returned list `F[]`.\n */\n flattenNodes(structuredData) {\n let resultNodes = [];\n structuredData.forEach(node => this._flattenNode(node, 0, resultNodes, []));\n return resultNodes;\n }\n /**\n * Expand flattened node with current expansion status.\n * The returned list may have different length.\n */\n expandFlattenedNodes(nodes, treeControl) {\n let results = [];\n let currentExpand = [];\n currentExpand[0] = true;\n nodes.forEach(node => {\n let expand = true;\n for (let i = 0; i <= this.getLevel(node); i++) {\n expand = expand && currentExpand[i];\n }\n if (expand) {\n results.push(node);\n }\n if (this.isExpandable(node)) {\n currentExpand[this.getLevel(node) + 1] = treeControl.isExpanded(node);\n }\n });\n return results;\n }\n}\n/**\n * Data source for flat tree.\n * The data source need to handle expansion/collapsion of the tree node and change the data feed\n * to `MatTree`.\n * The nested tree nodes of type `T` are flattened through `MatTreeFlattener`, and converted\n * to type `F` for `MatTree` to consume.\n */\nclass MatTreeFlatDataSource extends DataSource {\n get data() {\n return this._data.value;\n }\n set data(value) {\n this._data.next(value);\n this._flattenedData.next(this._treeFlattener.flattenNodes(this.data));\n this._treeControl.dataNodes = this._flattenedData.value;\n }\n constructor(_treeControl, _treeFlattener, initialData) {\n super();\n this._treeControl = _treeControl;\n this._treeFlattener = _treeFlattener;\n this._flattenedData = new BehaviorSubject([]);\n this._expandedData = new BehaviorSubject([]);\n this._data = new BehaviorSubject([]);\n if (initialData) {\n // Assign the data through the constructor to ensure that all of the logic is executed.\n this.data = initialData;\n }\n }\n connect(collectionViewer) {\n return merge(collectionViewer.viewChange, this._treeControl.expansionModel.changed, this._flattenedData).pipe(map(() => {\n this._expandedData.next(this._treeFlattener.expandFlattenedNodes(this._flattenedData.value, this._treeControl));\n return this._expandedData.value;\n }));\n }\n disconnect() {\n // no op\n }\n}\n\n/**\n * Data source for nested tree.\n *\n * The data source for nested tree doesn't have to consider node flattener, or the way to expand\n * or collapse. The expansion/collapsion will be handled by TreeControl and each non-leaf node.\n */\nclass MatTreeNestedDataSource extends DataSource {\n constructor() {\n super(...arguments);\n this._data = new BehaviorSubject([]);\n }\n /**\n * Data for the nested tree\n */\n get data() {\n return this._data.value;\n }\n set data(value) {\n this._data.next(value);\n }\n connect(collectionViewer) {\n return merge(...[collectionViewer.viewChange, this._data]).pipe(map(() => this.data));\n }\n disconnect() {\n // no op\n }\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatNestedTreeNode, MatTree, MatTreeFlatDataSource, MatTreeFlattener, MatTreeModule, MatTreeNestedDataSource, MatTreeNode, MatTreeNodeDef, MatTreeNodeOutlet, MatTreeNodePadding, MatTreeNodeToggle };\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[mbsTreeAppend]'\n})\nexport class TreeAppendDirective {\n constructor(public template: TemplateRef) {}\n}\n","import { FlatTreeElement } from '../models/flatTreeElement.model';\n\n// Function that determines whether a flat node is expandable or not\nexport function getIsNodeExpandable({ node }: FlatTreeElement) {\n return node?.children?.length > 0;\n}\n","import { FlatTreeElement } from '../models/flatTreeElement.model';\n\n// Function that gets a flat node's level\nexport function getNodeLevel({ level }: FlatTreeElement) {\n return level;\n}\n","import { MatTreeFlattener } from '@angular/material/tree';\nimport { FlatTreeElement } from '../models/flatTreeElement.model';\nimport { TreeElement } from '../models/treeElement.model';\nimport { getIsNodeExpandable } from './getIsNodeExpandable';\nimport { getNodeChildren } from './getNodeChildren';\nimport { getNodeLevel } from './getNodeLevel';\nimport { nodeTransformer } from './nodeTransformer';\n\n// Tells tree data source builder how to flatten our nested node data into flat nodes\nexport const treeFlattener = new MatTreeFlattener(\n nodeTransformer,\n getNodeLevel,\n getIsNodeExpandable,\n getNodeChildren\n);\n","import { FlatTreeElement } from '../models/flatTreeElement.model';\nimport { TreeElement } from '../models/treeElement.model';\n\n// Function that maps a nested node to a flat node\nexport function nodeTransformer(node: TreeElement, level: number): FlatTreeElement {\n return {\n expandable: node.children && node.children.length > 0,\n level,\n node\n };\n}\n","import { TreeElement } from '../models/treeElement.model';\n\n// Function that returns a nested node's list of children\nexport function getNodeChildren({ children }: TreeElement) {\n return children;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { FlatTreeElement } from '../models/flatTreeElement.model';\nimport { TreeElement } from '../models/treeElement.model';\n\n@Pipe({\n name: 'treeLoadMore',\n pure: true\n})\nexport class TreeLoadMorePipe implements PipeTransform {\n transform(item: FlatTreeElement, index: number, flatData: FlatTreeElement[]): FlatTreeElement {\n const nextElement = flatData[index + 1]?.node || null;\n const nextElementParentId = nextElement?.parent?.id;\n\n let needLoadMore = false;\n let currentItem: TreeElement;\n let currentParent = item?.node;\n\n while (!needLoadMore && currentParent?.parent && currentParent?.parent?.id === item.node.parent.id) {\n currentItem = currentParent;\n currentParent = currentParent?.parent;\n\n if (nextElementParentId === currentParent?.id) break;\n\n const childrenLength = currentParent?.children\n ? currentParent.children.reduce((acc, next) => {\n if (next.shown || next.shown !== false) acc++;\n return acc;\n }, 0)\n : 0;\n\n needLoadMore =\n currentParent?.expanded &&\n currentParent?.totalChildren &&\n childrenLength &&\n currentParent.totalChildren > childrenLength &&\n currentParent.children[\n currentParent.children.length !== childrenLength\n ? currentItem.children\n ? childrenLength\n : currentParent.children.length - 1\n : childrenLength - 1\n ]?.id === currentItem?.id;\n }\n\n if (!needLoadMore) return null;\n\n return flatData.find(item => item.node.id === currentItem.id);\n }\n}\n","\n\n \n\n \n\n
\n \n
\n\n
\n\n
\n\n
\n\n \n\n \n \n \n\n
\n \n
\n
\n\n
\n\n\n\n \n \n {{ item?.node?.parent?.loadMoreButtonCaption || 'Load more...' }}\n \n \n\n\n\n\n\n \n\n \n \n \n\n
\n \n
\n\n
\n\n\n\n \n
\n {{customDisableText}}\n \n You can change your selection only after all items are loaded.
\n Scroll down and click {{ item?.node?.parent?.loadMoreButtonCaption || 'Load more...' }} to complete upload\n
\n
\n
\n\n \n\n
\n \n
\n\n
\n\n\n {{ node.label }}\n\n\n\n\n
\n\n
\n\n 0 || (lazy && !item.node.gotChildren))\"\n [disabled]=\"disabledTree || (disableIfLoadingSubtree && loadingSubtree) || isDisabled(item)\"\n [customClasses]=\"!item.node.expanded ? '' : '-expanded'\"\n [isCtrl]=\"true\"\n [loading]=\"item.node.loadingChildren\"\n class=\"mbs-tree-item_arrow\"\n type=\"dark\">\n\n \n\n
\n\n
\n\n
\n","import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { FlatTreeControl } from '@angular/cdk/tree';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { MatTreeFlatDataSource } from '@angular/material/tree';\nimport { SafeStyle } from '@angular/platform-browser';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { cloneDeep, isNil, unionBy } from 'lodash';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { TreeAppendDirective } from './directives/treeAppend.directive';\nimport { TreeElementDirective } from './directives/treeElement.directive';\nimport { TreeLoadMoreDirective } from './directives/treeLoadMore.directive';\nimport { getIsNodeExpandable } from './helpers/getIsNodeExpandable';\nimport { getNodeLevel } from './helpers/getNodeLevel';\nimport { treeFlattener } from './helpers/treeFlattener';\nimport { FlatTreeElement } from './models/flatTreeElement.model';\nimport { TreeElement } from './models/treeElement.model';\n\n// Component containing virtual scrolling flat tree\n@UntilDestroy()\n@Component({\n selector: 'mbs-tree',\n templateUrl: './tree.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'mbsTree'\n})\nexport class TreeComponent implements OnInit {\n // Tree control to feed to the cdk tree\n readonly treeControl: FlatTreeControl = new FlatTreeControl(getNodeLevel, getIsNodeExpandable);\n // Data source fed into the cdk tree control\n readonly dataSource: MatTreeFlatDataSource;\n private dataChange = new BehaviorSubject([]);\n\n /**\n * @ignore\n */\n @Input() root: TreeElement = null;\n\n @Input() classesForRoot = '';\n\n get rootClasses(): string {\n const result = isNil(this.maxHeight) ? '' : 'overflow-auto';\n return `${result} ${this.classesForRoot}`;\n }\n\n /**\n * If tree items can be hidden\n */\n @Input() itemsCanBeHidden = false;\n\n @Input() onlyOneSelect = false;\n\n /**\n * Padding difference (in px) between 2 nested levels;\n */\n @Input() nestedPadding = 24;\n\n @Input() clickEmitBeforeLoad = false;\n @Input() selectedItemId = '';\n\n #nestedData: TreeElement[] = [];\n #expandAll = false;\n\n @Input() set data(value: TreeElement[]) {\n this.#nestedData = value;\n this.dataSource.data = value;\n if (this.virtualScroll) {\n this.updateVisibleData();\n }\n this.updateHashItemsClasses();\n }\n\n get data(): TreeElement[] {\n return this.#nestedData;\n }\n\n get flatData(): FlatTreeElement[] {\n return this.treeControl.dataNodes;\n }\n\n set flatData(nodeList: FlatTreeElement[]) {\n this.treeControl.dataNodes = nodeList;\n if (this.virtualScroll) {\n this.updateVisibleData();\n }\n }\n\n public visibleFlatData: FlatTreeElement[] = [];\n\n public loadingSubtree = false;\n\n @Input() disabledTree = false;\n @Input() disableIfLoadingSubtree = false;\n\n @Input() virtualItemSize = 30;\n @Input() height: SafeStyle;\n @Input() virtualScroll = false;\n @Input() virtualItemsNumber = 10;\n\n /**\n * Works only for Tree without virtual scroll\n */\n @Input() maxHeight: SafeStyle;\n\n /**\n * Works only for Tree without virtual scroll\n */\n @Input() minHeight: SafeStyle;\n\n @Input() hideTreeIcon = false;\n @Input() set expandAll(value: boolean) {\n this.flatData.forEach((item) => this[value ? 'expand' : 'collapse'](item.node));\n\n this.#expandAll = value;\n }\n @Input() lazy = false;\n @Input() loadMore: (item: TreeElement) => Observable;\n @Input() loadMoreNotLazy: (item: TreeElement) => Observable;\n @Input() getItems: (item: TreeElement) => Observable;\n @Input() childrenManualControl = false;\n\n /**\n * If `false` - Tree will not expand children elements on click on parent.\n *\n *\n * You should use `expand`, `collapse` and `toggle` methods in this case\n */\n @Input() toggleOnClick = true;\n\n /**\n * If `false` - Tree will not close children elements on click on parent.\n * You should use `expand`, `collapse` and `toggle` methods in this case\n */\n @Input() closeOnClick = true;\n\n @Input() customDisableText = '';\n @Input() disableChildren = false;\n\n @Input() itemClasses = ''\n @Input() selectClass = '-selected';\n @Input() selectable = false;\n @Input() hover = false;\n @Input() mode: 'text' | 'checkbox' | 'file' = 'text';\n\n @Input() set dontSelectChildren(value: boolean) {\n this.recursiveCheck = !value;\n }\n\n /**\n * @deprecated since 1.2\n * use `recursiveCheck` instead\n */\n get dontSelectChildren(): boolean {\n return !this.recursiveCheck;\n }\n\n @Input() recursiveCheck = true;\n @Input() offCheckAndIndeterminate = false;\n\n @Input() findKey = 'id';\n\n template: TemplateRef;\n\n @ContentChild(TreeElementDirective, { static: false, read: TreeElementDirective })\n public set elementTemplate(value: TreeElementDirective) {\n if (isNil(this.template) && value) {\n this.template = value.template;\n }\n }\n\n hashTreeClasses: { [key: string]: { levelClass: string; otherClasses: string; isDisabled: boolean } } = {};\n\n appendTemplate: TemplateRef;\n @ContentChild(TreeAppendDirective, { static: false, read: TreeAppendDirective })\n public set elementAppendTemplate(value: TreeAppendDirective) {\n if (isNil(this.appendTemplate) && value) {\n this.appendTemplate = value.template;\n }\n }\n\n loadMoreTemplate: TemplateRef;\n @ContentChild(TreeLoadMoreDirective, { static: false, read: TreeLoadMoreDirective })\n public set elementLoadMoreTemplate(value: TreeLoadMoreDirective) {\n if (isNil(this.loadMoreTemplate) && value) {\n this.loadMoreTemplate = value.template;\n }\n }\n\n /**\n * Emits on change in any checkbox, only in `checkbox mode`\n */\n @Output() mbsChange: EventEmitter = new EventEmitter();\n\n /**\n * Emits on click on element (not expander arrow), only in `text mode`\n */\n @Output() mbsClick: EventEmitter<{ event; item: TreeElement }> = new EventEmitter<{ event; item: TreeElement }>();\n\n /**\n * Emits on click on element (not expander arrow), only in `lazy mode` and if clickEmitBeforeLoad = true\n */\n @Output() mbsPreClick: EventEmitter<{ event; item: TreeElement }> = new EventEmitter<{ event; item: TreeElement }>();\n\n /**\n * Emits only once - after Tree init. Can be used for `checkIndeterminate` and some similar actions;\n */\n @Output() init = new EventEmitter();\n\n @ViewChild('viewport', { static: false, read: CdkVirtualScrollViewport }) virtualViewport: CdkVirtualScrollViewport;\n\n @ViewChild('mbsTree', { static: false }) mbsTree: ElementRef;\n\n constructor(private cdRef: ChangeDetectorRef) {\n // Populates our flattened data into the tree control\n this.dataSource = new MatTreeFlatDataSource(this.treeControl, treeFlattener);\n this.dataChange.subscribe((data) => {\n this.dataSource.data = data;\n });\n }\n\n /**\n * @ignore\n */\n updateHashItemsClasses(): void {\n let classes = this.hover ? '-hover' : '';\n\n if (this.mode === 'checkbox' || this.mode === 'file') {\n classes += ' -checkbox';\n }\n\n this.flatData.forEach((item) => {\n if (this.hashTreeClasses[item.node.id]) return;\n\n this.hashTreeClasses[item.node.id] = {\n levelClass: '-level-' + item.level.toString(),\n otherClasses: classes,\n isDisabled: this.isDisabled(item)\n };\n });\n }\n\n mapParents(root: TreeElement[], parent = this.root): void {\n root.forEach((el) => {\n el.parent = parent;\n el.children && this.mapParents(el.children, el);\n });\n }\n\n getVirtualScrollViewportSize(): string {\n if (this.height) {\n return this.height.toString();\n }\n\n return `${this.virtualItemSize * this.virtualItemsNumber}px`;\n }\n\n virtualTrackBy(index: number, item: FlatTreeElement): string {\n return item.node.id;\n }\n\n ngOnInit(): void {\n this.mapParents(this.#nestedData);\n\n if (this.virtualScroll) {\n this.updateVisibleData();\n }\n\n this.init.emit();\n }\n\n /**\n * @ignore\n */\n updateVisibleData(): void {\n // TODO: this have to be refactored to not check whole data array on each toggle\n this.visibleFlatData = this.flatData.filter((item) => this.needToRender(item));\n }\n\n handleClick(event: MouseEvent, item: FlatTreeElement): void {\n if (this.virtualScroll) this.updateVisibleData();\n\n this.mbsClick.emit({ event, item: item.node });\n }\n\n getFlatNodeAndSubject(nestedItem: TreeElement): { flatNode: FlatTreeElement; subject: Subject } {\n this.loadingSubtree = true;\n\n const subject: Subject = new Subject();\n const flatNode = this.getFlatByNested(nestedItem);\n\n if (flatNode?.node) flatNode.node.loadingChildren = true;\n\n return { flatNode, subject };\n }\n\n endUpdateTreeElements(nestedItem: TreeElement, flatNode: FlatTreeElement, subject: Subject, event: MouseEvent): void {\n nestedItem.loadingChildren = false;\n\n if (flatNode) flatNode.node = nestedItem;\n\n this.data = cloneDeep(this.data);\n\n const flatSubtree = this.flatData.filter((flatItem) => flatItem.node.parent && flatItem.node.parent.id === nestedItem.id);\n const root = this.getFlatByNested(nestedItem);\n\n if (root) this.handleGotSubtree(root, flatSubtree, true, event);\n\n this.loadingSubtree = false;\n\n if (root) subject.next(root.node);\n }\n\n handleClickLoadMore(nestedItem: TreeElement, event: MouseEvent, isNotLazy = false): void {\n event?.stopPropagation();\n\n const { flatNode, subject } = this.getFlatNodeAndSubject(nestedItem);\n const loadMore = isNotLazy ? this.loadMoreNotLazy : this.loadMore;\n\n loadMore(nestedItem)\n .pipe(filter(Boolean), untilDestroyed(this))\n .subscribe({\n next: (subtree: TreeElement[]) => {\n subtree.forEach((child) => (child.parent = nestedItem));\n\n nestedItem.children = unionBy(nestedItem.children, subtree, 'id');\n nestedItem.isLoadMore = true;\n\n this.endUpdateTreeElements(nestedItem, flatNode, subject, event);\n },\n error: () => {\n this.loadingSubtree = false;\n flatNode.node.loadingChildren = false;\n }\n });\n }\n\n getSubtree(nestedItem: TreeElement, forceToggle?: boolean, event?: MouseEvent): Observable {\n const { flatNode, subject } = this.getFlatNodeAndSubject(nestedItem);\n\n if (this.clickEmitBeforeLoad) this.mbsPreClick.emit({ event, item: nestedItem });\n\n this.getItems(nestedItem)\n .pipe(filter(Boolean), untilDestroyed(this))\n .subscribe(\n (subtree: TreeElement[]) => {\n subtree.forEach((child) => (child.parent = nestedItem));\n\n nestedItem.children = subtree;\n nestedItem.gotChildren = true;\n\n this.endUpdateTreeElements(nestedItem, flatNode, subject, event);\n },\n () => {\n this.loadingSubtree = false;\n flatNode.node.loadingChildren = false;\n }\n );\n\n return subject.asObservable();\n }\n\n handleClickItem(flatNode: FlatTreeElement, event: MouseEvent, forceToggle: boolean): void {\n event?.stopPropagation();\n\n if (!this.lazy || flatNode.node.gotChildren) {\n if ((this.toggleOnClick || forceToggle) && (this.closeOnClick || !flatNode.node.expanded || forceToggle)) {\n this.toggle(flatNode.node);\n }\n\n this.handleClick(event, flatNode);\n } else {\n this.getSubtree(flatNode.node, forceToggle, event);\n }\n }\n\n handleGotSubtree(root: FlatTreeElement, subtree: FlatTreeElement[], forceToggle?: boolean, event?: MouseEvent): void {\n if ((this.toggleOnClick || forceToggle) && (this.closeOnClick || !root.node.expanded || forceToggle)) {\n root.node.expanded = true;\n }\n\n this.handleClick(event, root);\n\n if (this.mode === 'checkbox' && this.recursiveCheck) {\n this.updateChildren(root.node.checked, root);\n }\n\n if (this.mode === 'file' && this.recursiveCheck) {\n this.updateFileChildren(root);\n }\n\n if (this.mode === 'checkbox' || this.mode === 'file') {\n this.bubbleStateToRoot(subtree[0]);\n }\n\n /**\n * If you have performance issues with \"Load more\", try ignoring the \"this.cdRef.detectChanges()\" for your mod.\n * Just check all cases of interaction with the tree for functionality.\n * */\n if (this.mode !== 'text') this.cdRef.detectChanges();\n }\n\n updateFileChildren(root: FlatTreeElement): void {\n const treeItems = this.treeControl.getDescendants(root);\n const allChecked = root.node?.onlyOneSelect ? treeItems.every((i) => i.node.checked) : false;\n\n treeItems.forEach((child) => {\n child.node.indeterminate = root.node?.onlyOneSelect ? false : root.node.indeterminate && child.node.indeterminate;\n child.node.checked =\n (root.node.checked || root.node.indeterminate) &&\n (!root.node?.onlyOneSelect ? child.node.checked : allChecked ? child?.node?.id === root.node?.children[0].id : child.node.checked);\n });\n }\n\n isDisabled(item: FlatTreeElement): boolean {\n if (!this.disableChildren) return false;\n\n const parent = this.findParent(item);\n\n return parent && !parent.node.checked;\n }\n\n updateChildren(event: boolean, node: FlatTreeElement, selectedItem: FlatTreeElement = null): void {\n if (this.recursiveCheck) {\n if (selectedItem) {\n this.treeControl.getDescendants(node).forEach((child) => {\n child.node.indeterminate = false;\n child.node.checked =\n event &&\n (child.node.id === selectedItem.node.id ||\n (selectedItem.node.children && selectedItem.node.children.length\n ? child.node.id === selectedItem.node.children[0].id\n : false));\n });\n } else {\n this.treeControl.getDescendants(node).forEach((child) => {\n child.node.indeterminate = false;\n child.node.checked = event && (!child.node?.parent?.onlyOneSelect || child?.node?.id === child.node?.parent?.children[0].id);\n });\n }\n }\n }\n\n handleCheck(event: boolean, item: FlatTreeElement): void {\n if (event) {\n if (this.onlyOneSelect) {\n this.uncheckAllElements();\n }\n\n const parent = this.findParent(item);\n\n if (parent && parent.node.onlyOneSelect) {\n this.updateChildren(event, parent, item);\n }\n }\n\n item.node.checked = event;\n\n if (this.mode !== 'file' || !event || this.recursiveCheck) {\n item.node.indeterminate = false;\n } else {\n this.updateParentNode(item, true);\n }\n\n if (item.node.onlyOneSelect) {\n this.updateChildren(event, item, item);\n } else {\n this.updateChildren(event, item);\n }\n\n this.bubbleStateToRoot(item, true);\n this.mbsChange.emit(item.node);\n }\n\n uncheckAllElements(): void {\n this.flatData.forEach((el) => {\n if (el.node.checked || el.node.indeterminate) {\n el.node.checked = false;\n el.node.indeterminate = false;\n this.updateChildren(false, el);\n }\n });\n }\n\n private bubbleStateToRoot(node: FlatTreeElement, needCheck = false): void {\n if (isNil(node) || node.level === 0 || (!this.recursiveCheck && this.mode !== 'file')) return;\n const parent = this.findParent(node);\n this.updateParentNode(parent, needCheck);\n if (parent.level !== 0) {\n this.bubbleStateToRoot(parent);\n }\n }\n\n updateParentNode(parent: FlatTreeElement, needCheck = false) {\n const children = this.getChildren(parent);\n const same = children.every(\n (child: FlatTreeElement) => !child.node.indeterminate && !!child.node.checked === !!children[0].node.checked\n );\n\n if (this.mode !== 'file') {\n if (same) {\n parent.node.checked = children[0].node.checked;\n parent.node.indeterminate = false;\n } else {\n parent.node.indeterminate = true;\n }\n } else {\n this.updateParentFileNode(parent, children, same, needCheck);\n }\n }\n\n // eslint-disable-next-line sonarjs/cognitive-complexity\n updateParentFileNode(parent: FlatTreeElement, children: FlatTreeElement[], same: boolean, needCheck = false) {\n const childrenChecked = children?.length && children[0].node.checked;\n\n if (parent.node.onlyOneSelect || this.onlyOneSelect) {\n parent.node.checked = !same || (children?.length === 1 && childrenChecked);\n } else if (this.offCheckAndIndeterminate || (needCheck && same && childrenChecked)) {\n parent.node.checked = same && childrenChecked;\n }\n\n parent.node.indeterminate = same\n ? children.length && (parent.node.checked ? !this.offCheckAndIndeterminate && !children[0].node.checked : children[0].node.checked)\n : !this.offCheckAndIndeterminate || (!parent.node.checked && parent.node.children.some((c) => c.checked || c.indeterminate));\n }\n\n private getChildren(node: FlatTreeElement): FlatTreeElement[] {\n const currentIndex = this.flatData.findIndex((item) => item.node[this.findKey] === node.node[this.findKey]) + 1;\n const children: FlatTreeElement[] = [];\n\n for (let i = currentIndex; i < this.flatData.length; i++) {\n if (this.flatData[i].level - node.level === 1) {\n children.push(this.flatData[i]);\n }\n\n if (this.flatData[i].level <= node.level) {\n break;\n }\n }\n\n return children;\n }\n\n private findParent(node: FlatTreeElement): FlatTreeElement {\n let currentIndex = this.flatData.findIndex((item) => item.node[this.findKey] === node.node[this.findKey]) - 1;\n\n while (currentIndex >= 0) {\n if (this.flatData[currentIndex].level < node.level) {\n return this.flatData[currentIndex];\n }\n\n currentIndex--;\n }\n\n return null;\n }\n\n needToRender(item: FlatTreeElement): boolean {\n if (item.level === 0) {\n return true;\n }\n\n const parent = this.findParent(item);\n\n if (isNil(parent?.node?.expanded) && this.#expandAll) {\n return true;\n }\n\n return parent?.node?.expanded && this.needToRender(parent);\n }\n\n /**\n * Set item's selected state into given state;\n * @param {boolean} state\n * @param {TreeElement} item\n */\n doSelect(state: boolean, item: TreeElement): void {\n const flatNode = this.flatData.find((flatNode) => item[this.findKey] === flatNode.node[this.findKey]);\n\n if (flatNode?.node) {\n flatNode.node.selected = state;\n }\n }\n\n /**\n * Return all currently selected items in one array;\n * @return {TreeElement[]}\n */\n getSelected(): TreeElement[] {\n return this.flatData.filter((item) => item.node.selected).map((item) => item.node);\n }\n\n /**\n * Find and mark as selected `TreeItem` with `findKey` equals `value`;\n * Then expand all parents of element that was found.\n * @param {any} value\n * @return {TreeElement}\n */\n findAndSelect(value: any): TreeElement {\n const flatNode = this.flatData.find((node) => node.node[this.findKey] === value);\n\n if (isNil(flatNode)) return null;\n\n flatNode.node.selected = true;\n let parent = this.findParent(flatNode);\n\n while (parent) {\n this.expand(parent.node);\n parent = this.findParent(parent);\n }\n\n if (this.virtualScroll) {\n this.updateVisibleData();\n }\n\n this.cdRef.detectChanges();\n\n return flatNode.node;\n }\n\n goToItem(item: TreeElement): void {\n if (this.virtualScroll) {\n const findIndex = this.visibleFlatData.findIndex((flatNode) => flatNode.node.id === item.id);\n\n this.virtualViewport.scrollToIndex(findIndex);\n } else {\n const findIndex = this.flatData.findIndex((node) => node.node[this.findKey] === item.id);\n const treeNativeElement = this.mbsTree.nativeElement;\n\n if (treeNativeElement && findIndex >= 0) {\n const treeNativeItems = treeNativeElement.getElementsByClassName('mbs-tree_item');\n const nativeElement = treeNativeItems[findIndex];\n\n nativeElement?.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });\n }\n }\n }\n\n getItemById(id): TreeElement {\n return this.flatData.find((flatNode) => flatNode.node.id === id)?.node;\n }\n\n /**\n * Find all Tree nodes according to predicate;\n * @param {Function} predicate\n * @param {TreeElement[]} childrenArray\n * @return {TreeElement[]}\n */\n findAll(predicate: (node: TreeElement) => boolean, childrenArray: TreeElement[] = this.#nestedData): TreeElement[] {\n let found: TreeElement[] = [];\n\n for (const node of childrenArray) {\n if (predicate(node)) {\n found.push(node);\n }\n\n if (node.children?.length > 0) {\n found = found.concat(this.findAll(predicate, node.children));\n }\n }\n\n return found;\n }\n\n /**\n * Find all Tree nodes according to predicate and select them;\n * @param {Function} predicate\n * @return {TreeElement[]}\n */\n findAndSelectAll(predicate: (item: TreeElement) => boolean): TreeElement[] {\n const found = this.findAll(predicate);\n\n if (found.length === 0) return null;\n\n const flatFound = this.flatData.filter((node) => found.some((item) => item[this.findKey] === node.node[this.findKey]));\n\n flatFound.forEach((item: FlatTreeElement) => {\n item.node.selected = true;\n let parent = this.findParent(item);\n\n while (parent) {\n parent.node.expanded = true;\n parent = this.findParent(parent);\n }\n });\n\n if (this.virtualScroll) {\n this.updateVisibleData();\n }\n\n this.cdRef.detectChanges();\n\n return found;\n }\n\n /**\n * Reset selection;\n */\n resetSelection(): void {\n this.flatData.forEach((item) => (item.node.selected = false));\n this.cdRef.detectChanges();\n }\n\n /**\n * Select all Tree nodes, that currently are in the tree.\n * Nodes that will be lazy requested will not be selected;\n */\n public selectAll(): void {\n this.flatData.forEach((item) => (item.node.selected = true));\n this.cdRef.detectChanges();\n }\n\n /**\n * Set node's `checked` into given state. If `recursiveCheck` is `true` (or `dontSelectChildren` is `false`) - also checks all children of given node\n * and checks parent node's `indeterminate` status;\n *\n * @param {TreeElement} item\n * @param {boolean} state\n */\n public checkItem(item: TreeElement, state: boolean): void {\n item.checked = state;\n\n const index = this.flatData.findIndex((node) => node.node[this.findKey] === item[this.findKey]);\n\n this.flatData[index].node.checked = state;\n\n if (this.recursiveCheck) {\n for (let i = index + 1; i < this.flatData.length; i++) {\n if (this.flatData[i].level > this.flatData[index].level) {\n this.flatData[i].node.checked = state;\n } else {\n break;\n }\n }\n\n this.checkParentState(item);\n }\n\n this.cdRef.detectChanges();\n }\n\n /**\n * Sets given item's parents into right `indeterminate` and `checked` state; according to children states.\n * @param {TreeElement} node\n */\n public checkParentState(node: TreeElement): void {\n const flatNode = this.flatData.find((item) => item.node[this.findKey] === node[this.findKey]);\n\n this.bubbleStateToRoot(flatNode);\n this.cdRef.detectChanges();\n }\n\n /**\n * Same as `checkParentState` but for a whole tree.\n */\n checkIndeterminate(): void {\n const leafArray = this.flatData.filter((item) => {\n return isNil(item.node.children) || item.node.children.length === 0;\n });\n\n leafArray.forEach((item) => {\n this.bubbleStateToRoot(item);\n });\n }\n\n getFlatByNested(nestedItem: TreeElement): FlatTreeElement {\n return this.flatData.find((flat) => flat.node[this.findKey] === nestedItem[this.findKey]);\n }\n\n expand(item: TreeElement): void {\n const flatNode = this.getFlatByNested(item);\n\n if (!isNil(flatNode)) {\n flatNode.node.expanded = true;\n\n if (this.virtualScroll) {\n this.updateVisibleData();\n }\n\n this.cdRef.detectChanges();\n }\n }\n\n collapse(item: TreeElement): void {\n const flatNode = this.getFlatByNested(item);\n\n if (!isNil(flatNode)) {\n flatNode.node.expanded = false;\n\n if (this.virtualScroll) {\n this.updateVisibleData();\n }\n\n this.cdRef.detectChanges();\n }\n }\n\n toggle(item: TreeElement): void {\n const flatNode = this.getFlatByNested(item);\n\n if (!isNil(flatNode)) {\n flatNode.node.expanded = !flatNode.node.expanded;\n\n if (this.virtualScroll) {\n this.updateVisibleData();\n this.cdRef.detectChanges();\n } else if (item.totalChildren === -1 || item.totalChildren === Number.MAX_SAFE_INTEGER) this.cdRef.markForCheck();\n else this.cdRef.detectChanges();\n }\n }\n}\n","import { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CdkTreeModule } from '@angular/cdk/tree';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\nimport { ButtonModule } from '../button/button.module';\nimport { CheckboxModule } from '../form/checkbox/checkbox.module';\nimport { TreeAppendDirective } from './directives/treeAppend.directive';\nimport { TreeElementDirective } from './directives/treeElement.directive';\nimport { TreeLoadMoreDirective } from './directives/treeLoadMore.directive';\nimport { TreeLoadMorePipe } from './pipes/treeLoadMore.pipe';\nimport { TreeComponent } from './tree.component';\n\n@NgModule({\n imports: [CommonModule, CheckboxModule, FormsModule, ButtonModule, ScrollingModule, CdkTreeModule, NgbTooltipModule],\n declarations: [TreeComponent, TreeElementDirective, TreeAppendDirective, TreeLoadMoreDirective, TreeLoadMorePipe],\n exports: [TreeComponent, TreeElementDirective, TreeAppendDirective, TreeLoadMoreDirective, TreeLoadMorePipe]\n})\nexport class TreeModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { I18NextPipe } from 'angular-i18next';\n\nconst secsInDay = 86400;\nconst secsInHour = 3600;\nconst secsInMinute = 60;\n\nconst formatWithLeadingZero = (val: number) => val.toString().padStart(2, '0');\n\n@Pipe({\n name: 'convertSeconds',\n pure: true,\n standalone: true\n})\nexport class ConverterSecondsPipe implements PipeTransform {\n constructor(private i18n: I18NextPipe) {}\n\n transform(secs: number): string {\n const days = Math.floor(secs / secsInDay);\n const hours = Math.floor((secs % secsInDay) / secsInHour);\n const minutes = Math.floor((secs % secsInHour) / secsInMinute);\n const seconds = secs % secsInMinute;\n\n let result = '';\n\n if (days > 0) {\n result += `${days + this.i18n.transform('mbs-ui-kit:time.days')} `;\n }\n\n if (hours > 0 || days > 0) {\n result += `${formatWithLeadingZero(hours) + this.i18n.transform('mbs-ui-kit:time.hours')} `;\n }\n\n if (minutes > 0 || hours > 0 || days > 0) {\n result += `${formatWithLeadingZero(minutes) + this.i18n.transform('mbs-ui-kit:time.minutes')} `;\n }\n\n if (hours === 0 && days === 0) {\n result += `${formatWithLeadingZero(seconds) + this.i18n.transform('mbs-ui-kit:time.seconds')}`;\n }\n\n return result.trim();\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml, SafeResourceUrl, SafeScript, SafeStyle, SafeUrl } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safe'\n})\nexport class SafePipe implements PipeTransform {\n constructor(protected sanitizer: DomSanitizer) {}\n\n public transform(value: string, type: string): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\n switch (type) {\n case 'html':\n return this.sanitizer.bypassSecurityTrustHtml(value);\n case 'style':\n return this.sanitizer.bypassSecurityTrustStyle(value);\n case 'script':\n return this.sanitizer.bypassSecurityTrustScript(value);\n case 'url':\n return this.sanitizer.bypassSecurityTrustUrl(value);\n case 'resourceUrl':\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\n default:\n throw new Error(`Invalid safe type specified: ${type}`);\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { formatBytes } from '../index';\nimport { isNil } from 'lodash';\n\n@Pipe({ name: 'size' })\nexport class SizeConverterPipe implements PipeTransform {\n transform(bytes: number, params: { decimals?: number; placeholder?: string } = {} ): string {\n const { decimals = 2, placeholder = 'Unlimited' } = params;\n\n if (isNil(bytes)) return placeholder;\n\n if (bytes === 0) return '0';\n\n return formatBytes(bytes, decimals);\n }\n}\n","export const IntMaxValue = 2147483647;\nexport const TimeSpanMaxValue = '10675199.02:48:05.4775807';\nexport const MaxFileSizeForBackend = '9223372036854775807';\nexport const MaxFileSizeStrFormat = '9223372036854776000';\nexport const MaxTicks = '9223372036854776000';\nexport const TimeSpanZeroValue = '00:00:00';\nexport const GuidEmpty = '00000000-0000-0000-0000-000000000000';\nexport const GuidNotEmpty = '00000000-0000-0000-0000-000000000001';\nexport const GuidDirectAccessVSS = 'b5946137-7b9f-4925-af80-51abd60b20d5';\nexport const EMAIL_REGEXP = '^[a-zA-Z0-9._+-]*[a-zA-Z0-9]+[a-zA-Z0-9._+-]*@[a-zA-Z0-9._-]*[a-zA-Z0-9]+[a-zA-Z0-9._-]*\\\\.[a-zA-Z0-9]+$';\nexport const HOME_EMAIL_REGEXP =\n /^[a-zA-Z0-9._+-]*[a-zA-Z0-9]+[a-zA-Z0-9._+-]*@[a-zA-Z0-9._-]*[a-zA-Z0-9]+[a-zA-Z0-9._-]*\\.[a-zA-Z0-9]+(\\(MSFT\\)|\\(archive\\)|\\(deleted(\\d?)+\\))?$/;\nexport const validateIPV4Regex =\n /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(:[0-9]+)?$/;\nexport const validateIPV6Regex =\n /(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))/;\nexport const validateWhitespace = /^\\S([\\s\\S]*?)\\S$/;\nexport const TIME_12_FORMAT_WITHOUT_SECONDS_REGEXP = /(^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]) ([AaPp][Mm])/;\nexport const TIME_24_FORMAT_WITHOUT_SECONDS_REGEXP = /^(2[0-3]|[01][0-9]):([0-5][0-9])$/;\nexport const pad = (i: number): string => (i < 10 ? `0${i}` : `${i}`);\nexport const DNS_REGEX = /^[a-zA-Z0-9]+([.-]{1}[a-zA-Z0-9]+)*\\.[a-zA-Z]+$/;\nexport const ALIAS_REGEX = /^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9-]*[A-Za-z0-9])$/;\nexport const ALIAS_TEXT_REGEX = /^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9]*[a-zA-Z0-9])*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9]*[A-Za-z0-9])$/;\nexport const DOMAIN_REGEX =\n /^([a-zA-Z0-9][a-zA-Z0-9-_@]{0,61}[a-zA-Z0-9]{1}\\.)+([a-zA-Z]{1,15}|[a-zA-Z0-9-]{1,30}\\.[a-zA-Z]{2,3})(\\(MSFT\\))?$/;\nexport const getComposedRegex = (...regexes) => new RegExp(regexes.map((regex) => regex.source).join('|'));\nexport const BREAKS_REGEX = new RegExp(/\\r?\\n|\\r/g);\nexport const SPACES_REGEX = new RegExp(/[\\s]+/g);\nexport const SPACE_REGEX = new RegExp(/\\s/g);\nexport const COMMAS_REGEX = new RegExp(/,/g);\n","import { isString } from 'lodash';\n\nconst k = 1024;\nconst sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] as const;\nexport type Size = typeof sizes[number];\nexport function bytesFrom(type: Size): number {\n return Math.pow(k, sizes.indexOf(type));\n}\n\nexport function formatBytes(bytes: number, decimals = 2): string {\n if (bytes === 0) return `0 ${sizes[0]}`;\n else if (bytes === undefined || isNaN(bytes) || isString(bytes)) {\n console.error(`[format size pipe] Can't format \"${String(bytes)}\" to bytes. Invalid data type.`);\n return 'NaN';\n }\n\n const dm = decimals < 0 ? 0 : decimals;\n\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;\n}\n","import { Injectable } from '@angular/core';\nimport { Tagged } from './types';\n\nexport type EnumToSelectItem = { value: number; label: string | number };\n\nconst StringIsNumber = value => isNaN(Number(value)) === false;\n\n@Injectable()\nexport class EnumHelper {\n static EnumToArray(enumm: T): string[] {\n return Object.keys(enumm)\n .filter(StringIsNumber)\n .map(x => enumm[x] as string);\n }\n\n static EnumToSelectArray(enumm: T, displayEnumm: D): Array<{ value: string; label: string | number }> {\n return Object.keys(enumm)\n .filter(StringIsNumber)\n .map(x => {\n return { value: enumm[x] as string, label: displayEnumm[x] as string | number };\n });\n }\n\n /** Returns array for ng-select elements where \"value\" is enum element's number\n * and \"label\" is display name for that enum element\n * @param {T} enumm Enum\n * @param {D} displayEnumm Display enum\n * @param {T[]} orderArray An array of enum elements to sort\n * @return {Array<{ value: number, label: string }>}\n */\n static EnumToSelectIndexesArray(enumm: T, displayEnumm: D = null, orderArray: number[] = null): Array {\n const result = Object.keys(enumm)\n .filter(StringIsNumber)\n .map(x => {\n return {\n value: Number(x),\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n label: (displayEnumm !== null ? displayEnumm[x] || displayEnumm[enumm[x]] : enumm[x]) as string | number\n };\n });\n return orderArray ? result.sort((first, second) =>\n orderArray.findIndex((type) => type === first.value) < orderArray.findIndex((type) => type === second.value) ? -1 : 1\n ) : result;\n }\n\n static HasFlag(value: T, enumm: T): boolean {\n return Boolean(enumm & value);\n }\n}\n","export enum DateFormat {\n short = 'MMM d, y, h:mm a',\n shortTimeZone = 'MMM d, y, h:mm a z',\n medium = 'MMM d, y, h:mm:ss a',\n shortDate = 'M/d/yy',\n mediumDate = 'MMM d, y',\n shortTime = 'h:mm a',\n mediumTime = 'h:mm:ss a',\n shortMonth = 'MMM, y',\n longMonth = 'MMMM, y'\n}\n","export enum KeyEventEnum {\n Enter = 'Enter',\n Esc = 'Escape'\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractControl, FormArray, FormGroup } from '@angular/forms';\n\n@Injectable()\nexport class FormsUtil {\n public static triggerValidation(control: AbstractControl) {\n if (control instanceof FormGroup) {\n for (const field in control.controls) {\n if(!Object.prototype.hasOwnProperty.call(control.controls, field)) continue;\n const c = control.controls[field];\n\n this.triggerValidation(c);\n }\n } else if (control instanceof FormArray) {\n for (const items of control.controls) {\n this.triggerValidation(items);\n }\n }\n\n if (control.validator) {\n const errors = control.validator(control);\n if (errors && Object.getOwnPropertyNames(errors).length > 0) {\n control.updateValueAndValidity({ onlySelf: false });\n control.markAsDirty();\n control.markAsTouched();\n }\n }\n }\n}\n","export function naturalSort(as, bs): number {\n let a: string | RegExpMatchArray;\n let b: string | RegExpMatchArray;\n let a1: string;\n let b1: string;\n\n const rx = /(\\d+)|(\\D+)/g;\n const rd = /\\d/;\n const rz = /^0/;\n\n if (typeof as == 'number' || typeof bs == 'number') {\n if (isNaN(as as number)) return 1;\n if (isNaN(bs as number)) return -1;\n\n return as - bs;\n }\n\n a = String(as).toLowerCase();\n b = String(bs).toLowerCase();\n\n if (a === b) return 0;\n if (!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\n\n a = a.match(rx);\n b = b.match(rx);\n\n while (a.length && b.length) {\n a1 = a.shift();\n b1 = b.shift();\n\n if (a1 !== b1) {\n if (rd.test(a1) && rd.test(b1)) {\n return Number(a1.replace(rz, '.0')) - Number(b1.replace(rz, '.0'));\n } else return a1 > b1 ? 1 : -1;\n }\n }\n\n return a.length - b.length;\n}\n","export function removeSelection() {\n if (window.getSelection) {\n const selection = window.getSelection();\n\n if (selection.removeAllRanges) {\n selection.removeAllRanges();\n }\n }\n}\n","import { MbsSize } from './mbs-size-enum';\n\nexport enum MbsLabelSize {\n xxs = MbsSize.xxs,\n xs = MbsSize.xs,\n md = MbsSize.md,\n sm = MbsSize.sm,\n lg = MbsSize.lg,\n inherit = MbsSize.inherit\n}\n","export enum MbsPopupType {\n success = 'success',\n danger = 'danger',\n info = 'info',\n warning = 'warning'\n}\n\nexport enum MbsPopupIcon {\n danger = 'fa fa-exclamation-circle',\n info = 'fa fa-info-circle',\n success = 'fa fa-check-circle',\n warning = 'fa fa-exclamation-triangle'\n}\n","export enum MbsSize {\n xxs = 'xxs',\n xs = 'xs',\n sm = 'sm',\n md = 'md',\n lmd = 'lmd',\n xmd = 'xmd',\n lg = 'lg',\n xl = 'xl',\n inherit = 'inherit'\n}\n","export enum MbsType {\n primary = 'primary',\n secondary = 'secondary',\n success = 'success',\n info = 'info',\n warning = 'warning',\n danger = 'danger',\n dark = 'dark',\n light = 'light',\n brand = 'brand',\n muted = 'muted',\n disabled = 'disabled'\n}\n","export enum TextBreak {\n header = 'header',\n content = 'content',\n both = 'both',\n none = 'none'\n}\n","export enum KeyCode {\n Enter = 13,\n BackSpace = 8\n}\n","import { ElementRef } from '@angular/core';\n\nexport function host(element: ElementRef): HTMLElement {\n return element.nativeElement as HTMLElement;\n}\n","import { TemplateRef } from '@angular/core';\n\nexport function isTemplate(object: any): boolean {\n return object instanceof TemplateRef;\n}\n","import { Injectable } from '@angular/core';\nimport {\n AbstractControl,\n AsyncValidatorFn,\n FormArray,\n FormControl,\n FormGroup,\n ValidationErrors,\n ValidatorFn,\n Validators\n} from '@angular/forms';\nimport { map, Observable, of } from 'rxjs';\nimport {\n ALIAS_REGEX,\n ALIAS_TEXT_REGEX,\n BREAKS_REGEX,\n COMMAS_REGEX,\n DNS_REGEX,\n DOMAIN_REGEX,\n EMAIL_REGEXP,\n getComposedRegex,\n SPACES_REGEX,\n TIME_24_FORMAT_WITHOUT_SECONDS_REGEXP,\n validateIPV4Regex\n} from './constants';\nimport { bytesFrom, Size } from './converter';\n\n/**\n * const errors for other reusing\n */\nexport const constErrors = {\n TIME_VALIDATION_ERROR: 'Invalid time format'\n};\n\ninterface PasswordCheckService {\n checkPasswordStrength: (password: string) => Observable<{ result: boolean; message: string; suggestions?: string[] }>;\n}\n\n/**\n * Validators with message based angular/Validators (https://angular.io/guide/form-validation)\n */\n@Injectable()\nexport class MbsValidators {\n public static validatorMessages = {\n min: (min: { min: number; actual: number }): string => {\n return `This field value is too small (min ${min.min})`;\n },\n max: (max: { max: number; actual: number }): string => {\n return `This field value is too big (max ${max.max})`;\n },\n email: (): string => {\n return `The email address is not valid`;\n },\n minlength: (minlength: { requiredLength: number; actualLength: number }): string => {\n return `At least ${minlength.requiredLength} symbols required`;\n },\n maxlength: (maxlength: { requiredLength: number; actualLength: number }): string => {\n return `This field is too long (max length ${maxlength.requiredLength})`;\n },\n maxlengthPassword: (maxlength: { requiredLength: number; actualLength: number }): string => {\n return `The password is too long (max length ${maxlength.requiredLength} characters)`;\n },\n minlengthPassword: (minlength: { requiredLength: number; actualLength: number }): string => {\n return `The password is too short (min length ${minlength.requiredLength} characters)`;\n },\n pattern: (): string => {\n return `This field is not valid`;\n },\n time: (): string => {\n return constErrors.TIME_VALIDATION_ERROR;\n },\n mustMatch: (): string => {\n return `Fields don't match`;\n },\n mustNotMatch: (): string => {\n return `Fields cannot be equal`;\n },\n portValidator: (): string => {\n return `Can't be set value more than 65535`;\n },\n dnsMatch: (): string => {\n return `The DNS is not valid`;\n },\n aliasMatch: (): string => {\n return `Only case-sensitive combination of Latin letters and digits is supported`;\n },\n domainNameMatch: (): string => {\n return `The domain name is not valid`;\n }\n };\n\n public static whitespaceValidator(control: AbstractControl): ValidationErrors | null {\n if (control.value && (/^\\s+/.test(control.value as string) || /\\s+$/.test(control.value as string))) {\n return { whitespace: { message: 'The field value cannot start and/or end with a space' } };\n }\n\n return null;\n }\n\n public static angleBracketsValidator(control: AbstractControl): ValidationErrors | null {\n if(control.value && /[<>]/.test(control.value)){\n return { angleBrackets: { message: 'Value should not contain angle brackets'} }\n }\n return null\n }\n\n public static emailValidator(control: AbstractControl): ValidationErrors | null {\n if (new RegExp(EMAIL_REGEXP).test(control.value as string)) {\n return null;\n }\n\n return { email: { message: MbsValidators.validatorMessages.email() } };\n }\n\n public static IPAddressValidator(control: AbstractControl): ValidationErrors | null {\n if (new RegExp(validateIPV4Regex).test(control.value as string)) {\n return null;\n }\n\n return { pattern: { message: MbsValidators.validatorMessages.pattern() } };\n }\n public static fileSizeValidator(maxfileSize: string) {\n return function (control: FormControl): { [key: string]: any } | null {\n const fileList: FileList = control.value as FileList;\n\n if (fileList && fileList.length) {\n const sizeText = maxfileSize.split(/\\d+/).pop() || 'kb';\n const sizeNum = +maxfileSize.split(/\\D+/).shift() || 500;\n const file = fileList[0];\n const size = sizeText.toUpperCase() as Size;\n const fileSize = +(file.size / bytesFrom(size)).toFixed(2);\n\n return fileSize > sizeNum ? { fileSizeValidator: { message: `Max file size ${maxfileSize}.` } } : null;\n }\n\n return null;\n };\n }\n\n public static dimensionValidator(settings: { maxWidth: number; maxHeight: number }): AsyncValidatorFn {\n return (control: AbstractControl): Observable => {\n const fileList: FileList = control.value as FileList;\n\n if (fileList?.length) {\n const fileReader = new FileReader();\n\n fileReader.readAsDataURL(fileList[0]);\n fileReader.onload = () => {\n const image = new Image();\n\n image.src = fileReader.result as string;\n image.onload = () => {\n const testResult = image.width <= settings.maxWidth && image.height <= settings.maxHeight;\n\n if (testResult) {\n return of({\n dimensionValidator: {\n message: `The image width and height should not be more than: ${settings.maxWidth} and ${settings.maxHeight}.`\n }\n });\n } else {\n return of(null);\n }\n };\n };\n }\n\n return of(null);\n };\n }\n\n public static passwordValidator(control: AbstractControl): ValidationErrors | null {\n const errors = Validators.compose([Validators.required, Validators.minLength(7), Validators.pattern('\\\\S+')])(control);\n\n if (!errors) return null;\n\n if (errors.minlength) {\n return {\n minLength: {\n message: MbsValidators.validatorMessages.minlength(errors.minlength as { requiredLength: number; actualLength: number })\n }\n };\n }\n\n if (errors.pattern) {\n return { pattern: { message: 'Password should not contain whitespace' } };\n }\n\n if (errors.required) {\n return { required: { message: '' } };\n }\n\n return null;\n }\n\n public static passwordStrengthValidator(passwordCheckService: PasswordCheckService, fakePassword = ''): AsyncValidatorFn {\n return (control: AbstractControl): Observable => {\n if (!control.value || control.value === fakePassword) {\n return of(null) as Observable;\n }\n\n return passwordCheckService.checkPasswordStrength(control.value as string).pipe(\n map((data) => {\n const newErrors: ValidationErrors = {};\n\n if (data.result) {\n const errorKeys = control.errors ? Object.keys(control.errors) : [];\n const filteredKeys = errorKeys.filter((key) => !key.includes('passwordStrengthError'));\n\n if (errorKeys.length && filteredKeys.length) {\n errorKeys.forEach((key) => {\n if (!key.includes('passwordStrengthError')) newErrors[key] = control.errors[key];\n });\n\n return newErrors;\n }\n\n return null;\n }\n\n if (data?.suggestions?.length) {\n data.suggestions.forEach((err, idx) => {\n newErrors['passwordStrengthError' + idx] = { message: err };\n });\n } else newErrors.passwordStrengthError = { message: data.message };\n\n return newErrors;\n })\n );\n };\n }\n\n public static createPasswordValidator(settings: { minlength?: number; maxlength?: number; pattern?: string | RegExp }): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const ValidatorsArray: ValidatorFn[] = [];\n\n if (!settings) return null;\n if (settings.minlength) ValidatorsArray.push(Validators.minLength(settings.minlength));\n if (settings.maxlength) ValidatorsArray.push(Validators.maxLength(settings.maxlength));\n if (settings.pattern) ValidatorsArray.push(Validators.pattern(settings.pattern));\n\n const errors: ValidationErrors = Validators.compose(ValidatorsArray)(control);\n\n if (!errors) return null;\n\n if (errors.minlength)\n return {\n minLength: {\n message: MbsValidators.validatorMessages.minlengthPassword(errors.minlength as { requiredLength: number; actualLength: number })\n }\n };\n\n if (errors.maxlength)\n return {\n maxLength: {\n message: MbsValidators.validatorMessages.maxlengthPassword(errors.maxlength as { requiredLength: number; actualLength: number })\n }\n };\n\n if (errors.pattern) return { pattern: { message: 'Password should not contain whitespace' } };\n\n if (errors.required) return { required: { message: '' } };\n\n return null;\n };\n }\n\n public static triggerValidation(control: AbstractControl) {\n if (control instanceof FormGroup) {\n for (const field in control.controls) {\n if (!Object.prototype.hasOwnProperty.call(control.controls, field)) continue;\n\n const c = control.controls[field];\n\n this.triggerValidation(c);\n }\n } else if (control instanceof FormArray) {\n for (const items of control.controls) {\n this.triggerValidation(items);\n }\n }\n\n if (control.validator) {\n const errors = control.validator(control);\n\n if (errors && Object.getOwnPropertyNames(errors).length > 0) {\n control.updateValueAndValidity({ onlySelf: false });\n control.markAsDirty();\n control.markAsTouched();\n }\n }\n }\n\n public static extensionValidator(extensionsArray: string[]): any {\n return (control: AbstractControl): { [key: string]: any } => {\n if (control.value) {\n let testResult = true;\n let extension = '';\n let file: File;\n\n for (file of control.value) {\n const splitText: string[] = file.name.split('.');\n extension = splitText[splitText.length - 1];\n const result = extensionsArray.find((t) => extension.toLowerCase() == t.toLowerCase());\n\n if (!result) {\n testResult = false;\n break;\n }\n }\n\n if (!testResult) {\n return {\n forbiddenFileType: {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n value: control.value,\n message: `Forbidden file type! Only \"${extensionsArray.join(', ')}\" available`\n }\n };\n } else {\n return null;\n }\n } else {\n return null;\n }\n };\n }\n\n public static allowedFileType(allowedTypes: string[], customMessage?: string): ValidatorFn {\n return (control: AbstractControl): { [key: string]: any } | null => {\n if (control.value) {\n let forbidden = false;\n\n /* `file` is a native js File. See File Web API (https://developer.mozilla.org/en-US/docs/Web/API/File)\n * so `file.type` is MIME-type of file (https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types)\n *\n * Avoid to use this validator to detect not widespread formats, for example *.psd\n * In this cases file.type will be an empty string\n */\n let file: File;\n\n for (file of control.value) {\n if (!allowedTypes.map((t) => t.toLowerCase()).includes(file.type)) {\n forbidden = true;\n break;\n }\n }\n\n return forbidden\n ? {\n forbiddenFileType: {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n value: control.value,\n message: customMessage || `Forbidden file type! Only \"${allowedTypes.join(', ')}\" available`\n }\n }\n : null;\n }\n return null;\n };\n }\n\n public static dateValidator(control: AbstractControl): ValidationErrors | null {\n if (control && control.value instanceof Date && control.value.toString() !== 'Invalid Date') {\n return null;\n }\n\n return { pattern: { message: MbsValidators.validatorMessages.pattern() } };\n }\n\n public static portValidator(control: AbstractControl): ValidationErrors | null {\n const onlyDigits = /^\\d+$/.test(control.value as string);\n\n if (control.value && !onlyDigits) {\n return { onlyDigits: { message: 'This field should contain only digits' } };\n }\n\n const port = parseInt(control.value as string);\n\n if (control.value && !(0 < port && port <= 65535)) {\n return { portValidator: { message: MbsValidators.validatorMessages.portValidator() } };\n }\n\n return null;\n }\n\n public static timeFormat24WithoutSecondsValidator(control: AbstractControl): ValidationErrors | null {\n if (new RegExp(TIME_24_FORMAT_WITHOUT_SECONDS_REGEXP).test(control.value as string)) {\n return null;\n }\n\n return { time: { message: MbsValidators.validatorMessages.time() } };\n }\n\n public static timeValidatorWithoutText(control: AbstractControl): ValidationErrors | null {\n if (control.disabled || (!control.touched && !control.dirty)) return null;\n\n return new RegExp(TIME_24_FORMAT_WITHOUT_SECONDS_REGEXP).test(control.value as string) ? null : { timeInvalid: true };\n }\n\n // custom validator to check that two fields match; FormGroup validator\n public static mustMatch(settings: { controlName: string; matchingControlName: string; inverse?: boolean }) {\n return (formGroup: FormGroup) => {\n const control = formGroup.controls[settings.controlName];\n const matchingControl = formGroup.controls[settings.matchingControlName];\n\n if (matchingControl.errors && !matchingControl.errors.mustMatch) {\n // return if another validator has already found an error on the matchingControl\n return null;\n }\n\n // set error on matchingControl if validation fails\n if (settings.inverse) {\n if (control.enabled && matchingControl.enabled && control.value === matchingControl.value) {\n matchingControl.setErrors({ mustNotMatch: MbsValidators.validatorMessages.mustNotMatch() });\n } else {\n matchingControl.setErrors(null);\n }\n } else {\n if (control.enabled && matchingControl.enabled && control.value !== matchingControl.value) {\n matchingControl.setErrors({ mustMatch: MbsValidators.validatorMessages.mustMatch() });\n } else {\n matchingControl.setErrors(null);\n }\n }\n\n // return null;\n };\n }\n\n public static domainValidator(control: AbstractControl): ValidationErrors | null {\n const value: string = control?.value;\n\n if (value) {\n const pattern = new RegExp(DOMAIN_REGEX);\n const domainNamesRegex = getComposedRegex(BREAKS_REGEX, SPACES_REGEX, COMMAS_REGEX);\n const domainNames = value.split(domainNamesRegex).filter(Boolean);\n const hasError = domainNames.some((name) => !pattern.test(name));\n\n return hasError ? { domainName: { message: MbsValidators.validatorMessages.domainNameMatch() } } : null;\n }\n\n return null;\n }\n\n public static dnsValidator(control: AbstractControl): ValidationErrors | null {\n const pattern = new RegExp(DNS_REGEX);\n const invalidSymbols: string[] = [\n '\"',\n '/',\n '\\\\',\n '[',\n ']',\n ':',\n '|',\n ' ',\n '<',\n '>',\n '+',\n '=',\n ';',\n ',',\n '?',\n '*',\n '%',\n '#',\n '@',\n '{',\n '}',\n '^',\n '`'\n ];\n\n if (control?.value) {\n const hasError = invalidSymbols.some((s) => control.value.includes(s)) || !pattern.test(control.value);\n\n return hasError ? { dns: { message: MbsValidators.validatorMessages.dnsMatch() } } : null;\n }\n\n return null;\n }\n\n public static aliasValidator(control: AbstractControl): ValidationErrors | null {\n return MbsValidators.aliasCommonValidator(control);\n }\n\n public static aliasTextValidator(control: AbstractControl): ValidationErrors | null {\n return MbsValidators.aliasCommonValidator(control, true);\n }\n\n public static aliasCommonValidator(control: AbstractControl, isTextValidator = false): ValidationErrors | null {\n const pattern = new RegExp(isTextValidator ? ALIAS_TEXT_REGEX : ALIAS_REGEX);\n\n if (control?.value) {\n const hasError = !pattern.test(control.value);\n\n return hasError ? { alias: { message: MbsValidators.validatorMessages.aliasMatch() } } : null;\n }\n\n return null;\n }\n}\n","export const noDataMessageDefault = 'No data provided';\nexport const cancelSelectionTextDefault = 'Cancel selection';\n","\n\n \n {{ service.name }}\n \n\n \n {{ service.size ? (service.size | size) : '0 B' }}\n \n\n \n {{ service.count || '0' }}\n \n\n\n\n
\n \n
\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { AbstractControl, FormControl, UntypedFormGroup, Validators } from '@angular/forms';\nimport { APPEND_BUTTON_PASSWORD_STATE, FormError } from '@common';\nimport { BackupStatisticGrid, DeleteUserBackupOutput } from '@common/components/delete-user-backup/index';\nimport { ServiceType } from '@common/models';\nimport { getAppendButtonsIcon, getAppendButtonsState, hasAppendButtonsPasswordType } from '@common/utils';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { I18NextPipe } from 'angular-i18next';\nimport { MbsLabelSize, MbsValidators, SharedPersistentStateEnum, TableHeader } from 'mbs-ui-kit';\nimport { BehaviorSubject, noop } from 'rxjs';\n\n@UntilDestroy()\n@Component({\n selector: 'app-delete-user-backup',\n templateUrl: './delete-user-backup.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DeleteUserBackupComponent implements OnInit {\n @Output() deleteBackupChange: EventEmitter = new EventEmitter();\n @Output() deleteBackupFormValid: EventEmitter = new EventEmitter();\n\n public passwordType$: BehaviorSubject = new BehaviorSubject(APPEND_BUTTON_PASSWORD_STATE.hidden.type);\n\n #statistics: BackupStatisticGrid[] = [];\n #checkedServices: ServiceType[] = [];\n #formError: FormError = { message: '' };\n\n public readonly getAppendButtonsIcon = getAppendButtonsIcon;\n public readonly headers: TableHeader[];\n public readonly MbsLabelSize = MbsLabelSize;\n\n public viewMode: SharedPersistentStateEnum = SharedPersistentStateEnum.table;\n public deleteBackupForm: UntypedFormGroup = new UntypedFormGroup({\n password: new FormControl('', [Validators.required, MbsValidators.passwordValidator, Validators.maxLength(20)])\n });\n\n @Input() set statistics(s: BackupStatisticGrid[]) {\n const formControls = { password: new FormControl('') } as { password: FormControl };\n\n this.#statistics = s;\n s.forEach((s: BackupStatisticGrid) => (formControls[s.serviceType] = new FormControl(false)));\n }\n\n get statistics(): BackupStatisticGrid[] {\n return this.#statistics;\n }\n\n get passwordControl(): AbstractControl {\n return this.deleteBackupForm.get('password');\n }\n\n @Input() set formError(error: FormError) {\n if (error?.message) {\n this.#formError = error;\n !this.passwordControl.touched && this.passwordControl.markAsTouched();\n !this.passwordControl.dirty && this.passwordControl.markAsDirty();\n this.setPasswordErrorState();\n } else {\n this.passwordControl.reset('', { emitEvent: false });\n }\n }\n\n get formError(): FormError {\n return this.#formError;\n }\n\n constructor(private i18nPipe: I18NextPipe) {\n this.headers = this.getTableHeaders();\n }\n\n ngOnInit(): void {\n this.deleteBackupForm.statusChanges.pipe(untilDestroyed(this)).subscribe({\n next: () => this.emitValue(),\n error: () => noop\n });\n }\n\n public handleChecked(s: BackupStatisticGrid[]): void {\n this.#checkedServices = s.map((s: BackupStatisticGrid) => s.serviceType);\n this.emitValue();\n }\n\n private emitValue(): void {\n const deleteBackupForm = this.deleteBackupForm.value as { password: string };\n const emitValue: DeleteUserBackupOutput = {\n deleteServices: this.#checkedServices,\n password: deleteBackupForm.password\n };\n\n this.deleteBackupChange.emit(emitValue);\n this.deleteBackupFormValid.emit(this.deleteBackupForm.valid);\n }\n\n private setPasswordErrorState(): void {\n this.passwordControl.setValue('', { emitEvent: false });\n this.passwordControl.setErrors({ password: { message: this.formError.message } }, { emitEvent: false });\n }\n\n handleChangePasswordType(): void {\n const isPasswordType: boolean = hasAppendButtonsPasswordType(this.passwordType$.value);\n\n this.passwordType$.next(APPEND_BUTTON_PASSWORD_STATE[getAppendButtonsState(isPasswordType)].type);\n }\n\n private getTableHeaders(): TableHeader[] {\n return [\n {\n name: this.i18nPipe.transform('deleteBackup.grid.service', { format: 'title' }),\n overflow: true,\n gridColMin: '91px',\n gridColSize: '1fr'\n },\n {\n name: this.i18nPipe.transform('deleteBackup.grid.size', { format: 'title' }),\n overflow: true,\n gridColMin: '84px',\n gridColSize: '1fr',\n class: '-end'\n },\n {\n name: this.i18nPipe.transform('deleteBackup.grid.count', { format: 'title' }),\n overflow: true,\n gridColMin: '84px',\n gridColSize: '1fr',\n class: '-end'\n }\n ];\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { DeleteUserBackupComponent } from '@common/components/delete-user-backup/delete-user-backup.component';\nimport { I18NextModule } from 'angular-i18next';\nimport { MbsUiKitModule } from 'mbs-ui-kit';\n\n@NgModule({\n imports: [I18NextModule, MbsUiKitModule, ReactiveFormsModule, CommonModule],\n declarations: [DeleteUserBackupComponent],\n exports: [DeleteUserBackupComponent]\n})\nexport class DeleteUserBackupModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { I18NextModule } from 'angular-i18next';\nimport { MbsUiKitModule } from 'mbs-ui-kit';\nimport { DontHavePermissionComponent } from './dont-have-permission.component';\n\n@NgModule({\n imports: [CommonModule, MbsUiKitModule, I18NextModule],\n exports: [DontHavePermissionComponent],\n declarations: [DontHavePermissionComponent]\n})\nexport class DontHavePermissionModule {}\n","\n\n \n {{ 'exportToPST.alert.consideredRestoreJob_1' | i18next: { format: 'capitalize' } }}
\n {{ 'exportToPST.alert.consideredRestoreJob_2' | i18next: { format: 'capitalize' } }}\n
\n\n \n \n \n \n \n \n \n \n
\n\n
\n \n
\n
\n
\n \n
\n
\n {{ form.errors?.datepicker.message }}\n
\n
\n
\n
\n
\n
\n
\n \n\n \n \n \n \n \n\n \n \n \n \n \n \n\n
\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormControl, UntypedFormGroup, ValidationErrors, Validators } from '@angular/forms';\nimport { ExportToPSTFilter, ExportToPSTServices } from '@common/models';\nimport { isValidDate, ucFirst, validateSearchFilterForm } from '@common/utils';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { I18NextPipe } from 'angular-i18next';\nimport { MbsPopupType, MbsSize } from 'mbs-ui-kit';\n\ntype ServicesForm = {\n contacts: {\n checked: boolean;\n filter?: ServiceFilter; // now unsupported for contacts\n };\n calendar: {\n checked: boolean;\n filter?: ServiceFilter; // now unsupported for calendar\n };\n mail: {\n checked: boolean;\n filter: ServiceFilter;\n };\n};\ntype ServiceFilter = {\n from: Date;\n to: Date;\n};\n@UntilDestroy()\n@Component({\n selector: 'app-export-to-PST-control',\n templateUrl: './export-to-pst.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ExportToPstComponent implements OnInit {\n @Input() hidden: boolean;\n @Input() set needResetForm(e) {\n if (this.form) this.resetForm();\n }\n\n @Output() exportServices: EventEmitter = new EventEmitter(null);\n @Output() formValid: EventEmitter = new EventEmitter(true);\n\n public form: UntypedFormGroup;\n public isMailFilter = true;\n public readonly MbsSize = MbsSize;\n public readonly currentDay = new Date();\n public readonly MbsPopupType = MbsPopupType;\n\n get mailFilterFromControl(): FormControl {\n return this.form.get('mail.filter.from') as FormControl;\n }\n\n get mailFilterToControl(): FormControl {\n return this.form.get('mail.filter.to') as FormControl;\n }\n\n get mailCheckedControl(): FormControl {\n return this.form.get('mail.checked') as FormControl;\n }\n\n get calendarCheckedControl(): FormControl {\n return this.form.get('calendar.checked') as FormControl;\n }\n\n get contactsCheckedControl(): FormControl {\n return this.form.get('contacts.checked') as FormControl;\n }\n\n constructor(private fb: FormBuilder, private i18nPipe: I18NextPipe) {}\n\n ngOnInit(): void {\n this.initForm();\n\n this.form.valueChanges.pipe(untilDestroyed(this)).subscribe({\n next: () => {\n this.emitServices();\n this.updateDatesValidation();\n }\n });\n }\n\n private updateDatesValidation(): void {\n validateSearchFilterForm(this.form, this.mailFilterFromControl, this.mailFilterToControl);\n !this.mailFilterFromControl.dirty && this.mailFilterFromControl.markAsDirty();\n this.mailFilterFromControl.untouched && this.mailFilterFromControl.markAsTouched();\n }\n\n private getFromDate = (): Date => {\n const timestampFromDate = new Date().setMonth(new Date().getMonth() - 1);\n\n return new Date(timestampFromDate);\n };\n\n private initForm(): void {\n this.form = this.fb.group({\n contacts: this.fb.group({\n checked: true\n }),\n calendar: this.fb.group({\n checked: true\n }),\n mail: this.fb.group({\n checked: true,\n filter: this.fb.group({\n from: this.getFromDate(),\n to: new Date()\n })\n })\n });\n\n this.setValidators();\n this.emitServices();\n }\n\n private setValidators(): void {\n const extendValidators = Validators.compose([this.ValidateDatepicker.bind(this), this.ValidateFormRequired.bind(this)]);\n\n this.form.setValidators(extendValidators);\n }\n\n private resetForm(): void {\n this.isMailFilter = true;\n\n this.form.reset({\n contacts: {\n checked: true\n },\n calendar: {\n checked: true\n },\n mail: {\n checked: true,\n filter: {\n from: this.getFromDate(),\n to: new Date()\n }\n }\n });\n this.setValidators();\n }\n\n private emitServices(): void {\n const services: ExportToPSTServices[] = this.getServices(this.form.value);\n\n this.exportServices.emit(services);\n this.formValid.emit(this.form.valid);\n }\n\n private getServices(form: ServicesForm): ExportToPSTServices[] {\n return Object.entries(form)\n .filter(([, value]) => value && value.checked)\n .map(([key, value]) => {\n return {\n Service: ucFirst(key),\n Filter: this.isMailFilter ? this.convertFilterToISO(value.filter) : null\n } as ExportToPSTServices;\n });\n }\n\n private convertFilterToISO = (filter: ServiceFilter): ExportToPSTFilter => {\n const availableConvert = filter && isValidDate(filter.from) && isValidDate(filter.to);\n\n return availableConvert ? this.formattedFilterData(filter) : null;\n };\n\n private formattedFilterData = (filter: ServiceFilter): ExportToPSTFilter => {\n const formattedFrom = filter.from.setHours(0, 0, 0, 0);\n const formattedTo = filter.to.setHours(23, 59, 59, 999);\n\n return {\n From: new Date(formattedFrom).toISOString(),\n To: new Date(formattedTo).toISOString()\n };\n };\n\n mailFilterChange(state: boolean): void {\n if (state) {\n this.setValidators();\n } else {\n this.form.clearValidators();\n }\n\n this.form.updateValueAndValidity();\n }\n\n private ValidateDatepicker(): ValidationErrors | null {\n if ((this.mailFilterFromControl.value as Date).getTime() > (this.mailFilterToControl.value as Date).getTime()) {\n return {\n datepicker: { message: this.i18nPipe.transform('exportToPST.validation.datepicker', { format: 'capitalize' }) }\n };\n }\n\n return null;\n }\n\n private ValidateFormRequired(): ValidationErrors | null {\n if (!this.mailCheckedControl.value && !this.calendarCheckedControl.value && !this.contactsCheckedControl.value) {\n return {\n form: { message: this.i18nPipe.transform('exportToPST.validation.notBeEmpty', { format: 'capitalize' }) }\n };\n }\n\n return null;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ExportToPstComponent } from '@common/components/export-to-pst/export-to-pst.component';\nimport { I18NextModule } from 'angular-i18next';\nimport { MbsUiKitModule } from 'mbs-ui-kit';\n\n@NgModule({\n imports: [ReactiveFormsModule, MbsUiKitModule, CommonModule, FormsModule, I18NextModule],\n declarations: [ExportToPstComponent],\n exports: [ExportToPstComponent]\n})\nexport class ExportToPstModule {}\n","export enum AuthState {\n AccessDenied = 'AccessDenied', // user not found in db or user is not in backup\n AccessRequest = 'AccessRequest', // ContactInfo page\n AltAccountNotVerified = 'AltAccountNotVerified',\n Approve = 'Approve', // Google domain exists but API->directory.users.get failed\n AuthCodeInvalid = 'AuthCodeInvalid',\n Blocked = 'Blocked', // User or domain locked in db\n DomainNotFound = 'DomainNotFound',\n DomainOrUserIsNotSpecified = 'DomainOrUserIsNotSpecified', // Mbs token has not contains 'customer'\n NoLicensesAvailable = 'NoLicensesAvailable',\n NotGrant = 'NotGrant', // API->directory.users.get failed and Google domain doesn't exists\n OwnerNameIsNotSpecified = 'OwnerNameIsNotSpecified', // Mbs token has not contains 'name'\n OwnerNotIdentified = 'OwnerNotIdentified', // Mbs token has not contains 'owner_id'\n Redirect = 'Redirect',\n ResetPassword = 'ResetPassword',\n RequiredTwoStepAuthCode = 'RequiredTwoStepAuthCode',\n ServiceUnavailable = 'ServiceUnavailable',\n SignInDisabled = 'SignInDisabled', // !user.SignInEnable\n Success = 'Success',\n TokenInvalid = 'TokenInvalid', // Google token is invalid or expired\n VerificationAlternateAccount = 'VerificationAlternateAccount',\n WrongAccount = 'WrongAccount', // WrongGoogleHomeAccount or WrongGoogleBusinessAccount\n WrongTwoStepAuthCode = 'WrongTwoStepAuthCode',\n Unknown = 'Unknown',\n UserAccountDisabled = 'UserAccountDisabled' // users not included in Backup\n}\n\nexport enum OtherState {\n UnsupportedBrowser = 'UnsupportedBrowser'\n}\n","export enum AuthMode {\n None = 'None',\n SecondSignIn = 'SecondSignIn', // Determinate requiring to admit all app permissions needs for 'Sign In As Admin' or Creating new Domain\n AnotherAccount = 'AnotherAccount', // Determinate auth for another account, needs for 'restore to...'\n ProviderSignIn = 'ProviderSignIn',\n Onboarding = 'Onboarding',\n AlternativeAccount = 'AlternativeAccount'\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, OnInit, ViewChild } from '@angular/core';\nimport { FormControl, UntypedFormGroup, Validators } from '@angular/forms';\nimport { APPEND_BUTTON_PASSWORD_STATE, ChangeAlternateEmail } from '@common';\nimport { UserOdataService } from '@common/services';\nimport { getAppendButtonsIcon, getAppendButtonsState, hasAppendButtonsPasswordType } from '@common/utils';\nimport { ModalComponent } from 'mbs-ui-kit';\nimport { BehaviorSubject } from 'rxjs';\nimport { finalize } from 'rxjs/operators';\n\n@Component({\n templateUrl: './change-email-modal.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ChangeEmailModalComponent implements OnInit {\n @ViewChild(ModalComponent, { static: true }) baseModal: ModalComponent;\n\n private userId = '';\n\n public readonly getAppendButtonsIcon = getAppendButtonsIcon;\n\n public passwordType$: BehaviorSubject = new BehaviorSubject(APPEND_BUTTON_PASSWORD_STATE.hidden.type);\n public changeLoading$: BehaviorSubject = new BehaviorSubject(false);\n public changeEmailForm = new UntypedFormGroup({\n Email: new FormControl('', [Validators.required, Validators.email]),\n Password: new FormControl('', [Validators.required, Validators.maxLength(20)])\n });\n\n constructor(public userService: UserOdataService) {}\n\n ngOnInit(): void {\n this.changeEmailForm.reset();\n this.userId = this.baseModal.data as string;\n }\n\n changeButtonClick(): void {\n const data = this.changeEmailForm.value as ChangeAlternateEmail;\n\n this.changeLoading$.next(true);\n this.userService\n .editAlternateEmail(this.userId, data.Email, data.Password)\n .pipe(finalize(() => this.changeLoading$.next(false)))\n .subscribe({\n next: () => this.baseModal.save(),\n error: (e: HttpErrorResponse) => {\n this.handleFormError(e, this.changeEmailForm);\n }\n });\n }\n\n cancelButtonClick(): void {\n this.baseModal.close();\n }\n\n private handleFormError(response: HttpErrorResponse, form: UntypedFormGroup): void {\n if (response.status === 400) {\n // response.error.error.details.forEach((input) => {\n // const p = form.get(input.target);\n // p.setValue('');\n // p.setErrors({ [`${input.target}Incorrect`]: { message: input.message } });\n // });\n form.get('Password').setValue('');\n form.get('Password').setErrors({ [`Password Incorrect`]: { message: (response.error as { value: string }).value } });\n }\n }\n\n handleChangePasswordType(): void {\n const isPasswordType: boolean = hasAppendButtonsPasswordType(this.passwordType$.value);\n\n this.passwordType$.next(APPEND_BUTTON_PASSWORD_STATE[getAppendButtonsState(isPasswordType)].type);\n }\n}\n","\n\n \n\n
\n\n \n \n \n\n \n \n \n\n
\n\n
\n\n \n\n \n {{ 'changeAlternateEmailModal.button.change' | i18next: { format: 'title' } }}\n \n\n \n {{ 'changeAlternateEmailModal.button.cancel' | i18next: { format: 'title' } }}\n \n\n \n\n
\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, OnInit, ViewChild } from '@angular/core';\nimport { FormControl, UntypedFormGroup, Validators } from '@angular/forms';\nimport { APPEND_BUTTON_PASSWORD_STATE, ChangePassword } from '@common';\nimport { UserOdataService } from '@common/services';\nimport { getAppendButtonsIcon, getAppendButtonsState, hasAppendButtonsPasswordType, isConfirmPasswordValidator } from '@common/utils';\nimport { camelCase } from 'lodash';\nimport { InputButton, ModalComponent } from 'mbs-ui-kit';\nimport { BehaviorSubject } from 'rxjs';\nimport { finalize } from 'rxjs/operators';\n\n@Component({\n templateUrl: './change-password-modal.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ChangePasswordModalComponent implements OnInit {\n @ViewChild(ModalComponent, { static: true }) baseModal: ModalComponent;\n\n private userId = '';\n\n public readonly getAppendButtonsIcon = getAppendButtonsIcon;\n\n public changePasswordForm = new UntypedFormGroup(\n {\n Password: new FormControl('', [Validators.required]),\n NewPassword: new FormControl('', [Validators.required, Validators.minLength(7), Validators.maxLength(20)]),\n ConfirmPassword: new FormControl('', Validators.required)\n },\n isConfirmPasswordValidator.bind({}, { password: 'NewPassword', confirmPassword: 'ConfirmPassword' })\n );\n\n public resetLoading$: BehaviorSubject = new BehaviorSubject(false);\n public oldPasswordType$: BehaviorSubject = new BehaviorSubject(APPEND_BUTTON_PASSWORD_STATE.hidden.type);\n public newPasswordType$: BehaviorSubject = new BehaviorSubject(APPEND_BUTTON_PASSWORD_STATE.hidden.type);\n public confirmPasswordType$: BehaviorSubject = new BehaviorSubject(APPEND_BUTTON_PASSWORD_STATE.hidden.type);\n\n constructor(public userService: UserOdataService) {}\n\n ngOnInit(): void {\n this.changePasswordForm.reset();\n this.userId = this.baseModal.data as string;\n }\n\n changeButtonClick(): void {\n const data = this.changePasswordForm.value as ChangePassword;\n\n this.resetLoading$.next(true);\n this.userService\n .editAlternatePassword(this.userId, data.Password, data.NewPassword, data.ConfirmPassword)\n .pipe(finalize(() => this.resetLoading$.next(false)))\n .subscribe({\n next: () => this.baseModal.save(),\n error: (e: HttpErrorResponse) => {\n this.handleFormError(e, this.changePasswordForm);\n }\n });\n }\n\n cancelButtonClick(): void {\n this.baseModal.close();\n }\n\n private handleFormError(response: HttpErrorResponse, form: UntypedFormGroup): void {\n if (response.status === 400) {\n // response.error.error.details.forEach((input) => {\n // const p = form.get(input.target);\n // p.setValue('');\n // p.setErrors({ [`${input.target}Incorrect`]: { message: input.message } });\n // });\n form.get('Password').setValue('');\n form.get('Password').setErrors({ [`Password Incorrect`]: { message: (response.error as { value: string }).value } });\n }\n }\n\n handleChangePasswordType(event: InputButton): void {\n if (!event) return;\n\n const id = camelCase(event.id.replace('append', ''));\n const subjectById: BehaviorSubject = this[id + 'Type$'];\n const isPasswordType: boolean = hasAppendButtonsPasswordType(subjectById.getValue());\n\n subjectById.next(APPEND_BUTTON_PASSWORD_STATE[getAppendButtonsState(isPasswordType)].type);\n }\n}\n","\n\n \n\n
\n\n \n \n \n\n \n \n \n\n \n \n \n\n
\n\n
\n\n \n\n \n {{ 'changeAlternatePasswordModal.button.change' | i18next: { format: 'title' } }}\n \n\n \n {{ 'changeAlternatePasswordModal.button.cancel' | i18next: { format: 'title' } }}\n \n\n \n\n
\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { AbstractControl, FormControl, UntypedFormGroup, Validators } from '@angular/forms';\nimport { APPEND_BUTTON_PASSWORD_STATE, PResolve } from '@common';\nimport { getAppendButtonsIcon, getAppendButtonsState, hasAppendButtonsPasswordType } from '@common/utils';\nimport { I18NextPipe } from 'angular-i18next';\nimport { ModalComponent } from 'mbs-ui-kit';\nimport { BehaviorSubject } from 'rxjs';\n\nexport interface ConfirmPasswordModalSettings {\n type: ConfirmPasswordModalType;\n beforeSave: (password: string) => Promise;\n}\n\nexport enum ConfirmPasswordModalType {\n save = 'save',\n delete = 'delete'\n}\n\n@Component({\n selector: 'app-confirm-password-modal',\n templateUrl: './confirm-password-modal.component.html'\n})\nexport class ConfirmPasswordModalComponent implements OnInit {\n @ViewChild(ModalComponent, { static: true }) baseModal: ModalComponent;\n\n public passwordType$: BehaviorSubject = new BehaviorSubject(APPEND_BUTTON_PASSWORD_STATE.hidden.type);\n\n readonly #deleteText: string;\n readonly #saveText: string;\n\n private beforeSave: (password: string) => Promise;\n private type: ConfirmPasswordModalType;\n\n public readonly getAppendButtonsIcon = getAppendButtonsIcon;\n\n public title = '';\n public confirmForm = new UntypedFormGroup({\n password: new FormControl('', [Validators.required, Validators.maxLength(20)])\n });\n\n get saveButtonType(): 'primary' | 'danger' {\n return this.type === ConfirmPasswordModalType.delete ? 'danger' : 'primary';\n }\n\n get saveButtonText(): string {\n return this.type === ConfirmPasswordModalType.delete ? this.#deleteText : this.#saveText;\n }\n\n get passwordControl(): AbstractControl {\n return this.confirmForm.get('password');\n }\n\n constructor(private i18nPipe: I18NextPipe) {\n this.#deleteText = i18nPipe.transform('common.delete', { format: 'title' });\n this.#saveText = i18nPipe.transform('common.save', { format: 'title' });\n }\n\n ngOnInit(): void {\n const settings = this.baseModal.data as ConfirmPasswordModalSettings;\n const title = (this.baseModal.header as { title: string }).title;\n\n this.confirmForm.reset();\n this.beforeSave = settings?.beforeSave || (() => Promise.resolve({ resolve: true }));\n this.type = settings?.type || ConfirmPasswordModalType.save;\n\n if (title) {\n this.title = title;\n } else {\n this.title = this.type === ConfirmPasswordModalType.delete ? this.#deleteText : this.#saveText;\n }\n }\n\n async saveButtonClick(): Promise {\n const save = await this.beforeSave(this.passwordControl.value);\n\n if (!save.resolve) {\n const ERROR_TEXT = save.error || this.i18nPipe.transform('common.validation.somethingWrong', { format: 'capitalize' });\n\n this.passwordControl.setValue('');\n this.passwordControl.setErrors({ passwordIncorrect: { message: ERROR_TEXT } });\n } else {\n this.baseModal.save();\n }\n }\n\n cancelButtonClick(): void {\n this.baseModal.close();\n }\n\n handleChangePasswordType(): void {\n const isPasswordType: boolean = hasAppendButtonsPasswordType(this.passwordType$.value);\n\n this.passwordType$.next(APPEND_BUTTON_PASSWORD_STATE[getAppendButtonsState(isPasswordType)].type);\n }\n}\n","\n\n \n\n
\n\n \n\n
\n\n
\n\n \n\n \n {{ saveButtonText }}\n \n\n \n {{ 'common.cancel' | i18next: { format: 'title' } }}\n \n\n \n\n
\n","\n\n \n\n \n\n \n {{\n policy\n ? ('retentionPolicy.alert.update' | i18next: { format: 'capitalize' })\n : ('retentionPolicy.alert.create' | i18next: { format: 'capitalize' })\n }}\n \n\n \n\n
\n\n \n\n \n \n \n\n \n \n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n \n \n\n \n\n \n\n \n\n \n\n \n
\n
\n \n
\n
\n \n
\n
\n
\n\n
\n\n
\n\n
\n\n \n\n \n\n
\n\n
\n \n
\n\n
\n \n
\n\n
\n\n
\n\n
\n\n \n\n \n
\n \n\n \n
\n
\n\n
\n\n
\n\n
\n\n \n \n {{ okButtonText }}\n \n\n \n {{ cancelButtonText }}\n \n \n\n
\n\n\n\n
\n\n
\n \n
\n\n
\n \n
\n\n
\n\n
\n\n
\n {{ 'retentionPolicy.label.from' | i18next: { format: 'title' } }}:\n
\n\n
\n\n \n\n \n\n
\n\n
\n\n
\n\n
\n\n \n\n
\n\n
\n\n
\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, OnInit, ViewChild } from '@angular/core';\nimport { AbstractControl, FormBuilder, FormControl, ValidationErrors, Validators } from '@angular/forms';\nimport { ServiceTypeStr } from '@common';\nimport { RetentionPolicyOdata } from '@common/models';\nimport { AuthService, RetentionPolicyService } from '@common/services';\nimport { getErrorText, hasErrorResponseText, isHomeUser } from '@common/utils';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { I18NextPipe } from 'angular-i18next';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { isNil } from 'lodash';\nimport { FormsUtil, GuidEmpty, MbsPopupType, MbsValidators, ModalComponent, ToastService } from 'mbs-ui-kit';\nimport { BehaviorSubject } from 'rxjs';\nimport { distinctUntilChanged, finalize } from 'rxjs/operators';\n\n@UntilDestroy()\n@Component({\n templateUrl: './edit-create-retention-policy-modal.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class EditCreateRetentionPolicyModalComponent implements OnInit {\n @ViewChild(ModalComponent, { static: true }) baseModal: ModalComponent;\n\n readonly #toastTitleSuccess = this.i18nPipe.transform('toast.success.title', { format: 'title' });\n readonly #toastTitleError = this.i18nPipe.transform('toast.error.title', { format: 'title' });\n\n public readonly modulePolicy = I18_NAMESPACE_APPS_UI.policy;\n public readonly MbsPopupType = MbsPopupType;\n public readonly ServiceTypeStr = ServiceTypeStr;\n public readonly prefix = Math.random().toString(36).substring(2) + '_';\n public retentionPolicyForm = this.fb.group({\n Id: GuidEmpty,\n ReadOnly: [{ value: false, disabled: true }],\n ServiceType: [ServiceTypeStr.Mail, [Validators.required]],\n Name: ['', [this.customNameValidator.bind(this)]],\n KeepCntUnits: [1],\n KeepUnit: ['Days'],\n KeepRevisionsCnt: [{ value: 1, disabled: true }],\n DelayPurgeCntUnits: [1],\n DelayPurgeUnit: ['Days'],\n ByModifyOrBackupDate: [true],\n EnableKeepCntUnits: [true],\n EnableKeepRevisionsCnt: [false],\n AlwaysKeepLastRevision: [false],\n HasLegalHold: [false]\n });\n\n public timePeriods: string[] = [\n this.i18nPipe.transform('retentionPolicy.modal.select-periods.days', { format: 'title' }),\n this.i18nPipe.transform('retentionPolicy.modal.select-periods.weeks', { format: 'title' }),\n this.i18nPipe.transform('retentionPolicy.modal.select-periods.months', { format: 'title' }),\n this.i18nPipe.transform('retentionPolicy.modal.select-periods.years', { format: 'title' })\n ];\n public availableRetentionPolicies: { value: string; label: string }[];\n public bodySuccess = this.i18nPipe.transform(this.modulePolicy + ':toast.body.create', { format: 'capitalize' });\n public bodyError = this.i18nPipe.transform(this.modulePolicy + ':toast.error.create', { format: 'capitalize' });\n public title = this.i18nPipe.transform('retentionPolicy.modal.title.create', { format: 'title' });\n public okButtonText = this.i18nPipe.transform('retentionPolicy.modal.button.create', { format: 'title' });\n public cancelButtonText = this.i18nPipe.transform('retentionPolicy.modal.button.cancel', { format: 'title' });\n public okButtonDisabled = true;\n public policy: RetentionPolicyOdata;\n public isCreate: boolean;\n\n public loading$: BehaviorSubject = new BehaviorSubject(false);\n\n get enableKeepCntUnitsControl(): FormControl {\n return this.retentionPolicyForm.controls['EnableKeepCntUnits'];\n }\n\n get keepRevisionsCntControl(): FormControl<{ value: string; disabled: boolean }> {\n return this.retentionPolicyForm.controls['KeepRevisionsCnt'];\n }\n\n get delayPurgeCntUnitsControl(): FormControl {\n return this.retentionPolicyForm.controls['KeepCntUnits'];\n }\n\n get serviceTypeControl(): FormControl {\n return this.retentionPolicyForm.controls['ServiceType'];\n }\n\n get isOffice(): boolean {\n return this.authService?.isOffice;\n }\n\n get isGoogle(): boolean {\n return this.authService?.isGoogle;\n }\n\n get isImmutability(): boolean {\n return this.authService?.isImmutability;\n }\n\n constructor(\n private i18nPipe: I18NextPipe,\n private fb: FormBuilder,\n private authService: AuthService,\n private toastService: ToastService,\n private retentionPolicyService: RetentionPolicyService\n ) {}\n\n ngOnInit(): void {\n this.policy = this.baseModal.data as RetentionPolicyOdata;\n\n if (this.policy) {\n this.retentionPolicyForm.patchValue(this.policy, { emitEvent: false });\n this.title = this.i18nPipe.transform('retentionPolicy.modal.title.edit', { format: 'title' });\n this.okButtonText = this.i18nPipe.transform('retentionPolicy.modal.button.save', { format: 'title' });\n this.bodySuccess = this.i18nPipe.transform(this.modulePolicy + ':toast.body.update', { format: 'capitalize' });\n this.bodyError = this.i18nPipe.transform(this.modulePolicy + ':toast.error.update', { format: 'capitalize' });\n }\n\n this.initStreams();\n this.setValidators();\n\n if (this.needTriggerValidationKeepRevisionsCntControl(this.enableKeepCntUnitsControl.value)) {\n FormsUtil.triggerValidation(this.keepRevisionsCntControl);\n }\n\n if (this.needTriggerValidationDelayPurgeCntUnitsControl(this.enableKeepCntUnitsControl.value)) {\n FormsUtil.triggerValidation(this.delayPurgeCntUnitsControl);\n }\n\n if (this.serviceTypeControl.value !== ServiceTypeStr.Mail && this.serviceTypeControl.value !== ServiceTypeStr.Teams) {\n this.toggleEnableKeepRevisions();\n this.okButtonDisabled = true;\n }\n }\n\n private setValidators(): void {\n this.delayPurgeCntUnitsControl.setValidators(this.delayPurgeCntUnitsValidator.bind(this));\n this.keepRevisionsCntControl.setValidators(this.keepRevisionsCntValidator.bind(this));\n }\n\n private keepRevisionsCntValidator(control: FormControl, minCount = 1): ValidationErrors | null {\n if (!control) return null;\n\n if (!this.enableKeepCntUnitsControl.value && (isNil(control.value) || control.value < minCount)) {\n return { min: { message: MbsValidators.validatorMessages.min({ min: minCount, actual: control.value || 0 }) } };\n }\n\n return null;\n }\n\n private delayPurgeCntUnitsValidator(control: FormControl, minCount = 1): ValidationErrors | null {\n if (!control) return null;\n\n if (this.enableKeepCntUnitsControl.value && (isNil(control.value) || control.value < minCount)) {\n return { min: { message: MbsValidators.validatorMessages.min({ min: minCount, actual: control.value || 0 }) } };\n }\n\n return null;\n }\n\n private needTriggerValidationKeepRevisionsCntControl(isEnableKeepRevisionsCntControl: boolean): boolean {\n return !isEnableKeepRevisionsCntControl && !this.keepRevisionsCntControl.touched;\n }\n\n private needTriggerValidationDelayPurgeCntUnitsControl(isEnableDelayPurgeCntUnitsControl: boolean): boolean {\n return isEnableDelayPurgeCntUnitsControl && !this.delayPurgeCntUnitsControl.touched;\n }\n\n private customNameValidator(control: AbstractControl): ValidationErrors | null {\n const errors = Validators.compose([Validators.required, Validators.maxLength(50)])(control);\n\n if (!errors) return null;\n\n if (errors.maxlength) {\n return { maxlength: { message: MbsValidators.validatorMessages.maxlength(errors.maxlength) } };\n }\n\n if (errors.required) {\n return { required: { message: 'The field is required' } };\n }\n\n return null;\n }\n\n initStreams(): void {\n this.retentionPolicyForm.valueChanges.pipe(untilDestroyed(this)).subscribe({\n next: () => (this.okButtonDisabled = this.retentionPolicyForm.invalid)\n });\n\n this.enableKeepCntUnitsControl.valueChanges.pipe(distinctUntilChanged(), untilDestroyed(this)).subscribe({\n next: (value) => {\n if (this.needTriggerValidationKeepRevisionsCntControl(value)) {\n FormsUtil.triggerValidation(this.keepRevisionsCntControl);\n }\n\n if (this.needTriggerValidationDelayPurgeCntUnitsControl(value)) {\n FormsUtil.triggerValidation(this.delayPurgeCntUnitsControl);\n }\n }\n });\n\n this.serviceTypeControl.valueChanges.pipe(distinctUntilChanged(), untilDestroyed(this)).subscribe({\n next: (serviceType) => {\n if (serviceType == ServiceTypeStr.Mail || serviceType == ServiceTypeStr.Teams) {\n this.enableKeepCntUnitsControl.patchValue(true);\n }\n\n this.toggleEnableKeepRevisions();\n }\n });\n\n this.authService\n .getAuthUser()\n .pipe(untilDestroyed(this))\n .subscribe({\n next: (user) => {\n const policies = [\n { value: 'Mail', label: this.i18nPipe.transform('retentionPolicy.modal.select-for-service.mail', { format: 'title' }) },\n { value: 'Drive', label: this.i18nPipe.transform('retentionPolicy.modal.select-for-service.drive', { format: 'title' }) },\n {\n value: 'Contacts',\n label: this.i18nPipe.transform('retentionPolicy.modal.select-for-service.contacts', { format: 'title' })\n },\n {\n value: 'Calendar',\n label: this.i18nPipe.transform('retentionPolicy.modal.select-for-service.calendar', { format: 'title' })\n }\n ];\n\n if (!isHomeUser(user) && this.isGoogle) {\n policies.push({\n value: 'TeamDrives',\n label: this.i18nPipe.transform('retentionPolicy.modal.select-for-service.sharedDrives', { format: 'title' })\n });\n }\n\n if (!isHomeUser(user) && this.isOffice) {\n policies.push({\n value: 'SharePoint',\n label: this.i18nPipe.transform('retentionPolicy.modal.select-for-service.sharePoint', { format: 'title' })\n });\n policies.push({\n value: 'Teams',\n label: this.i18nPipe.transform('retentionPolicy.modal.select-for-service.teams', { format: 'title' })\n });\n }\n\n this.availableRetentionPolicies = policies;\n }\n });\n }\n\n toggleEnableKeepRevisions(): void {\n const controls = this.retentionPolicyForm.controls;\n const EnableKeepCntUnits = this.retentionPolicyForm.value.EnableKeepCntUnits;\n\n if (!EnableKeepCntUnits) {\n controls.AlwaysKeepLastRevision.disable();\n controls.ByModifyOrBackupDate.disable();\n controls.KeepCntUnits.disable();\n controls.KeepRevisionsCnt.enable();\n controls.KeepUnit.disable();\n } else {\n controls.AlwaysKeepLastRevision.enable();\n controls.ByModifyOrBackupDate.enable();\n controls.KeepCntUnits.enable();\n controls.KeepRevisionsCnt.disable();\n controls.KeepUnit.enable();\n }\n\n controls.EnableKeepRevisionsCnt.setValue(!EnableKeepCntUnits);\n }\n\n handleSave(): void {\n const policy = this.retentionPolicyForm.value as RetentionPolicyOdata;\n\n if (policy.ServiceType == ServiceTypeStr.Mail || policy.ServiceType == ServiceTypeStr.Teams) {\n policy.EnableKeepCntUnits = true;\n }\n\n this.loading$.next(true);\n (this.policy ? this.retentionPolicyService.updatePolicy(policy) : this.retentionPolicyService.createPolicy(policy))\n .pipe(finalize(() => this.loading$.next(false)))\n .subscribe({\n next: () => {\n this.toastService.success(this.bodySuccess, this.#toastTitleSuccess);\n this.baseModal.save(true);\n },\n error: (res: HttpErrorResponse) =>\n hasErrorResponseText(res) && this.toastService.error(getErrorText(res, this.bodyError), this.#toastTitleError)\n });\n }\n\n handleClose(): void {\n this.baseModal.close();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\nimport { I18NEXT_NAMESPACE, I18NextModule } from 'angular-i18next';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { MbsUiKitModule } from 'mbs-ui-kit';\nimport { EditCreateRetentionPolicyModalComponent } from './edit-create-retention-policy-modal.component';\n\n@NgModule({\n imports: [I18NextModule, CommonModule, MbsUiKitModule, FormsModule, ReactiveFormsModule, NgbTooltipModule],\n declarations: [EditCreateRetentionPolicyModalComponent],\n providers: [\n {\n provide: I18NEXT_NAMESPACE,\n useValue: [I18_NAMESPACE_APPS_UI.policy]\n }\n ]\n})\nexport class EditCreateRetentionPolicyModalModule {}\n","\n\n
\n\n
\n \n
\n\n
\n\n
\n \n {{ contactInfo.Name }}\n \n
\n
\n\n
\n\n
\n\n
\n \n
\n\n
\n {{ moduleAccount + ':sidepanel.loadingDataTitle' | i18next: { format: 'title' } }}\n
\n\n
\n\n
\n\n \n\n
    \n\n \n
  • \n\n \n\n \n
    \n \n
    \n
    \n\n
  • \n\n \n
  • \n\n \n\n \n
    \n \n
    \n
    \n\n
  • \n\n \n
  • \n\n \n\n \n
    \n \n
    \n
    \n\n
  • \n\n
\n\n
\n\n
\n\n \n\n \n\n
\n\n \n\n \n\n
\n\n
\n\n
\n\n\n\n \n\n

\n {{ moduleAccount + ':modal.body.confirmDeleteAccountDeleteTheAccount' | i18next: { format: 'capitalize' } }}\n {{ (user$ | async).Email }}.\n {{ moduleAccount + ':modal.body.confirmDeleteAccountDeleteTheAccountDomain' | i18next: { format: 'capitalize' } }}\n {{ (user$ | async).DomainName }}\n

\n\n

\n {{ moduleAccount + ':modal.body.confirmDeleteAccountAllDataRelatedToImmutability' | i18next: { format: 'capitalize' } }}\n

\n\n \n {{ moduleAccount + ':modal.body.confirmDeleteAccountAllYourDomainImmutability' | i18next: { format: 'capitalize' } }}\n \n\n
\n\n \n\n

\n {{ moduleAccount + ':modal.body.confirmDeleteAccountDeleteTheAccount' | i18next: { format: 'capitalize' } }}\n {{ (user$ | async).Email }}.\n {{ moduleAccount + ':modal.body.confirmDeleteAccountDeleteTheAccountDomain' | i18next: { format: 'capitalize' } }}\n {{ (user$ | async).DomainName }}\n

\n\n

\n {{ moduleAccount + ':modal.body.confirmDeleteAccountAllDataRelatedTo' | i18next: { format: 'capitalize' } }}\n

\n\n \n {{ moduleAccount + ':modal.body.confirmDeleteAccountAllYourDomain' | i18next: { format: 'capitalize' } }}\n \n\n
\n\n
\n\n\n \n {{ moduleAccount + ':modal.body.specifiedBackupDestination' | i18next: { format: 'capitalize' } }}?\n \n\n","import { Location } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, OnInit, TemplateRef, ViewChild } from '@angular/core';\nimport { FormBuilder, FormControl, UntypedFormGroup, ValidationErrors } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { CustomCVAccessor, CustomControl, SECRET_KEY_MASK, WINDOW } from '@common';\nimport {\n AlternateAccountTabForm,\n BackupDestinationTabForm,\n GeneralTabForm,\n MyAccountForm,\n MyAccountTab\n} from '@common/components/my-account/my-account-sidepanel/my-account-sidepanel.model';\nimport {\n AddAlternateEmail,\n AlternateEmail,\n AuthUser,\n BackupDestination,\n DateUnitEnum,\n ExportSettings,\n MyAccountContactInfo,\n MyAccountPhone,\n ProductMode,\n StorageStateEnum,\n hasDomainAdminRole,\n hasSingleUserRole\n} from '@common/models';\nimport { AuthService, MyAccountService, UserOdataService } from '@common/services';\nimport { canAbilityCdRef, hasActionsQueue, isHomeUser } from '@common/utils';\nimport { ToastFactory } from '@common/utils/helper/show-toast.helper';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { I18NextPipe } from 'angular-i18next';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { SidepanelInfoEvent } from 'libs/mbs-ui-kit/sidepanel/sidepanel.service';\nimport { get, isEqual, isNil } from 'lodash';\nimport {\n DataChangeWatcherService,\n FormsUtil,\n MbsPopupType,\n MbsSize,\n ModalService,\n ModalSettings,\n SidepanelCrudBase,\n SidepanelService,\n TabsService,\n TabsetDirective\n} from 'mbs-ui-kit';\nimport { BehaviorSubject, Observable, combineLatest, forkJoin, from, merge, of } from 'rxjs';\nimport { catchError, distinctUntilChanged, filter, finalize, first, map, share, shareReplay, switchMap, tap } from 'rxjs/operators';\n\n@UntilDestroy()\n@Component({\n selector: 'app-my-account-sidepanel',\n templateUrl: './my-account-sidepanel.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MyAccountSidepanelComponent extends SidepanelCrudBase implements OnInit {\n @ViewChild(TabsetDirective, { static: false }) public tabset: TabsetDirective;\n @ViewChild('deleteAccountConfirmTemplate', { static: true, read: TemplateRef }) deleteAccountConfirmTemplate: TemplateRef;\n @ViewChild('backupDestinationConfirmTemplate', { static: true, read: TemplateRef }) backupDestinationConfirmTemplate: TemplateRef;\n\n private isStandaloneMode: boolean;\n\n public deleteLoading$: BehaviorSubject = new BehaviorSubject(false);\n public saveLoading$: BehaviorSubject = new BehaviorSubject(false);\n\n private _loading$: BehaviorSubject = new BehaviorSubject(true);\n public loading$: Observable;\n\n public isSuperAdmin$: Observable;\n public isStandaloneMode$: Observable;\n public isAvailableDeleteAccount$: Observable;\n public user$: Observable;\n public contactInfo$: Observable;\n public formGroup: UntypedFormGroup;\n\n public addedStorage: boolean;\n public twoStepEnabled: boolean;\n public alternateEmailVerified: boolean;\n public initialAlternateEmail: string; // for fix browser autocomplete email\n\n public readonly MyAccountTab = MyAccountTab;\n public readonly MbsPopupType = MbsPopupType;\n public readonly moduleAccount = I18_NAMESPACE_APPS_UI.account;\n public readonly isProviderSignIn$: Observable;\n\n get queryParams(): URLSearchParams {\n return new URLSearchParams(this.window.location.search);\n }\n\n get generalTabControl(): CustomControl {\n return >this.formGroup.controls[MyAccountTab.general];\n }\n\n get alternateAccountTabControl(): CustomControl {\n return >this.formGroup.controls[MyAccountTab.alternateAccount];\n }\n\n get backupDestinationTabControl(): CustomControl {\n return >this.formGroup.controls[MyAccountTab.backupDestination];\n }\n\n get isImmutability(): boolean {\n return this.authService?.isImmutability;\n }\n\n constructor(\n @Inject(WINDOW) private window: Window,\n private toastFactory: ToastFactory,\n private cdRef: ChangeDetectorRef,\n private location: Location,\n private fb: FormBuilder,\n private i18nPipe: I18NextPipe,\n private modalService: ModalService,\n private tabsService: TabsService,\n private route: ActivatedRoute,\n private router: Router,\n private myAccountService: MyAccountService,\n private authService: AuthService,\n private userService: UserOdataService,\n private sidepanelService: SidepanelService,\n cdNew: DataChangeWatcherService\n ) {\n super(cdNew);\n this.mergeClose.unsubscribe();\n this.mergeClose = merge(this.close, this.delete).subscribe(() => this.genericPanel.close());\n\n this.user$ = authService.getAuthUser().pipe(shareReplay(1));\n this.loading$ = this._loading$.pipe(hasActionsQueue(), shareReplay(1));\n\n this.isSuperAdmin$ = combineLatest([this.user$, authService.getRoles()]).pipe(\n map(([user, roles]) => isHomeUser(user) || hasDomainAdminRole(roles))\n );\n\n this.isStandaloneMode$ = authService.getSystemInfo().pipe(map((systemInfo) => systemInfo.ProductMode === ProductMode.resale));\n\n this.isAvailableDeleteAccount$ = authService.getRoles().pipe(\n switchMap((roles) => {\n const isDomainAdmin = hasDomainAdminRole(roles);\n const isSingleUser = hasSingleUserRole(roles);\n\n return of(isDomainAdmin || isSingleUser);\n })\n );\n\n this.formGroup = fb.group({\n [MyAccountTab.general]: [null, this.controlValidator.bind(this)],\n [MyAccountTab.alternateAccount]: [null, this.controlValidator.bind(this)],\n [MyAccountTab.backupDestination]: [null, this.controlValidator.bind(this)]\n });\n\n this.loadingData = true;\n this.contactInfo$ = myAccountService.getContactInfo().pipe(\n finalize(() => {\n this._loading$.next(false);\n this.loadingData = false;\n }),\n share()\n );\n\n this.isProviderSignIn$ = authService.isProviderSignIn();\n }\n\n controlValidator(control: CustomControl): ValidationErrors | null {\n const ctrl = control.value;\n\n if (ctrl && !ctrl.valid) {\n return { tab: { message: 'Invalid Control' } };\n }\n\n return null;\n }\n\n ngOnInit(): void {\n this.formGroup.valueChanges\n .pipe(\n distinctUntilChanged((prev, next) => isEqual(prev, next)),\n untilDestroyed(this)\n )\n .subscribe(() => this.cdRef.detectChanges());\n\n this.isStandaloneMode$.pipe(untilDestroyed(this)).subscribe((isStandaloneMode) => {\n this.isStandaloneMode = isStandaloneMode;\n });\n\n this.sidepanelService.onClose\n .pipe(\n filter((event: SidepanelInfoEvent) => event.id === this.genericPanel.id),\n untilDestroyed(this)\n )\n .subscribe(() => this.setRouteSlug(false));\n\n this.sidepanelService.onOpen\n .pipe(\n filter((event: SidepanelInfoEvent) => event.id === this.genericPanel.id),\n untilDestroyed(this)\n )\n .subscribe(() => {\n this.setRouteSlug(true);\n\n this.formGroup.reset(this.defaultFormValue(), { emitEvent: false });\n this.initialAlternateEmail = null;\n this.hold();\n this.selectActivateTab();\n this.initTabs();\n });\n }\n\n private setRouteSlug(needQueryParams: boolean, tabId?: string): void {\n const tab = tabId || this.queryParams.get('tab') || MyAccountTab.general;\n const url: string = this.router\n .createUrlTree([], {\n relativeTo: this.route,\n queryParams: {\n myAccount: needQueryParams ? true : null,\n tab: needQueryParams ? tab : null\n },\n queryParamsHandling: 'merge'\n })\n .toString();\n\n this.location.go(url);\n }\n\n private selectActivateTab(): void {\n const activatedTabId = this.queryParams.get('tab') || MyAccountTab.general;\n\n this.tabset.select(activatedTabId);\n }\n\n public updateGeneralTab(): void {\n this._loading$.next(true);\n\n forkJoin([this.myAccountService.getExportSettings(), this.contactInfo$, this.authService.getSystemInfo()])\n .pipe(\n filter(([exportSettings, contactInfo, systemInfo]) => !isNil(exportSettings) || !isNil(contactInfo) || !isNil(systemInfo)),\n finalize(() => this._loading$.next(false)),\n first()\n )\n .subscribe({\n next: ([exportSettings, contactInfo, systemInfo]) => {\n if (!contactInfo || !systemInfo) {\n this.generalTabControl.setValue(null);\n } else {\n const formGroup = this.getGeneralTabFormGroup({ exportSettings, contactInfo, systemInfo });\n\n this.generalTabControl.setValue(formGroup, { emitEvent: false });\n this.generalTabControl.markAsUntouched();\n }\n this.attachObject(this.generalTabControl, (obj: CustomControl) => obj.value);\n queueMicrotask(() => canAbilityCdRef.call(this) && this.cdRef.detectChanges());\n }\n });\n }\n\n private getGeneralTabFormGroup = ({ exportSettings, contactInfo, systemInfo }): CustomCVAccessor => {\n const defaultRetentionSettings = {\n num: 30,\n unit: DateUnitEnum.Days\n };\n return {\n valid: true,\n data: {\n email: contactInfo.Email,\n phone: contactInfo.Phone || '',\n version: systemInfo.AssemblyVersion,\n exportSettings: {\n keepAllowed: {\n checkbox: Boolean(exportSettings && exportSettings.ProtectedWithPassword),\n password: exportSettings && exportSettings.ProtectedWithPassword ? SECRET_KEY_MASK : ''\n },\n keepCntUnits: {\n checkbox: Boolean(exportSettings && exportSettings.RetentionSettings.Enabled),\n number:\n exportSettings && exportSettings.RetentionSettings.Enabled\n ? exportSettings.RetentionSettings.DateNum\n : defaultRetentionSettings.num,\n filter:\n exportSettings && exportSettings.RetentionSettings.Enabled\n ? exportSettings.RetentionSettings.DateUnit\n : defaultRetentionSettings.unit\n }\n }\n }\n };\n };\n\n public updateAlternateAccountTab(): void {\n this._loading$.next(true);\n\n this.user$\n .pipe(\n switchMap((user) => this.userService.getAlternateEmail(user.Id)),\n finalize(() => this._loading$.next(false)),\n first()\n )\n .subscribe({\n next: (info: AlternateEmail) => {\n this.twoStepEnabled = info?.TwoStepEnabled || null;\n this.alternateEmailVerified = info?.Verified || null;\n this.initialAlternateEmail = info?.Email || null;\n\n const formGroup = this.getAlternateAccountTabFormGroup(info || null);\n\n this.alternateAccountTabControl.setValue(formGroup, { emitEvent: false });\n this.alternateAccountTabControl.markAsUntouched();\n\n this.attachObject(this.alternateAccountTabControl, (obj: CustomControl) => obj.value);\n queueMicrotask(() => canAbilityCdRef.call(this) && this.cdRef.detectChanges());\n }\n });\n }\n\n private getAlternateAccountTabFormGroup = (info?: AlternateEmail): CustomCVAccessor => ({\n valid: true,\n data: {\n alternateEmail: info?.Email || '',\n password: '',\n confirmPassword: ''\n }\n });\n\n public updateBackupDestinationTab(): void {\n this._loading$.next(true);\n\n this.myAccountService\n .getStorage()\n .pipe(\n finalize(() => this._loading$.next(false)),\n first()\n )\n .subscribe({\n next: (backupDestination: BackupDestination) => {\n if (!backupDestination) {\n this.backupDestinationTabControl.setValue(null);\n } else {\n const formGroup = this.getBackupDestinationFormGroup(backupDestination);\n\n if (backupDestination.Endpoint) formGroup.data['endpoint'] = backupDestination.Endpoint;\n if (backupDestination.EndpointSuffix) formGroup.data['endpointSuffix'] = backupDestination.EndpointSuffix;\n\n this.backupDestinationTabControl.setValue(formGroup, { emitEvent: false });\n this.backupDestinationTabControl.markAsUntouched();\n }\n this.updateReadonly(backupDestination);\n this.attachObject(this.backupDestinationTabControl, (obj: CustomControl) => obj.value);\n queueMicrotask(() => canAbilityCdRef.call(this) && this.cdRef.detectChanges());\n }\n });\n }\n\n private updateReadonly(settings: BackupDestination): void {\n this.addedStorage = !isNil(settings) && [settings.Name, settings.BucketName, settings.RootFolder, settings.AccessKey].every(Boolean);\n }\n\n private getBackupDestinationFormGroup = (backupDestination: BackupDestination): CustomCVAccessor => ({\n valid: true,\n data: {\n storageType: backupDestination.StorageType,\n name: backupDestination.Name,\n bucketName: backupDestination.BucketName,\n rootFolder: backupDestination.RootFolder,\n accessKey: backupDestination.AccessKey,\n secretKey: SECRET_KEY_MASK\n }\n });\n\n private defaultFormValue = (): MyAccountForm => ({\n [MyAccountTab.general]: null,\n [MyAccountTab.alternateAccount]: null,\n [MyAccountTab.backupDestination]: null\n });\n\n handleDelete(): Observable {\n return from(\n this.modalService.open(\n {\n header: { title: this.i18nPipe.transform(this.moduleAccount + ':modal.title.confirmDeleteAccount', { format: 'title' }) },\n footer: {\n okButton: {\n text: this.i18nPipe.transform(this.moduleAccount + ':modal.button.delete', { format: 'title' }),\n type: 'danger'\n }\n }\n },\n this.deleteAccountConfirmTemplate\n )\n ).pipe(\n switchMap((confirmed: boolean) => {\n this.deleteLoading$.next(true);\n return confirmed\n ? this.myAccountService.deleteAccount().pipe(\n map((result: boolean) => {\n if (result) {\n this.authService.logout();\n }\n\n this.genericPanel.panelClosed.emit();\n }),\n map(() => true),\n catchError(() => of(false))\n )\n : of(false);\n }),\n finalize(() => this.deleteLoading$.next(false)),\n catchError(() => of(false))\n );\n }\n\n handleSave(): Observable {\n if (!this.isValidSidepanel()) return of(false);\n\n const requestPool$: Observable[] = [];\n\n if (this.isAvailableSaveGeneralTab()) requestPool$.push(this.handleSaveGeneral());\n if (this.isAvailableSaveAlternateAccountTab()) requestPool$.push(this.handleSaveAlternateEmail());\n if (this.isAvailableSaveBackupDestinationTab()) requestPool$.push(this.handleSaveBackupDestination());\n\n if (requestPool$.length == 0) {\n this.toastFactory.showToast({\n type: MbsPopupType.info,\n nameSpace: this.moduleAccount,\n body: { key: ':toast.body.nothingToSave' }\n });\n\n return of(true);\n }\n\n this.saveLoading$.next(true);\n return forkJoin(requestPool$).pipe(\n map((success: boolean[]) => {\n const isSavedSuccessfully = success.every((val) => Boolean(val));\n\n if (isSavedSuccessfully) {\n this.hold();\n this.genericPanel.panelClosed.emit();\n success.length > 1 &&\n this.toastFactory.showToast({\n type: MbsPopupType.success,\n nameSpace: this.moduleAccount,\n body: { key: ':toast.body.allSavedSuccessfully' }\n });\n }\n\n return isSavedSuccessfully;\n }),\n finalize(() => this.saveLoading$.next(false))\n );\n }\n\n public isValidSidepanel(): boolean {\n if (!this.cdNew.tabsService.allTabsValid) {\n if (this.generalTabControl.invalid) {\n FormsUtil.triggerValidation(this.generalTabControl);\n }\n\n if (this.alternateAccountTabControl.invalid) {\n FormsUtil.triggerValidation(this.alternateAccountTabControl);\n }\n\n if (this.backupDestinationTabControl.invalid) {\n FormsUtil.triggerValidation(this.backupDestinationTabControl);\n }\n\n this.tabsService.openFirstError();\n\n return false;\n }\n\n if (this.formGroup.invalid) {\n FormsUtil.triggerValidation(this.formGroup);\n\n return false;\n }\n\n return true;\n }\n\n private isAvailableSaveGeneralTab(): boolean {\n return (\n this.generalTabControl.dirty &&\n this.generalTabControl.touched &&\n !isNil(this.generalTabControl.value) &&\n this.isControlChanged(this.generalTabControl)\n );\n }\n\n private isAvailableSaveAlternateAccountTab(): boolean {\n return (\n this.alternateAccountTabControl.dirty &&\n this.alternateAccountTabControl.touched &&\n !isNil(this.alternateAccountTabControl.value) &&\n this.alternateAccountTabControl.value.data.alternateEmail &&\n this.alternateAccountTabControl.value.data.password &&\n this.alternateAccountTabControl.value.data.confirmPassword &&\n this.isControlChanged(this.alternateAccountTabControl)\n );\n }\n\n private isAvailableSaveBackupDestinationTab(): boolean {\n return (\n this.backupDestinationTabControl.dirty &&\n this.backupDestinationTabControl.touched &&\n !isNil(this.backupDestinationTabControl.value) &&\n this.isControlChanged(this.backupDestinationTabControl)\n );\n }\n\n private isControlChanged(control: FormControl): boolean {\n return this.observableObjects.length > 0 && !this.observableObjects.some((ob) => isEqual(control.value, ob.previousData));\n }\n\n private handleSaveGeneral(): Observable {\n const requestPool: Observable[] = [];\n const isContactChanged = !this.observableObjects.some((obj) =>\n isEqual(get(obj, 'previousData.data.phone'), get(this.generalTabControl, 'value.data.phone'))\n );\n const isExportSettingsChanged = !this.observableObjects.some((obj) =>\n isEqual(get(obj, 'previousData.data.exportSettings'), get(this.generalTabControl, 'value.data.exportSettings'))\n );\n\n if (isContactChanged) requestPool.push(this.handleSaveContacts());\n if (isExportSettingsChanged) requestPool.push(this.handleSaveExportSettings());\n\n return combineLatest([...requestPool]).pipe(\n tap((success: boolean[]) => {\n if (success.every(Boolean)) {\n this.toastFactory.showToast({\n type: MbsPopupType.success,\n nameSpace: this.moduleAccount,\n body: { key: ':toast.body.saveGeneralTab' }\n });\n }\n })\n );\n }\n\n private handleSaveContacts(): Observable {\n const formData = this.generalTabControl.value.data;\n const payloadContact = {\n Phone: formData.phone || ''\n } as MyAccountPhone;\n\n return this.myAccountService.setContactInfo(payloadContact).pipe(\n map(() => true),\n catchError(() => of(false))\n );\n }\n\n private handleSaveExportSettings(): Observable {\n const formData = this.generalTabControl.value.data;\n const payloadExportSettings = {\n ProtectedWithPassword: formData.exportSettings.keepAllowed.checkbox,\n Password: formData.exportSettings.keepAllowed.password ? formData.exportSettings.keepAllowed.password : null,\n RetentionSettings: {\n Enabled: formData.exportSettings.keepCntUnits.checkbox,\n DateNum: formData.exportSettings.keepCntUnits.number,\n DateUnit: formData.exportSettings.keepCntUnits.filter\n }\n } as ExportSettings;\n\n return this.myAccountService.setExportSettings(payloadExportSettings).pipe(\n map(() => true),\n catchError(() => of(false))\n );\n }\n\n private handleSaveAlternateEmail(): Observable {\n return this.user$.pipe(\n switchMap((user) => {\n const model: AlternateAccountTabForm = this.alternateAccountTabControl.value.data;\n const payload = {\n userId: user.Id,\n email: model.alternateEmail,\n password: model.password,\n confirmPassword: model.confirmPassword\n } as AddAlternateEmail;\n\n return this.userService.addAlternateEmail(payload).pipe(\n map(() => true),\n catchError(() => of(false)),\n tap((success: boolean) => {\n if (success) {\n this.toastFactory.showToast({\n type: MbsPopupType.success,\n nameSpace: this.moduleAccount,\n body: { key: ':toast.body.saveAlternateEmail' }\n });\n }\n })\n );\n })\n );\n }\n\n private handleSaveBackupDestination(): Observable {\n const model: BackupDestinationTabForm = this.backupDestinationTabControl.value.data;\n const payload = {\n AccessKey: model.accessKey,\n BucketName: model.bucketName,\n Name: model.name,\n RootFolder: model.rootFolder,\n SecretKey: model.secretKey === SECRET_KEY_MASK ? null : model.secretKey,\n StorageType: model.storageType,\n Endpoint: model.endpoint,\n EndpointSuffix: model.endpointSuffix\n } as BackupDestination;\n\n if (model.endpoint) payload.Endpoint = model.endpoint;\n if (model.endpointSuffix) payload.EndpointSuffix = model.endpointSuffix;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return this.testSavingStorage(payload).pipe(\n switchMap((testResult: boolean) => {\n if (!testResult) {\n return from(this.showBackupDestinationConfirmModal()).pipe(\n catchError(() => of(false)),\n switchMap((confirmed: boolean) => (confirmed ? this.setStorage(payload) : of(null)))\n );\n } else {\n return this.setStorage(payload);\n }\n })\n );\n }\n\n private setStorage(payload: BackupDestination): Observable {\n return this.myAccountService.setStorage(payload).pipe(\n map(() => true),\n catchError(() => of(false)),\n tap((success: boolean) => {\n if (success) {\n this.toastFactory.showToast({\n type: MbsPopupType.success,\n nameSpace: this.moduleAccount,\n body: { key: ':toast.body.saveBackupDestination' }\n });\n }\n })\n );\n }\n\n testSavingStorage(payload: BackupDestination): Observable {\n return this.myAccountService.testStorage(payload).pipe(\n map((result) => result.value === StorageStateEnum.ok),\n untilDestroyed(this)\n );\n }\n\n private showBackupDestinationConfirmModal(): Promise {\n const settings: ModalSettings = {\n header: {\n title: this.i18nPipe.transform(this.moduleAccount + ':modal.title.backupDestinationToSaveNotFound', { format: 'title' })\n },\n size: MbsSize.sm,\n responsive: true,\n footer: {\n okButton: {\n text: this.i18nPipe.transform(this.moduleAccount + ':modal.button.save', { format: 'title' })\n },\n cancelButton: {\n text: this.i18nPipe.transform(this.moduleAccount + ':modal.button.discard', { format: 'title' })\n }\n }\n };\n\n return this.modalService.open(settings, this.backupDestinationConfirmTemplate);\n }\n\n handleBeforeUpdateTabset({ nextId, currentId }): void {\n if (nextId && currentId) {\n this.setRouteSlug(this.genericPanel.show, nextId);\n this.initTabs();\n }\n }\n\n private initTabs(): void {\n if (this.needInitGeneralTab()) this.updateGeneralTab();\n if (this.needInitAlternateAccountTab()) this.updateAlternateAccountTab();\n if (this.needInitBackupDestinationTab()) this.updateBackupDestinationTab();\n }\n\n private needInitGeneralTab(): boolean {\n return this.queryParams.get('tab') === MyAccountTab.general && isNil(this.generalTabControl.value);\n }\n\n private needInitAlternateAccountTab(): boolean {\n return (\n this.queryParams.get('tab') === MyAccountTab.alternateAccount &&\n (isNil(this.alternateAccountTabControl.value) || !this.initialAlternateEmail)\n );\n }\n\n private needInitBackupDestinationTab(): boolean {\n return (\n this.isStandaloneMode &&\n this.queryParams.get('tab') === MyAccountTab.backupDestination &&\n isNil(this.backupDestinationTabControl.value)\n );\n }\n\n updateData(): void {\n // void.\n // The method is required for implementation\n }\n}\n","import { FormControl } from '@angular/forms';\nimport { DateUnitEnum } from '@common/models';\n\nexport enum MyAccountTab {\n general = 'generalTab',\n alternateAccount = 'alternateAccountTab',\n backupDestination = 'backupDestinationTab'\n}\n\nexport type MyAccountForm = {\n [MyAccountTab.general]: FormControl;\n [MyAccountTab.alternateAccount]: FormControl;\n [MyAccountTab.backupDestination]: FormControl;\n};\n\nexport type GeneralTabForm = {\n email: string;\n phone: string;\n version: string;\n exportSettings: {\n keepAllowed: {\n checkbox: boolean;\n password: string;\n };\n keepCntUnits: {\n checkbox: boolean;\n number: number;\n filter: DateUnitEnum;\n };\n };\n};\n\nexport type AlternateAccountTabForm = {\n alternateEmail: string;\n password: string;\n confirmPassword: string;\n};\n\nexport type BackupDestinationTabForm = {\n storageType: string;\n name: string;\n bucketName: string;\n rootFolder: string;\n accessKey: string;\n secretKey: string;\n endpoint?: string;\n endpointSuffix?: string;\n};\n","import { Location } from '@angular/common';\nimport { Inject, Injectable, Injector, Type } from '@angular/core';\nimport { WINDOW } from '@common';\nimport { MyAccountSidepanelComponent } from '@common/components/my-account/my-account-sidepanel/my-account-sidepanel.component';\nimport { Sidepanel, SidepanelBase, SidepanelCrudBase, SidepanelService } from 'mbs-ui-kit';\nimport { Observable } from 'rxjs';\nimport { first, map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MyAccountSidepanelService {\n private readonly componentInstance: Type>;\n public sidepanel: Sidepanel;\n\n constructor(\n @Inject(WINDOW) private window: Window,\n private injector: Injector,\n private location: Location,\n private sidepanelService: SidepanelService\n ) {\n this.componentInstance = MyAccountSidepanelComponent;\n }\n\n toggleSidepanel(open = true): Observable {\n if (!this.sidepanel) {\n this.sidepanel = this.sidepanelService.add(this.componentInstance, null, this.injector);\n }\n\n return this.toggleByType(this.componentInstance, open);\n }\n\n private toggleByType(type: Type, open: boolean): Observable {\n const panel = this.sidepanelService.get(type) || this.sidepanelService.add(type, null, this.injector);\n\n return this.sidepanelService[open ? 'openByType' : 'closeByType'](type).pipe(\n first(),\n map(() => panel)\n );\n }\n}\n","/* Environment */\nexport const DNS = 'https://0e38b8e12b814f4ab27a249075c5f36b@weblog.mspbackups.com/3';\nexport const STANDALONE_MODE = 'https://scloud.resale-stage.mspbackups.com';\nexport const MBS_MODE = 'https://apps-stage.mspbackups.com';\n/* Environment end*/\n\nexport const headerHeight = 40;\nexport const footerHeight = 100;\nexport const mbsPageContentPadTop = 14;\nexport const mbsPageContentPadBottom = 21;\nexport const MIN_SCREEN_HEIGHT = 650;\nexport const SINGLE_QUOTES_REGEX = /^[']|[']*$/;\nexport const FIRST_SYMBOL_$ = /^[$]/;\nexport const TEXT_OVERFLOW = 'text-overflow';\nexport const TABLE_MIN_HEIGHT = '253px';\nexport const DOUBLE_SLASH_REGEX = /([^:]\\/)\\/+/g;\nexport const PHONE_REGEX =\n '^(\\\\+\\\\s?)?((? command)\n Pending = 'Pending', // added to db queue\n Running = 'Running' // passed to worker (for header may be partially on tasks with several items)\n}\n\nexport enum TaskActionState {\n Completed,\n InProgress,\n Failed\n}\n\nexport enum TaskManagerType {\n Artifact = 'Artifact',\n Task = 'Task',\n Unknown = 'Unknown'\n}\n","export enum BackupLicenseStatuses {\n Assigned = 'Assigned',\n NotAvailable = 'Not Available',\n Inactive = 'Inactive'\n}\n","export enum TextColor {\n success = 'text-success',\n info = 'text-info',\n muted = 'text-muted',\n dark = 'text-dark',\n danger = 'text-danger',\n gray500 = 'text-gray-500'\n}\n","export enum RoutePath {\n Account = 'account',\n AuditLog = 'audit-log',\n AuthCallback = 'auth-callback',\n BackupHistory = 'backup-history',\n Calendar = 'calendar',\n Contacts = 'contacts',\n Dashboard = 'dashboard',\n Drive = 'drive',\n ExportResults = 'export-results',\n GoogleOffice365 = 'gapps-office365',\n Help = 'help',\n History = 'history',\n Login = 'login',\n Mail = 'mail',\n NotFound = 'not-found',\n Payments = 'payments',\n Reports = 'reports',\n RetentionPolicy = 'retention-policy',\n SharedDrives = 'shared-drives',\n Sharepoint = 'sharepoint',\n SkipItems = 'skipped-items-history',\n TaskManager = 'task-manager',\n Teams = 'teams',\n UserGroups = 'user-groups',\n Users = 'users'\n}\n\nexport enum ProviderPath {\n Alternate = 'alternate',\n Google = 'gapps',\n Office = 'office'\n}\n","export const STAGE_HOSTS = [\n 'apps-rc.mspbackups.com',\n 'apps-preprod.mspbackups.com',\n 'scloud.resale-stage.mspbackups.com',\n 'apps-stage.mspbackups.com',\n 'apps-stage2.mspbackups.com'\n]\n\nexport const PROD_HOSTS = [\n '*apps.mspbackups.com',\n 'apps.msp360.com'\n]\n\nexport const LOCAL_HOSTS = ['localhost']\n","import { Directive, ElementRef, HostListener, Input, OnInit, Renderer2 } from '@angular/core';\nimport { UntilDestroy } from '@ngneat/until-destroy';\n\n@UntilDestroy()\n@Directive({\n selector: '[resizeColumn]'\n})\nexport class ResizeColumnDirective implements OnInit {\n @Input('resizeColumn') resizable: boolean;\n\n @Input('resizeColumnMax') max = '30%';\n @Input('resizeColumnMin') min = '16.66666667%';\n\n @Input() reverse: boolean;\n\n private column: HTMLElement;\n private grid: HTMLElement;\n private resizer: HTMLSpanElement;\n\n private pressed: boolean;\n private startX: number;\n private startWidth: number;\n\n private readonly holderClass = 'mbs-resize-holder';\n\n @HostListener('window:resize', ['$event'])\n onResize(event: Event): void {\n if (!(event.target instanceof Window)) return;\n\n this.updateClasses();\n this.updateStyles();\n }\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n ngOnInit(): void {\n if (this.resizable) {\n this.initInstances();\n\n this.insertResizer();\n this.initStyles();\n this.initClasses();\n\n this.initListeners();\n }\n }\n\n private initInstances(): void {\n this.column = this.el.nativeElement;\n this.grid = this.renderer.parentNode(this.column);\n\n this.resizer = this.renderer.createElement('span');\n }\n\n private insertResizer(): void {\n this.renderer.addClass(this.resizer, this.holderClass);\n this.renderer.appendChild(this.column, this.resizer);\n }\n\n private initStyles(): void {\n this.renderer.setStyle(this.column, 'width', this.min);\n this.renderer.setStyle(this.column, 'min-width', this.min);\n this.renderer.setStyle(this.column, 'max-width', this.max);\n }\n\n private initClasses(): void {\n this.reverse && this.renderer.addClass(this.resizer, '--reverse');\n }\n\n private initListeners(): void {\n this.renderer.listen(this.resizer, 'mousedown', this.onMouseDown.bind(this));\n this.renderer.listen(this.grid, 'mousemove', this.onMouseMove.bind(this));\n this.renderer.listen('document', 'mouseup', this.onMouseUp.bind(this));\n }\n\n private updateClasses(): void {\n if (this.resizer) {\n this.resizable ? this.renderer.addClass(this.resizer, this.holderClass) : this.renderer.removeClass(this.resizer, this.holderClass);\n }\n }\n\n private updateStyles(): void {\n if (this.column) {\n this.resizable ? this.renderer.setStyle(this.column, 'width', this.min) : this.renderer.removeStyle(this.column, 'width');\n this.resizable ? this.renderer.setStyle(this.column, 'min-width', this.min) : this.renderer.removeStyle(this.column, 'min-width');\n this.resizable ? this.renderer.setStyle(this.column, 'max-width', this.max) : this.renderer.removeStyle(this.column, 'max-width');\n }\n }\n\n private onMouseDown(e: MouseEvent): void {\n this.pressed = true;\n this.startX = e.pageX;\n this.startWidth = this.column.offsetWidth;\n }\n\n private onMouseMove(e: MouseEvent): void {\n if (this.pressed && e.buttons) {\n e.preventDefault();\n\n const width = this.reverse ? this.startWidth + (this.startX - e.pageX) : this.startWidth + (e.pageX - this.startX);\n\n this.renderer.addClass(this.grid, 'resizing');\n this.renderer.setStyle(this.column, 'width', `${width}px`);\n }\n }\n\n private onMouseUp(): void {\n if (this.pressed) {\n this.pressed = false;\n this.renderer.removeClass(this.grid, 'resizing');\n }\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { inject, InjectionToken } from '@angular/core';\n\nexport const WINDOW = new InjectionToken('An abstraction over global window object', {\n factory: () => {\n const { defaultView } = inject(DOCUMENT);\n\n if (!defaultView) {\n throw new Error('Window is not available');\n }\n\n return defaultView;\n }\n});\n","export enum RestoreToEnum {\n all,\n folder,\n messages\n}\n\nexport interface AnotherUserSettings {\n type: RestoreToEnum;\n userId: string;\n folder: string;\n messages: string[];\n subFolders?: boolean;\n}\n","export interface AuditODataItem {\n AlternateSignIn: boolean;\n BuildedHtml: string;\n Date: string;\n Description: string;\n Id: string;\n Json: boolean;\n UserActionType: UserActionTypes;\n UserActionTypeArea: UserActionTypeAreas;\n UserName: string;\n}\n\nexport type UserActionTypes =\n | UserActionTypesPageVisited\n | UserActionTypesRestoreInstalled\n | UserActionTypesCompleted\n | UserActionTypesViewed\n | UserActionTypesDeletion\n | UserActionTypesExport\n | UserActionTypesRestore\n | UserActionTypesBackupConfigured\n | UserActionTypesBackupDeleted\n | UserActionTypesPermissionsSet\n | UserActionTypesRetentionPolicyChanged\n | UserActionTypesAlternateEmailChanged\n | UserActionTypesBackupOptionsChanged\n | UserActionTypesArchiveOptionsChanged\n | UserActionTypesTaskPerformed\n | UserActionTypesDownloaded;\n\nexport enum UserActionTypeAreas {\n AutoActivationMode = 'AutoActivationMode',\n SettingsChanged = 'SettingsChanged',\n PageVisited = 'PageVisited',\n Restore = 'Restore',\n BackupConfigured = 'BackupConfigured',\n BackupDeleted = 'BackupDeleted',\n PermissionsSet = 'PermissionsSet',\n RetentionPolicyChanged = 'RetentionPolicyChanged',\n AlternateEmailChanged = 'AlternateEmailChanged',\n BackupOptionsChanged = 'BackupOptionsChanged',\n ArchiveOptionsChanged = 'ArchvieOptionsChanged',\n StorageChanged = 'StorageChanged',\n TaskPerformed = 'TaskPerformed',\n Downloaded = 'Downloaded',\n ContentViewed = 'ContentViewed',\n Deletion = 'Deletion',\n Export = 'Export',\n ExportSettingsChanged = 'ExportSettingsChanged',\n DefaultRetentionPolicySet = 'DefaultRetentionPolicySet',\n EditEmailReportSettings = 'EditEmailReportSettings',\n EmailReportSettingsChanged = 'EmailReportSettingsChanged',\n TeamsItemsRestoreInitiated = 'TeamsItemsRestoreInitiated',\n TeamsItemsRestoreCompleted = 'TeamsItemsRestoreCompleted'\n}\n\nexport enum UserActionTypesPageVisited {\n MailVisited = 'MailVisited',\n DriveVisited = 'DriveVisited',\n ContactsVisited = 'ContactsVisited',\n CalendarVisited = 'CalendarVisited',\n SharePointVisited = 'SharePointVisited',\n TeamDrivesVisited = 'TeamDrivesVisited'\n}\n\nexport enum UserActionTypesRestoreInstalled {\n MailAllRestoreInitiated = 'MailAllRestoreInitiated',\n MailFolderRestoreInitiated = 'MailFolderRestoreInitiated',\n MailMessagesRestoreInitiated = 'MailMessagesRestoreInitiated',\n ContactsAllRestoreInitiated = 'ContactsAllRestoreInitiated',\n ContactGroupsRestoreInitiated = 'ContactGroupsRestoreInitiated',\n ContactsRestoreInitiated = 'ContactsRestoreInitiated',\n CalendarAllRestoreInitiated = 'CalendarAllRestoreInitiated',\n CalendarGroupsRestoreInitiated = 'CalendarGroupsRestoreInitiated',\n CalendarsRestoreInitiated = 'CalendarsRestoreInitiated',\n CalendarEventsRestoreInitiated = 'CalendarEventsRestoreInitiated',\n DriveItemsRestoreInitiated = 'DriveItemsRestoreInitiated',\n SharePointItemsRestoreInitiated = 'SharePointItemsRestoreInitiated',\n SharedDrivesItemsRestoreInitiated = 'SharedDrivesItemsRestoreInitiated'\n}\n\nexport enum UserActionTypesRestore {\n MailAllRestored = 'MailAllRestored',\n MailFolderRestored = 'MailFolderRestored',\n MailMessagesRestored = 'MailMessagesRestored',\n ContactsAllRestored = 'ContactsAllRestored',\n ContactsGroupRestored = 'ContactsGroupRestored',\n ContactsRestored = 'ContactsRestored',\n CalendarAllRestored = 'CalendarAllRestored',\n CalendarGroupsRestored = 'CalendarGroupsRestored',\n CalendarsRestored = 'CalendarsRestored',\n CalendarEventRestored = 'CalendarEventRestored'\n}\n\nexport enum UserActionTypesCompleted {\n MailAllRestoreCompleted = 'MailAllRestoreCompleted',\n MailMessagesRestoreCompleted = 'MailMessagesRestoreCompleted',\n MailFolderRestoreCompleted = 'MailFolderRestoreCompleted',\n ContactsAllRestoreCompleted = 'ContactsAllRestoreCompleted',\n ContactGroupsRestoreCompleted = 'ContactGroupsRestoreCompleted',\n ContactsRestoreCompleted = 'ContactsRestoreCompleted',\n CalendarAllRestoreCompleted = 'CalendarAllRestoreCompleted',\n CalendarGroupsRestoreCompleted = 'CalendarGroupsRestoreCompleted',\n CalendarsRestoreCompleted = 'CalendarsRestoreCompleted',\n CalendarEventsRestoreCompleted = 'CalendarEventsRestoreCompleted',\n DriveItemsRestoreCompleted = 'DriveItemsRestoreCompleted',\n SharePointRestoreCompleted = 'SharePointRestoreCompleted',\n SharedDrivesRestoreCompleted = 'SharedDrivesRestoreCompleted'\n}\n\nexport enum UserActionTypesBackupConfigured {\n UsersConfiguredBackup = 'UsersConfiguredBackup',\n DomainConfiguredBackup = 'DomainConfiguredBackup',\n UserTurnedOnOff = 'UserTurnedOnOff',\n AllUsersTurnedOn = 'AllUsersTurnedOn'\n}\n\nexport enum UserActionTypesBackupDeleted {\n BackupDeleted = 'BackupDeleted'\n}\n\nexport enum UserActionTypesPermissionsSet {\n PermissionsSet = 'PermissionsSet'\n}\n\nexport enum UserActionTypesViewed {\n MailMessageViewed = 'MailMessageViewed'\n}\n\nexport enum UserActionTypesRetentionPolicyChanged {\n AddedRetentionPolicy = 'AddedRetentionPolicy',\n EditedRetentionPolicy = 'EditedRetentionPolicy',\n DeletedRetentionPolicy = 'DeletedRetentionPolicy',\n AssignedRetentionPolicy = 'AssignedRetentionPolicy',\n EditedArtifactRetentionPolicy = 'EditedArtifactRetentionPolicy'\n}\n\nexport enum UserActionTypesAlternateEmailChanged {\n AddedAlternateEmail = 'AddedAlternateEmail',\n EditedAlternateEmail = 'EditedAlternateEmail',\n DeletedAlternateEmail = 'DeletedAlternateEmail'\n}\n\nexport enum UserActionTypesBackupOptionsChanged {\n AddedBackupOptions = 'AddedBackupOptions',\n EditedBackupOptions = 'EditedBackupOptions',\n DeletedBackupOptions = 'DeletedBackupOptions',\n ChangedSpamTrash = 'ChangedSpamTrash'\n}\n\nexport enum UserActionTypesArchiveOptionsChanged {\n AddedArchiveOptions = 'AddedArchiveOptions',\n EditedArchiveOptions = 'EditedArchiveOptions',\n DeletedArchiveOptions = 'DeletedArchiveOptions'\n}\n\nexport enum UserActionTypesTaskPerformed {\n PausedTask = 'PausedTask',\n CanceledTask = 'CanceledTask',\n CanceledTasks = 'CanceledTasks'\n}\n\nexport enum UserActionTypesDownloaded {\n DriveFileDownloaded = 'DriveFileDownloaded',\n SharePointFileDownloaded = 'SharePointFileDownloaded',\n TeamDrivesFileDownloaded = 'TeamDrivesFileDownloaded',\n MailFileDownloaded = 'MailFileDownloaded'\n}\n\nexport enum UserActionTypesDeletion {\n MailMessagesDeleted = 'MailMessagesDeleted',\n MailFoldersDeleted = 'MailFoldersDeleted',\n ContactGroupsDeleted = 'ContactGroupsDeleted',\n ContactsDeleted = 'ContactsDeleted',\n CalendarGroupsDeleted = 'CalendarGroupsDeleted',\n CalendarsDeleted = 'CalendarsDeleted',\n CalendarEventsDeleted = 'CalendarEventsDeleted',\n DriveItemsDeleted = 'DriveItemsDeleted',\n SharePointItemsDeleted = 'SharePointItemsDeleted',\n TeamDrivesItemsDeleted = 'TeamDrivesItemsDeleted'\n}\n\nexport enum UserActionTypesExport {\n ExportInitiated = 'ExportInitiated',\n ExportCompleted = 'ExportCompleted',\n ExportFileDownloaded = 'ExportFileDownloaded',\n ExportFileDeleted = 'ExportFileDeleted',\n EditedExportSettings = 'EditedExportSettings'\n}\n\nexport type Areas = { id: string; label: string };\n\nexport type DisplayNameItemType = {\n [key: string]: {\n displayName: string;\n [key: string]: unknown;\n };\n};\n\n/**\n * `UserActionType` is `action` in model and form\n */\nexport const UserActionType: DisplayNameItemType = {\n [UserActionTypesPageVisited.MailVisited]: {\n displayName: 'Mail Visited',\n type: 0\n },\n [UserActionTypesPageVisited.DriveVisited]: {\n displayName: 'Drive Visited',\n type: 1\n },\n [UserActionTypesPageVisited.ContactsVisited]: {\n displayName: 'Contacts Visited',\n type: 2\n },\n [UserActionTypesPageVisited.CalendarVisited]: {\n displayName: 'Calendar Visited',\n type: 3\n },\n [UserActionTypesPageVisited.SharePointVisited]: {\n displayName: 'SharePoint Visited',\n type: 4\n },\n [UserActionTypesPageVisited.TeamDrivesVisited]: {\n displayName: 'Shared Drives Visited',\n type: 5\n },\n [UserActionTypesRestoreInstalled.MailAllRestoreInitiated]: {\n displayName: 'Initiated Restore for All Mails',\n type: 6\n },\n [UserActionTypesRestoreInstalled.MailFolderRestoreInitiated]: {\n displayName: 'Initiated Restore for Mail Folder',\n type: 7\n },\n [UserActionTypesRestoreInstalled.MailMessagesRestoreInitiated]: {\n displayName: 'Initiated Restore for Mail Messages',\n type: 8\n },\n [UserActionTypesRestoreInstalled.ContactsAllRestoreInitiated]: {\n displayName: 'Initiated Restore for All Contacts',\n type: 9\n },\n [UserActionTypesRestoreInstalled.ContactGroupsRestoreInitiated]: {\n displayName: 'Initiated Restore for Contact Groups',\n type: 10\n },\n [UserActionTypesRestoreInstalled.ContactsRestoreInitiated]: {\n displayName: 'Initiated Restore for Contacts',\n type: 11\n },\n [UserActionTypesRestoreInstalled.CalendarAllRestoreInitiated]: {\n displayName: 'Initiated Restore for All Calendars',\n type: 12\n },\n [UserActionTypesRestoreInstalled.CalendarGroupsRestoreInitiated]: {\n displayName: 'Initiated Restore for Calendar Groups',\n type: 13\n },\n [UserActionTypesRestoreInstalled.CalendarsRestoreInitiated]: {\n displayName: 'Initiated Restore for Calendars',\n type: 14\n },\n [UserActionTypesRestoreInstalled.CalendarEventsRestoreInitiated]: {\n displayName: 'Initiated Restore for Calendar Events',\n type: 15\n },\n [UserActionTypesBackupConfigured.UsersConfiguredBackup]: {\n displayName: 'User(s) Configured Backup',\n type: 16\n },\n [UserActionTypesBackupConfigured.DomainConfiguredBackup]: {\n displayName: 'Domain Configured Backup',\n type: 17\n },\n [UserActionTypesBackupConfigured.UserTurnedOnOff]: {\n displayName: 'User(s) Turned ON/OFF',\n type: 18\n },\n [UserActionTypesBackupConfigured.AllUsersTurnedOn]: {\n displayName: 'All Users Turned ON',\n type: 19\n },\n [UserActionTypeAreas.BackupDeleted]: {\n displayName: 'Backup Deleted',\n type: 20\n },\n [UserActionTypeAreas.PermissionsSet]: {\n displayName: 'Permissions Set',\n type: 21\n },\n [UserActionTypesRetentionPolicyChanged.AddedRetentionPolicy]: {\n displayName: 'Added Retention Policy',\n type: 22\n },\n [UserActionTypesRetentionPolicyChanged.EditedRetentionPolicy]: {\n displayName: 'Edited Retention Policy',\n type: 23\n },\n [UserActionTypesRetentionPolicyChanged.DeletedRetentionPolicy]: {\n displayName: 'Deleted Retention Policy',\n type: 24\n },\n [UserActionTypesRetentionPolicyChanged.AssignedRetentionPolicy]: {\n displayName: 'Assigned Retention Policy',\n type: 25\n },\n [UserActionTypesAlternateEmailChanged.AddedAlternateEmail]: {\n displayName: 'Added Alternate Email',\n type: 26\n },\n [UserActionTypesAlternateEmailChanged.EditedAlternateEmail]: {\n displayName: 'Edited Alternate Email',\n type: 27\n },\n [UserActionTypesAlternateEmailChanged.DeletedAlternateEmail]: {\n displayName: 'Deleted Alternate Email',\n type: 28\n },\n [UserActionTypesBackupOptionsChanged.AddedBackupOptions]: {\n displayName: 'Added Backup Options',\n type: 29\n },\n [UserActionTypesBackupOptionsChanged.EditedBackupOptions]: {\n displayName: 'Edited Backup Options',\n type: 30\n },\n [UserActionTypesBackupOptionsChanged.DeletedBackupOptions]: {\n displayName: 'Deleted Backup Options',\n type: 31\n },\n [UserActionTypesBackupOptionsChanged.ChangedSpamTrash]: {\n displayName: 'Changed Folders',\n type: 32\n },\n [UserActionTypesArchiveOptionsChanged.AddedArchiveOptions]: {\n displayName: 'Added Archive Options',\n type: 33\n },\n [UserActionTypesArchiveOptionsChanged.EditedArchiveOptions]: {\n displayName: 'Edited Archive Options',\n type: 34\n },\n [UserActionTypesArchiveOptionsChanged.DeletedArchiveOptions]: {\n displayName: 'Deleted Archive Options',\n type: 35\n },\n [UserActionTypesTaskPerformed.PausedTask]: {\n displayName: 'Paused Task',\n type: 36\n },\n [UserActionTypesTaskPerformed.CanceledTask]: {\n displayName: 'Canceled Task',\n type: 37\n },\n [UserActionTypesDownloaded.DriveFileDownloaded]: {\n displayName: 'Drive File Downloaded',\n type: 38\n },\n [UserActionTypesDownloaded.SharePointFileDownloaded]: {\n displayName: 'SharePoint File Downloaded',\n type: 39\n },\n [UserActionTypesDownloaded.TeamDrivesFileDownloaded]: {\n displayName: 'Shared Drives File Downloaded',\n type: 40\n },\n [UserActionTypesDownloaded.MailFileDownloaded]: {\n displayName: 'Mail Attachment Downloaded',\n type: 41\n },\n [UserActionTypesViewed.MailMessageViewed]: {\n displayName: 'Mail Message Viewed',\n type: 42\n },\n [UserActionTypesDeletion.MailMessagesDeleted]: {\n displayName: 'Mail Messages Deleted',\n type: 43\n },\n [UserActionTypesDeletion.MailFoldersDeleted]: {\n displayName: 'Mail Folders Deleted',\n type: 44\n },\n [UserActionTypesDeletion.ContactGroupsDeleted]: {\n displayName: 'Contact Groups Deleted',\n type: 45\n },\n [UserActionTypesDeletion.ContactsDeleted]: {\n displayName: 'Contacts Deleted',\n type: 46\n },\n [UserActionTypesDeletion.CalendarGroupsDeleted]: {\n displayName: 'Calendar Groups Deleted',\n type: 47\n },\n [UserActionTypesDeletion.CalendarsDeleted]: {\n displayName: 'Calendars Deleted',\n type: 48\n },\n [UserActionTypesDeletion.CalendarEventsDeleted]: {\n displayName: 'Calendar Events Deleted',\n type: 49\n },\n [UserActionTypesDeletion.DriveItemsDeleted]: {\n displayName: 'Drive Items Deleted',\n type: 50\n },\n [UserActionTypesDeletion.SharePointItemsDeleted]: {\n displayName: 'SharePoint Items Deleted',\n type: 51\n },\n [UserActionTypesDeletion.TeamDrivesItemsDeleted]: {\n displayName: 'Shared Drives Items Deleted',\n type: 52\n },\n [UserActionTypesRestoreInstalled.DriveItemsRestoreInitiated]: {\n displayName: 'Initiated Restore for Drive Items',\n type: 53\n },\n [UserActionTypesCompleted.MailAllRestoreCompleted]: {\n displayName: 'All Mails Restore Completed',\n type: 54\n },\n [UserActionTypesCompleted.MailFolderRestoreCompleted]: {\n displayName: 'Mail Folder Restore Completed',\n type: 55\n },\n [UserActionTypesCompleted.MailMessagesRestoreCompleted]: {\n displayName: 'Mail Messages Restore Completed',\n type: 56\n },\n [UserActionTypesCompleted.ContactsAllRestoreCompleted]: {\n displayName: 'All Contacts Restore Completed',\n type: 57\n },\n [UserActionTypesCompleted.ContactGroupsRestoreCompleted]: {\n displayName: 'Contact Groups Restore Completed',\n type: 58\n },\n [UserActionTypesCompleted.ContactsRestoreCompleted]: {\n displayName: 'Contacts Restore Completed',\n type: 59\n },\n [UserActionTypesCompleted.CalendarAllRestoreCompleted]: {\n displayName: 'All Calendars Restore Completed',\n type: 60\n },\n [UserActionTypesCompleted.CalendarGroupsRestoreCompleted]: {\n displayName: 'Calendar Groups Restore Completed',\n type: 61\n },\n [UserActionTypesCompleted.CalendarsRestoreCompleted]: {\n displayName: 'Calendars Restore Completed',\n type: 62\n },\n [UserActionTypesCompleted.CalendarEventsRestoreCompleted]: {\n displayName: 'Calendar Events Restore Completed',\n type: 63\n },\n [UserActionTypesCompleted.DriveItemsRestoreCompleted]: {\n displayName: 'Drive Items Restore Completed',\n type: 64\n },\n [UserActionTypesExport.ExportInitiated]: {\n displayName: 'Export Initiated',\n type: 65\n },\n [UserActionTypesExport.ExportCompleted]: {\n displayName: 'Export Completed',\n type: 66\n },\n [UserActionTypesExport.ExportFileDownloaded]: {\n displayName: 'Export File Downloaded',\n type: 67\n },\n [UserActionTypesExport.ExportFileDeleted]: {\n displayName: 'Export File Deleted',\n type: 68\n },\n [UserActionTypesExport.EditedExportSettings]: {\n displayName: 'Edited Export Settings',\n type: 69\n },\n [UserActionTypeAreas.DefaultRetentionPolicySet]: {\n displayName: 'Default Retention Policy Set',\n type: 70\n },\n [UserActionTypesRestoreInstalled.SharePointItemsRestoreInitiated]: {\n // for Office\n displayName: 'Initiated Restore for SharePoint Items',\n type: 71\n },\n [UserActionTypesCompleted.SharePointRestoreCompleted]: {\n displayName: 'Completed Restore for SharePoint Items',\n type: 72\n },\n [UserActionTypesRestoreInstalled.SharedDrivesItemsRestoreInitiated]: {\n // for Google\n displayName: 'Initiated Restore for Shared Drives Items',\n type: 73\n },\n [UserActionTypesCompleted.SharedDrivesRestoreCompleted]: {\n displayName: 'Completed Restore for Shared Drives Items',\n type: 74\n },\n [UserActionTypeAreas.EditEmailReportSettings]: {\n displayName: 'Edit Email Report Settings',\n type: 75\n },\n [UserActionTypesTaskPerformed.CanceledTasks]: {\n displayName: 'Canceled Tasks',\n type: 76\n },\n [UserActionTypeAreas.StorageChanged]: {\n displayName: 'Backup Storage Change',\n type: 77\n },\n [UserActionTypeAreas.TeamsItemsRestoreInitiated]: {\n displayName: 'Teams items: restore started',\n type: 78\n },\n [UserActionTypeAreas.TeamsItemsRestoreCompleted]: {\n displayName: 'Teams items: restore completed',\n type: 79\n },\n [UserActionTypeAreas.SettingsChanged]: {\n displayName: 'Settings Changed',\n type: 80\n }\n};\n/**\n * `UserActionTypeArea` is `event` in model and form\n */\nexport const UserActionTypeArea: Partial = {\n [UserActionTypeAreas.AutoActivationMode]: {\n displayName: 'Auto-Activation Mode'\n },\n [UserActionTypeAreas.AlternateEmailChanged]: {\n displayName: 'Alternate Email Changed'\n },\n [UserActionTypeAreas.ArchiveOptionsChanged]: {\n displayName: 'Archive Options Changed'\n },\n [UserActionTypeAreas.BackupConfigured]: {\n displayName: 'Backup Configured'\n },\n [UserActionTypeAreas.BackupDeleted]: {\n displayName: 'Backup Deleted'\n },\n [UserActionTypeAreas.BackupOptionsChanged]: {\n displayName: 'Backup Options Changed'\n },\n [UserActionTypeAreas.ContentViewed]: {\n displayName: 'Content Viewed'\n },\n [UserActionTypeAreas.Deletion]: {\n displayName: 'Change'\n },\n [UserActionTypeAreas.Downloaded]: {\n displayName: 'Downloaded'\n },\n [UserActionTypeAreas.Export]: {\n displayName: 'Export'\n },\n [UserActionTypeAreas.PageVisited]: {\n displayName: 'Page Visited'\n },\n [UserActionTypeAreas.PermissionsSet]: {\n displayName: 'Permissions Set'\n },\n [UserActionTypeAreas.Restore]: {\n displayName: 'Restore'\n },\n [UserActionTypeAreas.RetentionPolicyChanged]: {\n displayName: 'Retention Policy Changed'\n },\n [UserActionTypeAreas.TaskPerformed]: {\n displayName: 'Task Performed'\n },\n [UserActionTypeAreas.ExportSettingsChanged]: {\n displayName: 'Export Settings Changed'\n },\n [UserActionTypeAreas.EmailReportSettingsChanged]: {\n displayName: 'Email Report Settings Changed'\n }\n};\n","export enum DateUnitEnum {\n Days = 'Days',\n Weeks = 'Weeks',\n Months = 'Months',\n Years = 'Years'\n}\n\nexport const SmallSizeList = ['B', 'Kb', 'Mb'] as const;\nexport type SmallSize = typeof SmallSizeList[number];\n","import { ApiServiceStatusEnum, ServiceTypeStr } from '@common';\nimport { OdataServiceStatistics, ServiceType } from '@common/models';\nimport { getServiceUiInfo } from '@common/utils';\n\nexport class ServiceStatistics {\n api: ApiServiceStatus;\n available: boolean;\n count: number;\n displayName: string;\n enabled: boolean;\n iconCssClass: string;\n lastBackupDate: Date;\n servicePageUrl: (id: string) => string;\n serviceType: ServiceType;\n size: number;\n users: number;\n\n constructor(odataObj: OdataServiceStatistics) {\n this.serviceType = ServiceType[odataObj.Service] as ServiceType;\n const serviceUiInfo = getServiceUiInfo(this.serviceType);\n\n this.api = {\n status: odataObj.Api.Status,\n url: odataObj.Api.InstallUrl\n };\n this.available = odataObj.Available;\n this.count = odataObj.Count;\n this.displayName = serviceUiInfo.displayName;\n this.enabled = odataObj.Enabled;\n this.iconCssClass = serviceUiInfo.iconCssClass;\n this.lastBackupDate = odataObj.LastBackupDate ? new Date(odataObj.LastBackupDate) : null;\n this.servicePageUrl = serviceUiInfo.url;\n this.size = odataObj.Size;\n this.users = odataObj.ProtectedUsers;\n }\n}\n\nexport interface ServiceStatisticsSaveObject {\n services: ServiceStatistics[];\n forAllEnabledUsers?: boolean;\n}\n\ninterface ApiServiceStatus {\n status: ApiServiceStatusEnum;\n url: string;\n}\n\nexport interface ConfigureServices {\n Service: ServiceTypeStr;\n Enabled: boolean;\n}\n","export interface DomainModel {\n Id: string;\n Name: string;\n Provider: Provider;\n AutoAddUserToBackup: boolean;\n AutoAddGroupToBackup: boolean;\n TeamDrive?: DomainServiceInfo;\n Site?: DomainServiceInfo;\n}\n\nexport enum Provider {\n GoogleBusiness = 'GoogleBusiness',\n OfficeBusiness = 'OfficeBusiness',\n OfficeHome = 'OfficeHome',\n GoogleHome = 'GoogleHome'\n}\n\nexport interface DomainServiceInfo {\n Id: string;\n LastBackupDate: string;\n Size: number;\n}\n\nexport interface DomainStatistic {\n ProviderUsersCnt: number;\n AllCnt: number;\n BackupCnt: number;\n NotInBackupCnt: number;\n InBackupNotInDomainCnt: number;\n SuspendedCnt: number;\n}\n\nexport interface DomainServicesState {\n EmailEnable: boolean;\n DriveEnable: boolean;\n ContactEnable: boolean;\n CalendarEnable: boolean;\n}\n","import { MimeCategory } from '@common';\nimport { RestoreToAnotherUser } from '@common/models/restore-to-another-user.model';\n\nexport interface DriveOdataItem {\n AppName: string;\n CssClass: DriveClasses;\n DriveId?: any;\n ForDomainId?: any;\n HasChildren: boolean;\n Hidden: boolean;\n Id: string;\n MimeTypeId: string;\n MimeCategory: MimeCategory;\n Name: string;\n ParentIdStr?: any;\n ProviderId: string;\n Size: number;\n TreeItemType: string;\n Type: DriveItemType;\n UserId: string;\n}\n\nexport enum DriveClasses {\n folder = 'folder',\n file = 'file'\n}\n\nexport interface Revision {\n FileName: string;\n Id: string;\n ModifyDate: Date;\n}\n\nexport interface RevisionWithRaw extends Revision {\n Raw: string;\n}\n\nexport interface DriveItemDetails {\n Description: string;\n IsDriveItem: boolean;\n IconM: string;\n Path: string[];\n Revisions: Revision[];\n}\n\nexport enum DriveItemType {\n Folder,\n File\n}\n\nexport type ItemDriveItemDetails = { drive: DriveOdataItem; details: DriveItemDetails };\n\nexport interface RestoreDriveItems {\n AnotherUser?: RestoreToAnotherUser;\n DriveId: string;\n Ids: string[];\n Timeline?: string; // \"2020-08-26T21:00:00.000Z\";\n ToRestoreFolder: boolean;\n}\n\nexport enum DriveODataOption {\n UserId = 'userId',\n ProviderId = 'providerId',\n TeamDrive = 'teamDrive',\n SearchQ = 'searchQ'\n}\n","export interface BackupHistoryItem {\n Day: number;\n Month: number;\n Usage: BackupHistoryItemUsage;\n Year: number;\n}\ninterface BackupHistoryItemUsage {\n Calendar: number;\n Contacts: number;\n Drive: number;\n Mail: number;\n SharePoint: number;\n TeamDrives: number;\n Units: HistoryUnits;\n}\n\nexport interface PieDataItem {\n Name: string;\n Size: number; // float number\n Count: number;\n}\n\nexport enum HistoryPeriods {\n Month = 'month',\n Year = 'year'\n}\n\nexport enum HistoryUnits {\n Count = 'count',\n Size = 'size'\n}\n","import { TagInputItem } from 'mbs-ui-kit/form/tags-input/tags-input.types';\n\nexport interface DefaultFoldersFilter {\n IncludeType: FolderFilterType;\n}\n\nexport interface FoldersFilter extends DefaultFoldersFilter {\n Included: string[];\n Excluded: string[];\n}\n\nexport interface FoldersFilterDev extends DefaultFoldersFilter {\n Included: TagInputItem[];\n Excluded: TagInputItem[];\n}\n\nexport enum FolderFilterType {\n All = 'AllFolders',\n Except = 'AllFoldersExceptDeletedAndJunk',\n Selected = 'OnlySelected'\n}\n\nexport enum FolderType {\n Include,\n Exclude\n}\n\nexport enum OfficeExcludeFolder {\n JunkEmail = 'Junk Email',\n DeletedItems = 'Deleted Items'\n}\n\nexport enum GoogleExcludeFolder {\n Spam = 'SPAM',\n Trash = 'TRASH',\n SpamIMAP = '[Gmail]/Spam',\n TrashIMAP = '[Gmail]/Trash'\n}\n","export class MailAttachment {\n name: string;\n downloadLink: string;\n query?: string;\n\n constructor(name: string, downloadLink: string, query?: string) {\n this.name = name;\n this.downloadLink = downloadLink;\n\n if (query) {\n this.query = query;\n }\n }\n}\n","import { DateUnitEnum } from '@common/models';\n\nexport interface MyAccountContactInfo {\n Name: string;\n Email: string;\n Phone: string;\n}\n\nexport interface MyAccountPhone {\n Phone: string;\n}\n\nexport enum StorageTypes {\n amazonS3 = 'AmazonS3',\n azure = 'Azure',\n backBlaze = 'BackBlaze',\n s3compatible = 'S3Compatible',\n minio = 'Minio',\n swift = 'Swift',\n azureStack = 'AzureStack',\n wasabi = 'Wasabi'\n}\n\n// TODO: fixed model after changed on BE\nexport interface BackupDestination {\n Name: string;\n BucketName: string;\n RootFolder: string;\n AccessKey: string;\n SecretKey: string;\n StorageType: StorageTypes;\n Endpoint: string;\n EndpointSuffix: string;\n}\n\nexport interface MyAccountRecoveryPassword {\n Email: string;\n}\n\nexport interface ExportSettings {\n EntityType: EntityType;\n Id: string;\n Password: string;\n ProtectedWithPassword: boolean;\n RetentionSettings: {\n Enabled: boolean;\n DateNum: number;\n DateUnit: DateUnitEnum;\n };\n}\n\ntype EntityType = 'Domain' | 'User';\n","export interface PlanInfoOdata {\n '@odata.context': string;\n ActivatedPlanId: string;\n AverageDaysInMonth: number;\n CloudBerryDiscount: number;\n CloudBerryDiscountState: CloudBerryDiscountState;\n CloudBerryDiscountUrl: string;\n DaysToEndPlan: number;\n ExpireDate: string;\n IsCanceled: boolean;\n Name: string;\n StorageSize: boolean;\n SubscriptionId: string;\n SubscriptionUrl: string;\n TariffType: TariffType;\n UserLimit: number;\n}\n\nexport enum CloudBerryDiscountState {\n notFound = 'NotFound',\n approved = 'Approved',\n notApproved = 'NotApproved',\n pending = 'Pending'\n}\n\nexport enum TariffType {\n trial = 'Trial',\n perUser = 'PerUser',\n perData = 'PerData',\n perDomain = 'PerDomain',\n perOnOrHaveDataUsers = 'PerOnOrHaveDataUsers',\n perHaveDataUsers = 'PerHaveDataUsers',\n perActualData = 'PerActualData'\n}\n","export enum Role {\n ProviderSignIn = 'ProviderSignIn',\n DomainAdmin = 'DomainAdmin',\n UserAccountAdministrator = 'UserAccountAdministrator',\n SingleUser = 'SingleUser',\n DomainUser = 'DomainUser',\n EmergencySignIn = 'EmergencySignIn',\n SystemAdmin = 'SystemAdmin',\n LimitedAdmin = 'LimitedAdmin' // it isn't hasLimitedAdminRole()\n}\n\nexport enum ProviderRole {\n CompanyAdministrator = 'CompanyAdministrator',\n UserAccountAdministrator = 'UserAccountAdministrator',\n Other = 'UserAccountAdministrator'\n}\n\nexport function hasDomainAdminRole(roles: Role[]): boolean {\n return roles.some((r) => r == Role.DomainAdmin); // sign in with GAA permission\n}\n\nexport function hasLimitedAdminRole(roles: Role[], providerRoles: ProviderRole[]): boolean {\n return roles.some((r) => r == Role.UserAccountAdministrator) && providerRoles.some((pr) => pr == ProviderRole.CompanyAdministrator); // sign in without GAA permission\n}\n\nexport function hasAdminRole(roles: Role[]): boolean {\n return roles.some((r) => r == Role.DomainAdmin || r == Role.UserAccountAdministrator);\n}\n\nexport function isEmergencySignIn(roles: Role[]): boolean {\n return roles.some((r) => r == Role.EmergencySignIn);\n}\n\nexport function hasUserAccountAdminRole(roles: Role[]): boolean {\n return roles.some((r) => r == Role.UserAccountAdministrator);\n}\n\n// TODO: need check different between `hasUserAccountAdminRole` and current method with `!CompanyAdministrator` in components conditions\n// export function isUserAccountAdmin(roles: Roles[], providerRoles: ProviderRole[]): boolean {\n// return roles.some((r) => r == Roles.UserAccountAdministrator) && !providerRoles.some((pr) => pr == ProviderRole.CompanyAdministrator);\n// }\n\nexport function hasDomainUserRole(roles: Role[]): boolean {\n return roles.some((r) => r == Role.DomainUser);\n}\n\nexport function hasSingleUserRole(roles: Role[]): boolean {\n return roles.some((r) => r == Role.SingleUser);\n}\n\nexport function hasProviderRole(roles: Role[]): boolean {\n return roles.some((r) => r == Role.ProviderSignIn);\n}\n","import { MimeCategory } from '@common';\n\nexport enum TreeItemTypes {\n SiteItem = 'SiteItem',\n SiteBlock = 'SiteBlock',\n SiteBlockItem = 'SiteBlockItem',\n File = 'File',\n Root = 'Root' // only for manual create root node\n}\n\nexport interface SiteItemODataModel {\n AppName: string;\n BackupOn: boolean;\n BackupOnChanged?: boolean; // UI property for inside calculations\n BaseTemplate: string;\n BlockId: string;\n CssClass: string;\n DomainId: string;\n DomainName: string;\n DriveId: string;\n HasChildren: boolean;\n HierarchicalId: string;\n Id: string;\n IsDriveItem: boolean;\n MimeTypeId: string;\n MimeCategory: MimeCategory;\n Name: string;\n ParentIdStr: string;\n SiteName: string;\n Size: number;\n TreeItemType: TreeItemTypes;\n Type: boolean;\n checked: boolean;\n}\n\nexport interface SiteItemDetails {\n '@odata.context': string;\n Description?: string;\n IconM?: string;\n IsDriveItem?: boolean;\n Raw?: string;\n children?: any[];\n Title?: string;\n Revisions?: SiteItemDetailsRevision[];\n value?: string;\n Path?: string[];\n}\n\nexport interface SiteItemDetailsRevision {\n FileName: string;\n Id: string;\n ModifyDate: string; // \"/Date(1578502905000)/\"\n Raw: string;\n}\n\nexport interface Site {\n '@odata.context': string;\n AutoAddSiteToBackup: boolean;\n EnabledAddSites: boolean;\n Id: string;\n LastBackupDate: string; // '2020-10-21T14:18:55.8262097Z'\n Size: number;\n}\n\nexport interface PageSiteItemsPayload {\n siteId: string;\n}\n\nexport interface PageDriveItemsPayload {\n siteBlockId: string;\n parentId: string;\n driveItemId: string;\n}\n\nexport interface RestoreSiteItemsPayload {\n DestinationId?: string;\n Id: string;\n Name?: string;\n Overwrite?: boolean;\n Timeline?: string; // \"2020-08-26T21:00:00.000Z\";\n}\n\nexport interface SetupSitesBackupPayload {\n sites: Partial[]; // Id: string; BackupOn: boolean;\n}\n\nexport enum SearchType {\n SiteItems,\n Files,\n FilesInSiteItem\n}\n\nexport type SearchODataOptions = {\n filter: string;\n orderBy: string;\n page: number;\n pageSize: number;\n};\n\nexport type ItemSiteItemDetails = { site: SiteItemODataModel; details: SiteItemDetails };\n","export interface SystemInfo {\n AppsCblMode: boolean;\n AssemblyConfiguration: string;\n AssemblyVersion: string;\n CloudBerryMode: boolean;\n Configuration: string;\n GAA: boolean;\n FaviconUrl: string;\n IsImmutability: boolean;\n LogoUrl: string;\n ProductMode: ProductMode;\n SiteInBackup: boolean | null; // we get `null` when backup for SP is disabled\n StorageRegion: string;\n StorageState: StorageStateEnum;\n}\n\nexport enum StorageStateEnum {\n ok = 'OK',\n notSet = 'NotSet',\n connectionError = 'ConnectionError',\n unknown = 'Unknown'\n}\n\nexport enum ProductMode {\n mbs = 'Mbs',\n resale = 'Resale'\n}\n","import { MimeCategory } from '../enums/mime-type.enum';\n\nexport interface TeamItem {\n Id: string;\n Name: string;\n ItemType: TeamItemType;\n MimeCategory: MimeCategory;\n}\n\nexport enum TeamItemType {\n Team = 'Team',\n Channel = 'Channel',\n FilesRoot = 'FilesRoot',\n PostsRoot = 'PostsRoot',\n File = 'File',\n Folder = 'Folder',\n Root = 'Root' // only for manual create root node\n}\n\nexport interface ChannelItem extends TeamItem {\n ChannelId: string;\n}\n\nexport interface TeamOdataPost {\n Id: number;\n FromName: string;\n CreatedDate: string;\n // html content\n Content: string;\n ExistReplies: boolean;\n}\n\nexport class TeamPost {\n public id: number;\n public userName: string;\n public date: Date;\n public content: string;\n public hasReplies: boolean;\n public showReplies = false;\n\n #repliesSet = false;\n #replies: TeamPost[] = [];\n\n constructor(post: TeamOdataPost) {\n this.id = post.Id;\n this.userName = post.FromName;\n this.date = new Date(post.CreatedDate);\n this.content = post.Content;\n this.hasReplies = post.ExistReplies;\n }\n\n get repliesSet(): boolean {\n return this.#repliesSet;\n }\n\n set replies(value: TeamPost[]) {\n if (this.#repliesSet) return;\n\n this.#replies = value;\n this.#repliesSet = true;\n }\n\n get replies(): TeamPost[] {\n return this.#replies;\n }\n}\n\nexport interface TeamFile extends TeamItem {\n ChannelId: number;\n DbId: string;\n Size: number;\n Type: TeamFileItemType;\n}\n\nexport enum TeamFileItemType {\n Folder,\n File\n}\n","import { PolicyType } from '@common';\nimport { AutoActivationMode } from '@common/models/user';\nimport { Provider } from './domain.model';\n\nexport interface User {\n AddDate: string;\n AlternativeAccountExists: boolean;\n CalendarCnt: number;\n CalendarEnable: boolean;\n CalendarLastBackupStopReason: string;\n CalendarPolicyType: PolicyType;\n CalendarSize: number;\n ContactCnt: number;\n ContactsEnable: boolean;\n ContactLastBackupStopReason: string;\n ContactPolicyType: PolicyType;\n DomainId: string;\n DomainName: string;\n DriveCnt: number;\n DriveEnable: boolean;\n DriveLastBackupStopReason: null;\n DrivePolicyType: PolicyType;\n DriveSize: number;\n Email: string;\n EmailCnt: number;\n MailEnable: boolean;\n EmailLastBackupStopReason: null;\n MailPolicyType: PolicyType;\n EmailSize: number;\n ExistLicense: boolean;\n ExistRefreshToken: boolean;\n ExistRetentionPolicy: boolean;\n Id: string;\n InBackup: boolean;\n IsMainUser: boolean;\n IsPublicFolder: boolean;\n LastBackupDate: string;\n LastBackupService: string;\n MsgsCount: number;\n Name: string;\n NameEmail: string;\n PersonalSiteEnable: boolean;\n RestoreEnable: boolean;\n SignInEnable: boolean;\n TotalSize: number;\n UserProviderState: string;\n SharePointPolicyType: PolicyType;\n TeamDrivePolicyType: PolicyType;\n LastCalendarBackupDate: string;\n LastContactBackupDate: string;\n LastDriveBackupDate: string;\n LastEmailBackupDate: string;\n OrgUnitId: string | number;\n Provider: Provider;\n}\n\nexport interface UsersServices {\n CalendarEnabled: boolean;\n CalendarOn: boolean;\n ContactsEnabled: boolean;\n ContactsOn: boolean;\n DriveEnabled: boolean;\n DriveOn: boolean;\n MailEnabled: boolean;\n MailOn: boolean;\n}\n\nexport interface UsersPermissions {\n RestoreEnable: boolean;\n SignInEnable: boolean;\n}\n\nexport interface BackupStatistic {\n Type: string;\n ItemCount: number;\n Size: number;\n}\n\nexport interface DeleteBackup {\n UserIds: string[];\n Email: boolean;\n Drive: boolean;\n Contact: boolean;\n Calendar: boolean;\n TeamDrive: boolean;\n SharePoint: boolean;\n Password: string;\n}\n\nexport interface TasksStateResponse {\n TasksStatistic: {\n Id: number;\n DomainId: string | null;\n UserId: string | null;\n WorkerId: string | null;\n Name: string;\n UserName: string;\n BatchId: string;\n ErrorComment: string;\n TotalItemsCount: number;\n ItemsCountByStates: { [key: string]: number };\n DateAdded: Date | string;\n DateModified: Date | string;\n ServiceType: ServiceType;\n OperationType: OperationType;\n Duration: Date;\n LastDuration: Date;\n DurationStr: string;\n LastDurationStr: string;\n QueueDate: Date | string | null;\n }[];\n LastBackupDates: {\n MailLastBackupDate: string;\n DriveLastBackupDate: string;\n ContactsLastBackupDate: string;\n CalendarLastBackupDate: string;\n TeamDriveLastBackupDate: string;\n SharePointLastBackupDate: string;\n };\n}\n\nexport interface AlternateEmail {\n Email: string;\n Verified: boolean;\n TwoStepEnabled: boolean;\n}\n\nexport interface AddAlternateEmail {\n userId: string;\n email: string;\n password: string;\n confirmPassword: string;\n}\n\nexport interface AddAlternateEmailCamelCase {\n UserId: string;\n Email: string;\n Password: string;\n ConfirmPassword: string;\n}\n\nexport interface TwoFactor {\n password: string;\n enabled: boolean;\n responseCode: string;\n}\n\nexport interface EditAlternate {\n editTwoStep?: { password: string; responseCode: string };\n deleteTwoStep?: { password: string };\n}\n\nexport interface AzureGroup {\n AutoActivationMode?: AutoActivationMode;\n Id: string;\n Name: string;\n Order?: number;\n}\n\nexport interface OrganizationalUnit {\n AutoActivationMode?: AutoActivationMode;\n DbId: string;\n Deleted: boolean;\n Path: string;\n HasChild: boolean;\n Id: string;\n Name: string;\n Order: number; // 0 (for 'Not in Units' only) or 1 (for others). Internal prop for sorting on BE\n}\n\nexport enum AutoActiveActionType {\n All = 'all',\n EditAutoActivationMode = 'editAutoActivationMode'\n}\n\nexport interface AutoActivationSettings {\n AutoActivationMode: AutoActivationMode;\n}\n\nexport interface NewGroupSettings {\n AutoActivationMode: AutoActivationMode;\n Ids?: string[];\n}\n\nexport enum ServiceType {\n Mail = 0,\n Drive = 1,\n Contacts = 2,\n Calendar = 3,\n SharePoint = 4,\n TeamDrives = 5,\n Users = 6,\n PublicFolder = 7,\n Export = 8,\n PersonalSite = 9,\n PublicFolderMail = 10,\n PublicFolderCalendar = 11,\n PublicFolderContact = 12,\n Teams = 13,\n CalculateProviderSize = 14,\n Payments = 15,\n History = 16,\n All = 255\n}\n\nexport const ServiceTypeByAPIEnum = {\n Mail: {\n serviceType: ServiceType.Mail,\n displayName: 'Mail'\n },\n Drive: {\n serviceType: ServiceType.Drive,\n displayName: 'Drive'\n },\n Contacts: {\n serviceType: ServiceType.Contacts,\n displayName: 'Contacts'\n },\n Calendar: {\n serviceType: ServiceType.Calendar,\n displayName: 'Calendar'\n },\n SharePoint: {\n serviceType: ServiceType.SharePoint,\n displayName: 'SharePoint'\n },\n TeamDrives: {\n serviceType: ServiceType.TeamDrives,\n displayName: 'Shared Drives'\n },\n Users: {\n serviceType: ServiceType.Users,\n displayName: 'Users'\n },\n PublicFolder: {\n serviceType: ServiceType.PublicFolder,\n displayName: 'Public Folder'\n },\n Export: {\n serviceType: ServiceType.Export,\n displayName: 'Specified Services'\n },\n PersonalSite: {\n serviceType: ServiceType.PersonalSite,\n displayName: 'Personal Site'\n },\n PublicFolderMail: {\n serviceType: ServiceType.PublicFolderMail,\n displayName: 'Public Folder Mail'\n },\n PublicFolderCalendar: {\n serviceType: ServiceType.PublicFolderCalendar,\n displayName: 'Public Folder Calendar'\n },\n PublicFolderContact: {\n serviceType: ServiceType.PublicFolderContact,\n displayName: 'Public Folder Contact'\n },\n Teams: {\n serviceType: ServiceType.Teams,\n displayName: 'Teams'\n },\n CalculateProviderSize: {\n serviceType: ServiceType.CalculateProviderSize,\n displayName: 'Calculate Provider Size'\n },\n Payments: {\n serviceType: ServiceType.Payments,\n displayName: 'Payments'\n },\n History: {\n serviceType: ServiceType.History,\n displayName: 'History'\n },\n All: {\n serviceType: ServiceType.All,\n displayName: 'All'\n }\n};\n\nexport enum OperationType {\n None = 0,\n Backup = 1,\n Restore = 2,\n Archive = 3,\n MarkingForDelete = 4,\n DeleteItems = 5,\n ProcessRetention = 6,\n DeleteFromStorage = 7,\n Sync = 8,\n Export = 9,\n ClearCustomer = 10,\n DeleteUser = 11,\n CalculateUsersProviderSize = 12,\n Test = 255\n}\n\nexport const OperationTypeByAPIEnum = {\n None: {\n operationType: OperationType.None,\n displayName: 'None'\n },\n Backup: {\n operationType: OperationType.Backup,\n displayName: 'Backup'\n },\n Restore: {\n operationType: OperationType.Restore,\n displayName: 'Restore'\n },\n Archive: {\n operationType: OperationType.Archive,\n displayName: 'Archive'\n },\n MarkingForDelete: {\n operationType: OperationType.MarkingForDelete,\n displayName: 'Flagging for deletion'\n },\n DeleteItems: {\n operationType: OperationType.DeleteItems,\n displayName: 'Deleting items'\n },\n ProcessRetention: {\n operationType: OperationType.ProcessRetention,\n displayName: 'Retention policy'\n },\n DeleteFromStorage: {\n operationType: OperationType.DeleteFromStorage,\n displayName: 'Deleting data'\n },\n Sync: {\n operationType: OperationType.Sync,\n displayName: 'Sync'\n },\n Export: {\n operationType: OperationType.Export,\n displayName: 'Export'\n },\n ClearCustomer: {\n operationType: OperationType.ClearCustomer,\n displayName: 'Clearing customer data'\n },\n DeleteUser: {\n operationType: OperationType.DeleteUser,\n displayName: 'Deleting user'\n },\n CalculateUsersProviderSize: {\n operationType: OperationType.CalculateUsersProviderSize,\n displayName: 'Calculate Users Size'\n },\n Test: {\n operationType: OperationType.Test,\n displayName: ''\n }\n};\n\nexport interface UserServiceBackupInfo {\n LastBackupDate: string;\n TotalSize: number;\n}\n\nexport interface UserInfoForService extends UserServiceBackupInfo {\n Id: string;\n Name: string;\n Email: string;\n}\n\nexport class ServiceFields {\n LastBackupDate = '';\n Size = '';\n constructor(serviceType: ServiceType) {\n if (serviceType == ServiceType.Mail) {\n this.LastBackupDate = 'LastEmailBackupDate';\n this.Size = 'EmailSize';\n }\n if (serviceType == ServiceType.Drive) {\n this.LastBackupDate = 'LastDriveBackupDate';\n this.Size = 'DriveSize';\n }\n if (serviceType == ServiceType.Calendar) {\n this.LastBackupDate = 'LastCalendarBackupDate';\n this.Size = 'CalendarSize';\n }\n if (serviceType == ServiceType.Contacts) {\n this.LastBackupDate = 'LastContactBackupDate';\n this.Size = '';\n }\n }\n\n filteredArrayValues(): string[] {\n return [this.LastBackupDate, this.Size].filter((i) => i !== '');\n }\n}\n","export enum AutoActivationMode {\n 'AllUsers' = 'AllUsers',\n 'NewUsers' = 'NewUsers',\n 'Disabled' = 'Disabled'\n}\n","export enum ODataExecReturnType {\n // Default\n Array = 0,\n Count = 1,\n PagedResult = 2\n}\n","import { HttpClient, HttpParams, HttpResponse } from '@angular/common/http';\nimport { Dictionary, IEnumerable, IQueryable, List } from 'linq-collections';\n\nimport { RequestOptions } from '@common/odata/angularODataResponseModel';\nimport { isArray, isString } from 'lodash';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { ODataConfiguration } from './angularODataConfiguration';\n\nexport abstract class ODataOperation {\n #expand: string[] = [];\n #select: string[] = [];\n\n protected constructor(protected typeName: string, protected config: ODataConfiguration, protected http: HttpClient) {}\n\n public Expand(expand: string | string[]) {\n if (expand) {\n this.#expand = this.toStringArray(expand);\n }\n\n return this;\n }\n\n public Select(select: string | string[]) {\n if (select) {\n this.#select = this.toStringArray(select);\n }\n\n return this;\n }\n\n protected getParams(): HttpParams {\n const expandData = new Dictionary>();\n const normalSelects = new List();\n\n this.#expand.forEach((name) => expandData.set(name, new List()));\n\n this.#select.forEach((select: string) => {\n const items: string[] = select.split('/');\n\n // Expand contains string like: `Boss/Name`\n if (items.length > 1) {\n const expandName = items[0];\n const propertyName = items[1];\n\n if (!expandData.containsKey(expandName)) {\n expandData.set(expandName, new List());\n }\n\n expandData.get(expandName).push(propertyName);\n } else {\n // Expand is just a simple string like: `Boss`\n normalSelects.push(select);\n }\n });\n\n let params = new HttpParams();\n\n const expands = expandData.distinct().select((element) => {\n if (element.value.any()) {\n return `${element.key}(${this.config.keys.select}=${this.toCommaString(element.value)})`;\n }\n\n return element.key;\n });\n\n if (expands.any()) {\n params = params.append(this.config.keys.expand, this.toCommaString(expands));\n }\n\n if (normalSelects.any()) {\n params = params.append(this.config.keys.select, this.toCommaString(normalSelects));\n }\n\n return params;\n }\n\n protected handleResponse(entity: Observable>): Observable {\n return entity.pipe(\n map(this.extractData),\n catchError((err: any, caught: Observable) => {\n if (this.config.handleError) {\n this.config.handleError(err, caught);\n }\n\n return throwError(() => err);\n })\n );\n }\n\n protected getDefaultRequestOptions(): RequestOptions {\n const options = Object.assign({}, this.config.defaultRequestOptions);\n options.params = this.getParams();\n\n return options;\n }\n\n protected getPostRequestOptions(): RequestOptions {\n const options = Object.assign({}, this.config.postRequestOptions);\n options.params = this.getParams();\n\n return options;\n }\n\n protected abstract Exec(): Observable;\n\n protected abstract GetUrl(): string;\n\n protected GenerateUrl(entitiesUri: string): string {\n const params: HttpParams = this.getParams();\n\n return params.keys().length > 0 ? `${entitiesUri}?${params}` : entitiesUri;\n }\n\n protected toStringArray(input: string | string[] | IEnumerable | IQueryable): string[] {\n if (!input) return [];\n\n if (isString(input)) {\n return input.split(',').map((s) => s.trim());\n }\n\n if (isArray(input)) {\n return input;\n }\n\n return input.toArray();\n }\n\n protected toCommaString(input: string | string[] | IEnumerable | IQueryable): string {\n if (isString(input)) {\n return input;\n }\n\n if (isArray(input)) {\n return input.join();\n }\n\n return input.toArray().join();\n }\n\n private extractData(res: HttpResponse): T {\n if (res.status < 200 || res.status >= 300) {\n throw new Error('Bad response status: ' + res.status);\n }\n\n const body: any = res.body;\n\n return body || {};\n }\n}\n\nexport abstract class OperationWithKey extends ODataOperation {\n constructor(\n protected _typeName: string,\n protected override config: ODataConfiguration,\n protected override http: HttpClient,\n protected entityKey: any\n ) {\n super(_typeName, config, http);\n }\n\n protected getEntityUri(): string {\n return this.config.getEntityUri(this.entityKey, this.typeName);\n }\n\n public GetUrl(): string {\n return this.GenerateUrl(this.getEntityUri());\n }\n}\n\nexport abstract class OperationWithEntity extends ODataOperation {\n constructor(\n protected _typeName: string,\n protected override config: ODataConfiguration,\n protected override http: HttpClient,\n protected entity: T\n ) {\n super(_typeName, config, http);\n }\n\n protected getEntitiesUri(): string {\n return this.config.getEntitiesUri(this._typeName);\n }\n\n public GetUrl(): string {\n return this.GenerateUrl(this.getEntitiesUri());\n }\n}\n\nexport abstract class OperationWithKeyAndEntity extends OperationWithKey {\n constructor(\n protected override _typeName: string,\n protected override config: ODataConfiguration,\n protected override http: HttpClient,\n protected override entityKey: string,\n protected entity: T\n ) {\n super(_typeName, config, http, entityKey);\n }\n\n protected override getEntityUri(): string {\n return this.config.getEntityUri(this.entityKey, this._typeName);\n }\n}\n\nexport class GetOperation extends OperationWithKey {\n public Exec(): Observable {\n return super.handleResponse(this.http.get(this.getEntityUri(), this.getDefaultRequestOptions()));\n }\n}\n\nexport class PostOperation extends OperationWithEntity {\n public Exec(): Observable {\n const body = this.entity ? JSON.stringify(this.entity) : null;\n\n return super.handleResponse(this.http.post(this.getEntitiesUri(), body, this.getPostRequestOptions()));\n }\n}\n\nexport class PatchOperation extends OperationWithKeyAndEntity {\n public Exec(): Observable {\n const body = this.entity ? JSON.stringify(this.entity) : null;\n\n return super.handleResponse(this.http.patch(this.getEntityUri(), body, this.getPostRequestOptions()));\n }\n}\n\nexport class PutOperation extends OperationWithKeyAndEntity {\n public Exec(): Observable {\n const body = this.entity ? JSON.stringify(this.entity) : null;\n\n return super.handleResponse(this.http.put(this.getEntityUri(), body, this.getPostRequestOptions()));\n }\n}\n\nexport class DeleteOperation extends OperationWithKey {\n public Exec(): Observable {\n return super.handleResponse(this.http.delete(this.getEntityUri(), this.config.defaultRequestOptions));\n }\n}\n","import { Observable, throwError } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\nimport { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams, HttpResponse } from '@angular/common/http';\nimport { IKeyValue } from 'linq-collections';\n\nimport { isNil } from 'lodash';\nimport { ODataConfiguration } from './angularODataConfiguration';\nimport { ODataExecReturnType } from './angularODataEnums';\nimport { ODataOperation } from './angularODataOperation';\nimport { ODataPagedResult } from './angularODataPagedResult';\nimport { IODataResponseModel, RequestOptions } from './angularODataResponseModel';\n\nexport class ODataQuery extends ODataOperation {\n readonly #entitiesUri: string;\n #filter: string | undefined;\n #top: number | undefined;\n #skip: number | undefined;\n #search: string | undefined;\n #orderBy: string[] = [];\n #apply: string[] = [];\n #maxPerPage: number | undefined;\n #customQueryOptions: IKeyValue[] = [];\n\n constructor(typeName: string, config: ODataConfiguration, http: HttpClient) {\n super(typeName, config, http);\n\n this.#entitiesUri = config.getEntitiesUri(this.typeName);\n }\n\n public Filter(filter: string): ODataQuery {\n if (filter) {\n this.#filter = filter;\n }\n\n return this;\n }\n\n public Search(search: string): ODataQuery {\n if (search) {\n this.#search = search;\n }\n\n return this;\n }\n\n public Top(top: number): ODataQuery {\n if (top > 0) {\n this.#top = top;\n }\n\n return this;\n }\n\n public Skip(skip: number): ODataQuery {\n if (skip > 0) {\n this.#skip = skip;\n }\n\n return this;\n }\n\n public OrderBy(orderBy: string | string[]): ODataQuery {\n if (orderBy) {\n this.#orderBy = this.toStringArray(orderBy);\n }\n\n return this;\n }\n\n public MaxPerPage(maxPerPage: number): ODataQuery {\n if (maxPerPage > 0) {\n this.#maxPerPage = maxPerPage;\n }\n\n return this;\n }\n\n public Apply(apply: string | string[]): ODataQuery {\n if (apply) {\n this.#apply = this.toStringArray(apply);\n }\n\n return this;\n }\n\n public CustomQueryOptions(customOptions: IKeyValue | IKeyValue[]): ODataQuery {\n if (customOptions) {\n this.#customQueryOptions = Array.isArray(customOptions) ? customOptions : [customOptions];\n }\n\n return this;\n }\n\n public GetUrl(returnType?: ODataExecReturnType): string {\n let url: string = this.#entitiesUri;\n if (returnType === ODataExecReturnType.Count) {\n url = `${url}/${this.config.keys.count}`;\n }\n\n const params: HttpParams = this.getQueryParams(returnType === ODataExecReturnType.PagedResult);\n if (params.keys().length > 0) {\n return `${url}?${params}`;\n }\n\n return url;\n }\n\n public Exec(): Observable;\n public Exec(returnType: ODataExecReturnType.Count): Observable;\n public Exec(returnType: ODataExecReturnType.PagedResult): Observable>;\n public Exec(returnType?: ODataExecReturnType): Observable | number> {\n const requestOptions: RequestOptions = this.getQueryRequestOptions(returnType === ODataExecReturnType.PagedResult);\n\n switch (returnType) {\n case ODataExecReturnType.Count:\n return this.execGetCount(requestOptions);\n\n case ODataExecReturnType.PagedResult:\n return this.execGetArrayDataWithCount(this.#entitiesUri, requestOptions);\n\n default:\n return this.execGetArrayData(requestOptions);\n }\n }\n\n public ExecWithCount(): Observable> {\n return this.Exec(ODataExecReturnType.PagedResult);\n }\n\n public NextPage(pagedResult: ODataPagedResult): Observable> {\n const requestOptions: RequestOptions = this.getQueryRequestOptions(false);\n\n return this.execGetArrayDataWithCount(pagedResult.nextLink, requestOptions);\n }\n\n private execGetCount(requestOptions: RequestOptions): Observable {\n const countUrl = `${this.#entitiesUri}/${this.config.keys.count}`;\n\n return this.http.get(countUrl, requestOptions).pipe(\n map((res) => this.extractDataAsNumber(res, this.config)),\n catchError((err: HttpErrorResponse, caught: Observable) => this.execGetCatchError(err, caught))\n );\n }\n\n private execGetArrayDataWithCount(url: string, requestOptions: RequestOptions): Observable> {\n return this.http.get>(url, requestOptions).pipe(\n map((res) => this.extractArrayDataWithCount(res, this.config)),\n catchError((err: HttpErrorResponse, caught: Observable>) => this.execGetCatchError(err, caught))\n );\n }\n\n private execGetArrayData(requestOptions: RequestOptions): Observable {\n return this.http.get>(this.#entitiesUri, requestOptions).pipe(\n map((res) => this.extractArrayData(res, this.config)),\n catchError((err: HttpErrorResponse, caught: Observable>) => this.execGetCatchError(err, caught))\n );\n }\n\n private execGetCatchError(\n err: HttpErrorResponse,\n caught: Observable | Observable | Observable>\n ): Observable {\n if (this.config.handleError) {\n this.config.handleError(err, caught);\n }\n\n return throwError(() => err);\n }\n\n private getQueryRequestOptions(odata4: boolean): RequestOptions {\n const options = Object.assign({}, this.config.defaultRequestOptions);\n\n options.params = this.getQueryParams(odata4);\n\n if (this.#maxPerPage && this.#maxPerPage > 0) {\n if (!options.headers) {\n options.headers = new HttpHeaders();\n }\n\n options.headers = options.headers.set('Prefer', `${this.config.keys.maxPerPage}=${this.#maxPerPage}`);\n }\n\n return options;\n }\n\n private getQueryParams(odata4: boolean): HttpParams {\n let params = super.getParams();\n\n if (this.#filter) {\n params = params.append(this.config.keys.filter, this.#filter);\n }\n\n if (this.#search) {\n params = params.append(this.config.keys.search, this.#search);\n }\n\n if (this.#top && this.#top > 0) {\n params = params.append(this.config.keys.top, this.#top.toString());\n }\n\n if (this.#skip && this.#skip > 0) {\n params = params.append(this.config.keys.skip, this.#skip.toString());\n }\n\n if (this.#orderBy.length > 0) {\n params = params.append(this.config.keys.orderBy, this.toCommaString(this.#orderBy));\n }\n\n if (this.#apply.length > 0) {\n params = params.append(this.config.keys.apply, this.toCommaString(this.#apply));\n }\n\n if (this.#customQueryOptions.length > 0) {\n this.#customQueryOptions.forEach(\n (customQueryOption) =>\n (params = params.append(this.checkReservedCustomQueryOptionKey(customQueryOption.key), customQueryOption.value))\n );\n }\n\n if (odata4) {\n params = params.append('$count', 'true'); // OData v4 only\n }\n\n return params;\n }\n\n private extractDataAsNumber(res: HttpResponse, config: ODataConfiguration): number {\n return config.extractQueryResultDataAsNumber(res);\n }\n\n private extractArrayData(res: HttpResponse>, config: ODataConfiguration): T[] {\n return config.extractQueryResultData(res);\n }\n\n private extractArrayDataWithCount(res: HttpResponse>, config: ODataConfiguration): ODataPagedResult {\n return config.extractQueryResultDataWithCount(res);\n }\n\n private checkReservedCustomQueryOptionKey(key: string): string {\n if (isNil(key)) {\n throw new Error('Custom query options MUST NOT be null or undefined.');\n }\n\n if (key.indexOf('$') === 0 || key.indexOf('@') === 0) {\n throw new Error('Custom query options MUST NOT begin with a $ or @ character.');\n }\n\n return key;\n }\n}\n","export class ODataUtils {\n public static convertObjectToString(obj: any): string {\n const properties: string[] = [];\n\n for (const prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop) && obj[prop] !== undefined) {\n const value: any = ODataUtils.quoteValue(obj[prop]);\n\n properties.push(`${prop}=${value}`);\n }\n }\n return properties.join(', ');\n }\n\n public static quoteValue(value: number | string | boolean | any): string {\n // check if GUID (UUID) type\n if (/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(value)) {\n return value;\n }\n\n // check if string\n if (typeof value === 'string') {\n const escaped = value.replace(/'/g, \"''\");\n\n return `'${escaped}'`;\n }\n\n // check if boolean or number\n if (typeof value === 'boolean' || typeof value === 'number') {\n return `${value}`;\n }\n\n const parts: string[] = [];\n Object.getOwnPropertyNames(value).forEach((propertyName: string) => {\n const propertyValue: any = value[propertyName];\n\n parts.push(`${propertyName}=${ODataUtils.quoteValue(propertyValue)}`);\n });\n\n return parts.length > 0 ? parts.join(', ') : `${value}`;\n }\n\n public static tryParseInt(input?: any): { valid: boolean; value: number } {\n if (input !== null && !isNaN(input)) {\n const parsed: number = parseInt(input, 10);\n\n return {\n valid: !isNaN(parsed),\n value: parsed\n };\n }\n\n return {\n valid: false,\n value: NaN\n };\n }\n}\n","import { Observable, throwError } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\nimport { HttpClient, HttpResponse } from '@angular/common/http';\n\nimport { ODataConfiguration } from './angularODataConfiguration';\nimport { DeleteOperation, GetOperation, PatchOperation, PostOperation, PutOperation } from './angularODataOperation';\nimport { ODataQuery } from './angularODataQuery';\nimport { ODataUtils } from './angularODataUtils';\n\nexport class ODataService {\n #entitiesUri: string;\n\n constructor(private _typeName: string, private _http: HttpClient, private config: ODataConfiguration) {\n this.#entitiesUri = config.getEntitiesUri(_typeName);\n }\n\n public get TypeName(): string {\n return this._typeName;\n }\n\n public Get(key: any): GetOperation {\n return new GetOperation(this._typeName, this.config, this._http, key);\n }\n\n public Post(entity: T): PostOperation {\n return new PostOperation(this._typeName, this.config, this._http, entity);\n }\n\n public Patch(entity: T, key: any): PatchOperation {\n return new PatchOperation(this._typeName, this.config, this._http, key, entity);\n }\n\n public Put(entity: T, key: any): PutOperation {\n return new PutOperation(this._typeName, this.config, this._http, key, entity);\n }\n\n public Delete(key: any): DeleteOperation {\n return new DeleteOperation(this._typeName, this.config, this._http, key);\n }\n\n public CustomAction(key: any, actionName: string, postdata: any): Observable {\n const body = postdata ? JSON.stringify(postdata) : null;\n\n return this._http.post(`${this.getEntityUri(key)}/${actionName}`, body, this.config.customRequestOptions).pipe(map((resp) => resp));\n }\n\n public CustomCollectionAction(actionName: string, postdata: any): Observable {\n const body = postdata ? JSON.stringify(postdata) : null;\n\n return this._http.post(`${this.#entitiesUri}/${actionName}`, body, this.config.customRequestOptions).pipe(map((resp) => resp));\n }\n\n public CustomFunction(key: any, functionName: string, parameters?: any): Observable {\n if (parameters) {\n const params: string = ODataUtils.convertObjectToString(parameters);\n functionName = `${functionName}(${params})`;\n } else if (!functionName.endsWith(')') && !functionName.endsWith('()')) {\n functionName = `${functionName}()`;\n }\n\n return this._http.get(`${this.getEntityUri(key)}/${functionName}`, this.config.defaultRequestOptions).pipe(map((resp) => resp));\n }\n\n public CustomCollectionFunction(functionName: string, parameters?: any): Observable {\n if (parameters) {\n const params: string = ODataUtils.convertObjectToString(parameters);\n functionName = `${functionName}(${params})`;\n } else if (!functionName.endsWith(')') && !functionName.endsWith('()')) {\n functionName = `${functionName}()`;\n }\n\n return this._http.get(`${this.#entitiesUri}/${functionName}`, this.config.defaultRequestOptions).pipe(map((resp) => resp));\n }\n\n public ItemProperty(key: string, propertyName: string): Observable {\n return this._http.get(`${this.getEntityUri(key)}/${propertyName}`, this.config.defaultRequestOptions).pipe(map((r) => r.body));\n }\n\n public Query(): ODataQuery {\n return new ODataQuery(this.TypeName, this.config, this._http);\n }\n\n protected getEntityUri(key: any): string {\n return this.config.getEntityUri(key, this._typeName);\n }\n\n protected handleResponse(entity: Observable>): Observable {\n return entity.pipe(\n map(this.extractData),\n catchError((err: any, caught: Observable) => {\n if (this.config.handleError) {\n this.config.handleError(err, caught);\n }\n\n return throwError(() => err);\n })\n );\n }\n\n private extractData(res: HttpResponse): TResponse {\n if (res.status < 200 || res.status >= 300) {\n throw new Error('Bad response status: ' + res.status);\n }\n\n const body: any = res.body;\n\n return body || {};\n }\n}\n","export class ODataPagedResult {\n public data: T[] | undefined;\n public count: number | undefined;\n public nextLink: string | undefined;\n}\n","import { HttpHeaders, HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { ODataPagedResult } from './angularODataPagedResult';\nimport { IODataResponseModel, RequestOptions } from './angularODataResponseModel';\nimport { ODataUtils } from './angularODataUtils';\n\nexport class KeyConfigs {\n public filter = '$filter';\n public top = '$top';\n public skip = '$skip';\n public orderBy = '$orderby';\n public select = '$select';\n public search = '$search';\n public expand = '$expand';\n public apply = '$apply';\n public count = '$count';\n public maxPerPage = 'odata.maxpagesize';\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ODataConfiguration {\n readonly #defaultHeaders = new HttpHeaders({ 'Content-Type': 'application/json; charset=utf-8' });\n readonly #baseUrl = '/api/odata/'.replace(/\\/+$/, ''); // http://localhost/odata'\n readonly #errorText = 'Bad response status';\n\n public keys: KeyConfigs = new KeyConfigs();\n\n public defaultRequestOptions: RequestOptions = { headers: new HttpHeaders(), observe: 'response' };\n\n public postRequestOptions: RequestOptions = { headers: this.#defaultHeaders, observe: 'response' };\n\n public customRequestOptions: RequestOptions = { headers: this.#defaultHeaders, observe: 'response' };\n\n public getEntitiesUri(typeName: string): string {\n return typeName ? `${this.#baseUrl}/${this.sanitizeTypeName(typeName)}` : this.#baseUrl;\n }\n\n public getEntityUri(key: any, typeName: string): string {\n return `${this.getEntitiesUri(typeName)}(${ODataUtils.quoteValue(key)})`;\n }\n\n public handleError(err: any, caught: any): void {\n console.warn('OData error: ', err, caught);\n }\n\n public extractQueryResultDataAsNumber(res: HttpResponse): number {\n if (res.status < 200 || res.status >= 300) {\n throw new Error(this.#errorText + ': ' + res.status);\n }\n\n return res?.body as number;\n }\n\n public extractQueryResultData(res: HttpResponse>): T[] {\n if (res.status < 200 || res.status >= 300) {\n throw new Error(this.#errorText + ': ' + res.status);\n }\n\n return res?.body?.value as T[];\n }\n\n public extractQueryResultDataWithCount(res: HttpResponse>): ODataPagedResult {\n const pagedResult: ODataPagedResult = new ODataPagedResult();\n\n if (res.status < 200 || res.status >= 300) {\n throw new Error(this.#errorText + ': ' + res.status);\n }\n\n const body: any = res.body;\n const entities: T[] = body.value;\n\n pagedResult.data = entities;\n\n const parseResult = ODataUtils.tryParseInt(body['@odata.count']);\n if (parseResult.valid) {\n pagedResult.count = parseResult.value;\n } else {\n console.warn('Cannot determine OData entities count. Falling back to collection length.');\n pagedResult.count = entities.length;\n }\n\n if (body['@odata.nextLink']) {\n pagedResult.nextLink = body['@odata.nextLink'];\n }\n\n return pagedResult;\n }\n\n private sanitizeTypeName(typeName: string): string {\n return typeName.replace(/\\/+$/, '').replace(/^\\/+/, '');\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { ODataConfiguration } from './angularODataConfiguration';\nimport { ODataService } from './angularODataService';\n\n@Injectable({ providedIn: 'root' })\nexport class ODataServiceFactory {\n constructor(private http: HttpClient, private config: ODataConfiguration) {}\n\n public CreateService(typeName: string, config?: ODataConfiguration): ODataService {\n return new ODataService(typeName, this.http, config ? config : this.config);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { RoutePath } from '@common';\nimport { MenuItemType } from '@common/components/app-header/app-header-item.model';\nimport { AuthService } from '@common/services';\nimport { I18NextPipe } from 'angular-i18next';\n\n@Pipe({\n name: 'activeRoute',\n pure: true\n})\nexport class ActiveRoutePipe implements PipeTransform {\n private reportingDropdownPages: MenuItemType[] = [\n {\n name: this.i18nPipe.transform('header.dropdown.backupHistory', { format: 'title' }),\n routeUrl: RoutePath.BackupHistory,\n iconClass: 'fa fa-edit',\n id: this.i18nPipe.transform('header.dropdown.backupHistory', { format: 'title' })\n },\n {\n name: this.i18nPipe.transform('header.dropdown.history', { format: 'title' }),\n routeUrl: RoutePath.History,\n iconClass: 'fa fa-history',\n id: this.i18nPipe.transform('header.dropdown.history', { format: 'title' })\n },\n {\n name: this.i18nPipe.transform('header.dropdown.reports', { format: 'title' }),\n routeUrl: RoutePath.Reports,\n iconClass: 'ico ico-Excel',\n id: this.i18nPipe.transform('header.dropdown.reports', { format: 'title' })\n },\n {\n name: this.i18nPipe.transform('header.dropdown.auditLog', { format: 'title' }),\n routeUrl: RoutePath.AuditLog,\n iconClass: 'fa fa-book',\n id: this.i18nPipe.transform('header.dropdown.auditLog', { format: 'title' })\n },\n {\n name: this.i18nPipe.transform('header.dropdown.exportResults', { format: 'title' }),\n routeUrl: RoutePath.ExportResults,\n iconClass: 'fa fa-download',\n id: this.i18nPipe.transform('header.dropdown.exportResults', { format: 'title' })\n },\n {\n name: this.i18nPipe.transform('header.dropdown.skipItems', { format: 'title' }),\n routeUrl: RoutePath.SkipItems,\n iconClass: 'fa fa-list-alt',\n id: this.i18nPipe.transform('header.dropdown.skipItems', { format: 'title' })\n }\n ];\n\n constructor(private i18nPipe: I18NextPipe, private authService: AuthService) {}\n\n transform(routeUrl: string): MenuItemType {\n const firstUrlSegment = this.getUrlSegment(routeUrl.replace(this.authService.prefix, '/'));\n return this.reportingDropdownPages.find((item) => item.routeUrl === firstUrlSegment);\n }\n\n private getUrlSegment = (url: string): string => {\n const FIRST_URL_SEGMENT_REGEX = new RegExp('^/[^/]+', 'i');\n return FIRST_URL_SEGMENT_REGEX.test(url) ? url.replace(/^\\/([^/]*).*$/, '$1') : null;\n };\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { AutoActivationMode } from '@common/models/user/auto-activation-mode.model';\nimport { I18NextPipe } from 'angular-i18next';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\n\n@Pipe({\n name: 'autoActivationMode',\n standalone: true,\n pure: true\n})\nexport class AutoActivationModePipe implements PipeTransform {\n private readonly moduleUsers = I18_NAMESPACE_APPS_UI.users;\n\n constructor(private i18nPipe: I18NextPipe) {}\n\n transform(mode: AutoActivationMode): string {\n switch (mode) {\n case AutoActivationMode.AllUsers:\n return this.i18nPipe.transform(this.moduleUsers + ':grid.allUsers', { format: 'title' });\n case AutoActivationMode.NewUsers:\n return this.i18nPipe.transform(this.moduleUsers + ':grid.newCreated', { format: 'title' });\n case AutoActivationMode.Disabled:\n return this.i18nPipe.transform(this.moduleUsers + ':grid.disabled', { format: 'title' });\n default:\n return '';\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { GServiceBHistoryDetails, UserBHistoryDetails } from '@common/models/backup-history';\n\n@Pipe({\n name: 'BHistoryPanelId',\n pure: true\n})\nexport class BHistoryPanelIdPipe implements PipeTransform {\n readonly #prefixId = 'results-panel-';\n\n transform(item: UserBHistoryDetails | GServiceBHistoryDetails, idx: number): string {\n return this.#prefixId + (item?.['Id'] || item.ServiceType + '_' + idx);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nconst nonResizableClasses = 'col-12 col-sm-6 col-md-4 col-lg-3 order-sm-2 order-md-3';\n\n@Pipe({\n name: 'infoColumnLayout',\n pure: true\n})\nexport class InfoColumnLayoutPipe implements PipeTransform {\n transform(resizableMode: boolean): string {\n const classes: string[] = [];\n\n if (resizableMode) {\n classes.push('col-auto');\n } else {\n classes.push(nonResizableClasses);\n }\n\n return classes.join(' ');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nconst nonResizableClassesWithPanel = 'col-12 col-md-4 col-lg-6 order-sm-3 order-md-2';\nconst nonResizableClassesWithoutPanel = 'col-12 col-sm-6 col-md-8 col-lg-9';\n\n@Pipe({\n name: 'mainColumnLayout',\n pure: true\n})\nexport class MainColumnLayoutPipe implements PipeTransform {\n transform(resizableMode: boolean, showInfoPanel: boolean): string {\n const classes: string[] = [];\n\n if (showInfoPanel) {\n classes.push('-showInfoPanel');\n }\n\n if (resizableMode) {\n classes.push('col');\n } else {\n classes.push(showInfoPanel ? nonResizableClassesWithPanel : nonResizableClassesWithoutPanel);\n }\n\n return classes.join(' ');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nconst nonResizableClasses = 'col-12 col-sm-6 col-md-4 col-lg-3';\n\n@Pipe({\n name: 'navColumnLayout',\n pure: true\n})\nexport class NavColumnLayoutPipe implements PipeTransform {\n transform(resizableMode: boolean, showInfoPanel: boolean): string {\n const classes: string[] = [];\n\n if (showInfoPanel) {\n classes.push('-showInfoPanel');\n }\n\n if (resizableMode) {\n classes.push('col-auto');\n } else {\n classes.push(nonResizableClasses);\n }\n\n return classes.join(' ');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'resizeColumnLayout',\n pure: true\n})\nexport class ResizeColumnLayoutPipe implements PipeTransform {\n transform(screenX: number): string {\n switch (true) {\n case screenX < 1600 && screenX >= 1440:\n return '20%';\n case screenX < 1440 && screenX >= 992:\n return '25%';\n default:\n return '16.66666667%';\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DownloadService } from '@common/services/download.service';\n\n@Pipe({\n name: 'downloadLoading',\n pure: false\n})\nexport class GetDownloadLoadingPipe implements PipeTransform {\n constructor(private downloadService: DownloadService) {}\n\n transform(item: unknown): boolean | undefined {\n return this.downloadService.getLoading(item);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { InvoiceStateByAPI } from '@common';\n\n@Pipe({\n name: 'serviceTypeToDisplayName',\n pure: true\n})\nexport class InvoiceStateToDisplayNamePipe implements PipeTransform {\n transform(key: string): string {\n return InvoiceStateByAPI[key] ? (InvoiceStateByAPI[key].displayName as string) : '';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { InvoiceState } from '@common';\n\nenum InvoiceStatusIconTypeEnum {\n expose = 'fa fa-pause-circle',\n paid = 'fa fa-check-circle',\n error = 'fa fa-times-circle',\n wrongPrice = 'fa fa-exclamation-circle',\n waitPayment = 'fa fa-clock-o',\n sendErrorEmail = 'fa fa-envelope-o'\n}\n\nenum InvoiceStatusTypeEnum {\n expose = 'muted',\n paid = 'success',\n error = 'danger',\n wrongPrice = 'danger',\n waitPayment = 'info',\n sendErrorEmail = 'muted'\n}\n\n@Pipe({\n name: 'invoiceStatus',\n pure: true\n})\nexport class InvoiceStatusPipe implements PipeTransform {\n private readonly invoiceStatusIconMap: Map = new Map([\n [InvoiceState.Expose, InvoiceStatusIconTypeEnum.expose],\n [InvoiceState.Paid, InvoiceStatusIconTypeEnum.paid],\n [InvoiceState.Error, InvoiceStatusIconTypeEnum.error],\n [InvoiceState.WrongPrice, InvoiceStatusIconTypeEnum.wrongPrice],\n [InvoiceState.WaitPayment, InvoiceStatusIconTypeEnum.waitPayment],\n [InvoiceState.SendErrorEmail, InvoiceStatusIconTypeEnum.sendErrorEmail]\n ]);\n\n private readonly invoiceStatusTypeMap: Map = new Map([\n [InvoiceState.Expose, InvoiceStatusTypeEnum.expose],\n [InvoiceState.Paid, InvoiceStatusTypeEnum.paid],\n [InvoiceState.Error, InvoiceStatusTypeEnum.error],\n [InvoiceState.WrongPrice, InvoiceStatusTypeEnum.wrongPrice],\n [InvoiceState.WaitPayment, InvoiceStatusTypeEnum.waitPayment],\n [InvoiceState.SendErrorEmail, InvoiceStatusTypeEnum.sendErrorEmail]\n ]);\n\n transform(state: InvoiceState, param: 'icon' | 'type' = 'icon'): unknown {\n if (!state) return '';\n\n switch (param) {\n case 'icon': {\n const classes = ['text-base'];\n\n classes.push(this.invoiceStatusIconMap.get(state));\n\n return classes.join(' ');\n }\n case 'type':\n return this.invoiceStatusTypeMap.get(state);\n default:\n return '';\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { OperationType, OperationTypeByAPIEnum } from '@common/models';\n\n@Pipe({\n name: 'operationTypeToDisplayName',\n pure: true\n})\nexport class OperationTypeToDisplayNamePipe implements PipeTransform {\n transform(key: string): string {\n const item: { operationType: OperationType; displayName: string } = OperationTypeByAPIEnum[key];\n return item ? item.displayName : '';\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ActiveRoutePipe } from '@common/pipes/active-route.pipe';\nimport { BHistoryPanelIdPipe } from '@common/pipes/backup-history';\nimport { InfoColumnLayoutPipe, MainColumnLayoutPipe, NavColumnLayoutPipe, ResizeColumnLayoutPipe } from '@common/pipes/column-layout';\nimport { GetDownloadLoadingPipe } from '@common/pipes/get-download-loading.pipe';\nimport { InvoiceStateToDisplayNamePipe } from '@common/pipes/invoice-state-to-display-name.pipe';\nimport { InvoiceStatusPipe } from '@common/pipes/invoice-status.pipe';\nimport { OperationTypeToDisplayNamePipe } from '@common/pipes/operation-type-to-display-name.pipe';\nimport { PriceToDisplayPipe } from '@common/pipes/price-to-display.pipe';\nimport { BackupStatusPipe, UserStatusPipe } from '@common/pipes/report-status';\nimport { ServiceTypeToDisplayNamePipe } from '@common/pipes/service-type-to-display-name.pipe';\nimport { SmartSearchMaxWidthPipe } from '@common/pipes/smart-search-max-width.pipe';\nimport { SortOrderByPipe } from '@common/pipes/sort-order-by.pipe';\nimport { SrcMimeCategorySbPipe } from '@common/pipes/src-mime-category-sb.pipe';\nimport { SrcMimeCategoryPipe } from '@common/pipes/src-mime-category.pipe';\nimport { TaskStatusIconPipe, TaskStatusTypePipe } from '@common/pipes/task-status';\nimport { FolderIconPipe, FoldersLayoutPipe, MimeCategoryIconPipe } from '@common/pipes/teams';\nimport { TransformTextByPipe } from '@common/pipes/transform-text-by.pipe';\nimport { UserActionTypeAreaPipe } from '@common/pipes/user-action-type-area.pipe';\nimport { UserActionTypePipe } from '@common/pipes/user-action-type.pipe';\nimport { FilterServiceBackupColorPipe, FilterServiceBackupTextPipe, StatusFilterBackupPipe } from '@common/pipes/users';\n\nconst pipes = [\n ActiveRoutePipe,\n BHistoryPanelIdPipe,\n BackupStatusPipe,\n FilterServiceBackupColorPipe,\n FilterServiceBackupTextPipe,\n FolderIconPipe,\n FoldersLayoutPipe,\n GetDownloadLoadingPipe,\n InfoColumnLayoutPipe,\n InvoiceStateToDisplayNamePipe,\n InvoiceStatusPipe,\n MainColumnLayoutPipe,\n MimeCategoryIconPipe,\n NavColumnLayoutPipe,\n OperationTypeToDisplayNamePipe,\n PriceToDisplayPipe,\n ResizeColumnLayoutPipe,\n ServiceTypeToDisplayNamePipe,\n SmartSearchMaxWidthPipe,\n SortOrderByPipe,\n SrcMimeCategoryPipe,\n SrcMimeCategorySbPipe,\n StatusFilterBackupPipe,\n TaskStatusIconPipe,\n TaskStatusTypePipe,\n TransformTextByPipe,\n UserActionTypeAreaPipe,\n UserActionTypePipe,\n UserStatusPipe\n];\n\n@NgModule({\n imports: [CommonModule],\n declarations: pipes,\n exports: pipes\n})\nexport class PipesModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isNumber } from 'lodash';\n\n@Pipe({\n name: 'priceToDisplay',\n pure: true\n})\nexport class PriceToDisplayPipe implements PipeTransform {\n transform(value: number, float: number | string = 100): number {\n return value / (isNumber(float) ? float : Number(float));\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ReportStatus } from '@common';\n\n@Pipe({\n name: 'backupStatus',\n pure: true\n})\nexport class BackupStatusPipe implements PipeTransform {\n private readonly iconMap: Map = new Map([\n [ReportStatus.issue, 'fa fa-exclamation-circle'],\n [ReportStatus.overdue, 'fa fa-clock-o'],\n [ReportStatus.warning, 'fa fa-exclamation-triangle'],\n [ReportStatus.success, 'fa fa-check-circle']\n ]);\n\n private readonly typeMap: Map = new Map([\n [ReportStatus.issue, 'danger'],\n [ReportStatus.overdue, 'yellow'],\n [ReportStatus.warning, 'warning'],\n [ReportStatus.success, 'success']\n ]);\n\n transform(status: ReportStatus, param: 'icon' | 'type' = 'icon'): string {\n if (!status) return '';\n\n switch (param) {\n case 'icon': {\n return this.iconMap.get(status);\n }\n case 'type': {\n return this.typeMap.get(status);\n }\n default:\n throw new Error('Unknown report status. BackupStatusPipe');\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ReportStatus } from '@common';\n\n@Pipe({\n name: 'userStatus',\n pure: true\n})\nexport class UserStatusPipe implements PipeTransform {\n private readonly iconMap: Map = new Map([\n [ReportStatus.issue, 'fa fa-exclamation-circle'],\n [ReportStatus.success, 'fa fa-check-circle'],\n [ReportStatus.warning, 'fa fa-exclamation-triangle'],\n [ReportStatus.disabled, 'fa fa-circle'],\n [ReportStatus.overdue, 'fa fa-clock-o'],\n [ReportStatus.unknown, 'fa fa-question']\n ]);\n\n private readonly typeMap: Map = new Map([\n [ReportStatus.issue, 'danger'],\n [ReportStatus.success, 'success'],\n [ReportStatus.warning, 'warning'],\n [ReportStatus.disabled, 'disabled'],\n [ReportStatus.overdue, 'yellow'],\n [ReportStatus.unknown, 'muted']\n ]);\n\n transform(data: [ReportStatus, string], param: 'icon' | 'type' = 'icon'): string {\n const [state, reason] = data || [];\n\n if (!state) return '';\n\n switch (param) {\n case 'icon': {\n const classes = [];\n\n classes.push(this.iconMap.get(state));\n\n return classes.join(' ');\n }\n case 'type':\n return this.typeMap.get(this.checkUnknownState(state, reason));\n default:\n throw new Error('Unknown user status. UserStatusPipe');\n }\n }\n\n private readonly checkUnknownState = (state: ReportStatus, reason: string): ReportStatus => {\n const unknownState = state === ReportStatus.disabled && reason;\n return unknownState ? ReportStatus.unknown : state;\n };\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { I18NextPipe } from 'angular-i18next';\n\n@Pipe({\n name: 'selectGridAllButtonText',\n standalone: true,\n pure: true\n})\nexport class SelectGridAllButtonTextPipe implements PipeTransform {\n constructor(private i18nPipe: I18NextPipe) {}\n\n transform(total: number, oneEntityKey: string, manyEntitiesKey: string): string {\n const selectAll = this.i18nPipe.transform('paging.selectAll');\n const entities = this.i18nPipe.transform(total === 1 ? oneEntityKey : manyEntitiesKey);\n\n return `${selectAll} ${entities}: ${total}`;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { I18NextPipe } from 'angular-i18next';\n\n@Pipe({\n name: 'selectGridButtonText',\n standalone: true,\n pure: true\n})\nexport class SelectGridButtonTextPipe implements PipeTransform {\n constructor(private i18nPipe: I18NextPipe) {}\n\n transform(count: number, oneEntityKey: string, manyEntitiesKey: string, isSelectAllOnAllPages: boolean): string {\n const selected = this.i18nPipe.transform('common.selected', { format: 'title' });\n const entities = this.i18nPipe.transform(count === 1 ? oneEntityKey : manyEntitiesKey);\n const page = this.i18nPipe.transform('paging.' + (isSelectAllOnAllPages ? 'onAllPages' : 'onThisPage'));\n\n return `${selected} ${count} ${entities} ${page}`;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ServiceType, ServiceTypeByAPIEnum } from '@common/models';\n\n@Pipe({\n name: 'serviceTypeToDisplayName',\n pure: true\n})\nexport class ServiceTypeToDisplayNamePipe implements PipeTransform {\n transform(key: string): string {\n const item: { serviceType: ServiceType; displayName: string } = ServiceTypeByAPIEnum[key];\n return item ? item.displayName : '';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'smartSearchMaxWidth',\n pure: true\n})\nexport class SmartSearchMaxWidthPipe implements PipeTransform {\n transform(screenX: number): string {\n return screenX > 1400 ? '600px' : 'initial';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isArray } from 'lodash';\nimport { naturalSort } from 'mbs-ui-kit';\n\ntype SortOrderByType = 'string' | 'number' | 'Date';\n\n@Pipe({\n name: 'sortOrderBy',\n pure: true\n})\nexport class SortOrderByPipe implements PipeTransform {\n transform(array: T[], field: string, type: SortOrderByType = 'string'): T[] {\n if (!isArray(array)) throw new Error('Not an array passed for sorting');\n\n switch (type) {\n case 'string':\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n return array.sort((a: T, b: T) => naturalSort(a[field].toLowerCase(), b[field].toLowerCase()));\n case 'number':\n return array.sort((a: T, b: T) => naturalSort(a[field], b[field]));\n case 'Date':\n return array.sort((a: T, b: T) => new Date(a[field]).getTime() - new Date(b[field]).getTime());\n default:\n throw new Error('Unknown sorting type');\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { MimeCategorySiteBlock } from '@common';\nimport { environment } from '@env/environment';\n\n@Pipe({\n name: 'srcMimeCategorySb',\n pure: true\n})\nexport class SrcMimeCategorySbPipe implements PipeTransform {\n transform(type: MimeCategorySiteBlock): string {\n const path = environment.spriteMimeCategorySiteBlocks;\n const map = new Map([\n [MimeCategorySiteBlock.GenericList, path + 'itgen'],\n [MimeCategorySiteBlock.DocumentLibrary, path + 'itdl'],\n [MimeCategorySiteBlock.Itrl, path + 'itrl.png'],\n [MimeCategorySiteBlock.Whereabouts, path + 'itgbwher'],\n [MimeCategorySiteBlock.WorkflowHistory, path + 'itwfh'],\n [MimeCategorySiteBlock.PictureLibrary, path + 'itil'],\n [MimeCategorySiteBlock.WebPageLibrary, path + 'itwp'],\n [MimeCategorySiteBlock.Links, path + 'itlink'],\n [MimeCategorySiteBlock.Announcements, path + 'itann'],\n [MimeCategorySiteBlock.Contacts, path + 'itcontct'],\n [MimeCategorySiteBlock.Events, path + 'itevent'],\n [MimeCategorySiteBlock.Tasks, path + 'ittask'],\n [MimeCategorySiteBlock.DiscussionBoard, path + 'itdisc'],\n [MimeCategorySiteBlock.Users, path + 'users'], // UserInformation\n [MimeCategorySiteBlock.XmlForm, path + 'itfl'],\n [MimeCategorySiteBlock.Grid, path + 'itdatash'], // CustomGrid\n // [MimeCategorySiteBlock.DataConnectionLibrary, path + 'itdcl'],\n [MimeCategorySiteBlock.GanttTasks, path + 'itgantt'],\n [MimeCategorySiteBlock.Agenda, path + 'itagnda'],\n [MimeCategorySiteBlock.MeetingUser, path + 'itcontct'],\n [MimeCategorySiteBlock.MeetingObjective, path + 'itobject'],\n [MimeCategorySiteBlock.Posts, path + 'itposts'],\n [MimeCategorySiteBlock.Comments, path + 'itcommnt'],\n [MimeCategorySiteBlock.Categories, path + 'itcat'],\n [MimeCategorySiteBlock.Facility, path + 'itgbfaci'],\n [MimeCategorySiteBlock.CallTrack, path + 'itgbcall'],\n [MimeCategorySiteBlock.Circulation, path + 'itgbcirc'],\n [MimeCategorySiteBlock.Timecard, path + 'itgbtmcd'],\n [MimeCategorySiteBlock.Issues, path + 'itissue'], // IssueTracking\n [MimeCategorySiteBlock.Survey, path + 'itsurvey'],\n [MimeCategorySiteBlock.Decision, path + 'itdecis'],\n [MimeCategorySiteBlock.Teams, path + 'team'],\n [MimeCategorySiteBlock.AppCatalog, path + 'itappcatalog'],\n [MimeCategorySiteBlock.AppRequests, path + 'itapprequests'],\n [MimeCategorySiteBlock.KpiList, path + 'iKpiList'],\n [MimeCategorySiteBlock.ReportsLibrary, path + 'iReportsLibrary'],\n [MimeCategorySiteBlock.Commcat, path + 'itcommcat'],\n [MimeCategorySiteBlock.Tal, path + 'ital'],\n [MimeCategorySiteBlock.Commem, path + 'itcommem'],\n [MimeCategorySiteBlock.Pwsris, path + 'itpwsris'],\n [MimeCategorySiteBlock.Pwscom, path + 'itpwscom'],\n [MimeCategorySiteBlock.ICXDDOC, path + 'ICXDDOC'],\n [MimeCategorySiteBlock.SlideLibrary, path + 'itslidelibrary'],\n [MimeCategorySiteBlock.WebTemplateExtensionsList, path + 'web-template-extensions']\n ]);\n\n return map.get(type) || environment.spriteMimeCategory + 'question';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { MimeCategory } from '@common';\nimport { environment } from '@env/environment';\n\n@Pipe({\n name: 'srcMimeCategory',\n pure: true\n})\nexport class SrcMimeCategoryPipe implements PipeTransform {\n transform(type: MimeCategory, backupOn?: boolean): string {\n const path = environment.spriteMimeCategory;\n const map = new Map([\n [MimeCategory.Archive, path + 'archive'],\n [MimeCategory.Audio, path + 'audio'],\n [MimeCategory.Document, path + 'document'],\n [MimeCategory.Drive, path + 'drive'],\n [MimeCategory.Drawing, path + 'drawing'],\n [MimeCategory.Excel, path + 'excel'],\n [MimeCategory.Folder, path + 'yellow-folder'],\n [MimeCategory.Form, path + 'form'],\n [MimeCategory.Fusion, path + 'fusion'],\n [MimeCategory.File, path + 'generic'],\n [MimeCategory.Generic, path + 'generic'],\n [MimeCategory.Image, path + 'image'],\n [MimeCategory.OneNoteFolder, path + 'one-note-folder'],\n [MimeCategory.OneNoteFile, path + 'one-note-item'],\n [MimeCategory.Pdf, path + 'pdf'],\n [MimeCategory.Powerpoint, path + 'powerpoint'],\n [MimeCategory.Presentation, path + 'presentation'],\n [MimeCategory.Script, path + 'script'],\n [MimeCategory.Site, path + 'site'],\n [MimeCategory.SiteDisabled, path + 'site_disabled'],\n [MimeCategory.SitePage, path + 'spo-aspx'],\n [MimeCategory.Spreadsheet, path + 'spreadsheet'],\n [MimeCategory.Text, path + 'text'],\n [MimeCategory.Video, path + 'video'],\n [MimeCategory.Word, path + 'word']\n ]);\n\n if (backupOn === false && type === MimeCategory.Site) {\n return map.get(MimeCategory.SiteDisabled);\n }\n\n return map.get(type) || path + 'question';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TaskStatus } from '@common';\n\n@Pipe({\n name: 'statusIcon',\n pure: true\n})\nexport class TaskStatusIconPipe implements PipeTransform {\n private readonly _map: Map = new Map([\n [TaskStatus.Pending, 'fa fa-clock-o'],\n [TaskStatus.Running, 'fa fa-spinner rotating'],\n [TaskStatus.Finished, 'fa fa-check-circle'],\n [TaskStatus.Failed, 'fa fa-exclamation-circle'],\n [TaskStatus.Paused, 'fa fa-pause-circle'],\n [TaskStatus.LimitExceeded, 'fa fa-exclamation-triangle'],\n [TaskStatus.Cancelled, 'fa fa-times-circle']\n ]);\n\n transform(status: TaskStatus): any {\n const classes = [];\n\n if (status) {\n classes.push(this._map.get(status));\n }\n\n return classes.join(' ');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TaskStatus } from '@common';\n\n@Pipe({\n name: 'statusType',\n pure: true\n})\nexport class TaskStatusTypePipe implements PipeTransform {\n private readonly _map: Map = new Map([\n [TaskStatus.Pending, 'muted'],\n [TaskStatus.Running, 'primary'],\n [TaskStatus.Finished, 'success'],\n [TaskStatus.Failed, 'danger'],\n [TaskStatus.Paused, 'muted'],\n [TaskStatus.LimitExceeded, 'warning'],\n [TaskStatus.Cancelled, 'danger']\n ]);\n\n transform(status: TaskStatus): any {\n const classes = [];\n\n if (status) {\n classes.push(this._map.get(status));\n }\n\n return classes.join(' ');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ChannelItem, TeamFile, TeamItem, TeamItemType } from '@common/models';\n\n@Pipe({\n name: 'foldersIcon',\n pure: true\n})\nexport class FolderIconPipe implements PipeTransform {\n transform(item: TeamFile | TeamItem | ChannelItem, host?: string): string {\n const icoClass = ['fa'];\n\n if (host) {\n icoClass.push(host);\n }\n\n icoClass.push(this.imageSrcForDriveItem(item));\n\n return icoClass.join(' ');\n }\n\n private imageSrcForDriveItem(item: TeamItem): string {\n switch (item.ItemType) {\n case TeamItemType.Team:\n return `fa-users text-primary`;\n case TeamItemType.Channel:\n return `fa-commenting text-primary`;\n case TeamItemType.PostsRoot:\n return `fa-comments text-primary`;\n case TeamItemType.FilesRoot:\n return `fa-file text-primary`;\n default:\n return '';\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ChannelItem, TeamFile, TeamItem, TeamItemType } from '@common/models';\n\n@Pipe({\n name: 'foldersLayout',\n pure: true\n})\nexport class FoldersLayoutPipe implements PipeTransform {\n transform(item: TeamFile | TeamItem | ChannelItem): boolean {\n return [TeamItemType.Root, TeamItemType.Team, TeamItemType.Channel, TeamItemType.File, TeamItemType.FilesRoot].includes(item.ItemType);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TeamItemType } from '@common/models';\n\n@Pipe({\n name: 'handlingMimeCategoryIcon',\n pure: true\n})\nexport class MimeCategoryIconPipe implements PipeTransform {\n transform(type: TeamItemType): boolean {\n return [TeamItemType.Folder, TeamItemType.Root, TeamItemType.File].includes(type);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'transformTextBy',\n pure: true\n})\nexport class TransformTextByPipe implements PipeTransform {\n transform(value: string, character: string): string {\n return value.length > 0 ? value.replace(/./gm, character) : '';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { UserActionTypeArea } from '@common/models';\n\n@Pipe({\n name: 'userNameTypeArea'\n})\nexport class UserActionTypeAreaPipe implements PipeTransform {\n transform(key: string): string {\n return UserActionTypeArea[key] ? UserActionTypeArea[key].displayName : '';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { UserActionType } from '@common/models';\n\n@Pipe({\n name: 'userNameType'\n})\nexport class UserActionTypePipe implements PipeTransform {\n transform(key: string): string {\n return UserActionType[key] ? UserActionType[key].displayName : '';\n }\n}\n","export enum StatusFilterBackup {\n Disabled = 0,\n Enabled,\n NotAvailable\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TextColor } from '@common';\nimport { StatusFilterBackup } from '@common/enums/users/status-filter-backup.enum';\n\n@Pipe({\n name: 'filterServiceBackupColor',\n pure: true\n})\nexport class FilterServiceBackupColorPipe implements PipeTransform {\n transform(status: StatusFilterBackup): TextColor.success | TextColor.danger | TextColor.gray500 {\n switch (status) {\n case StatusFilterBackup.Disabled:\n return TextColor.gray500;\n case StatusFilterBackup.Enabled:\n return TextColor.success;\n case StatusFilterBackup.NotAvailable:\n return TextColor.danger;\n default:\n throw new Error('Caught error manually: unable to process StatusFilterBackup enum, unknown value');\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ServiceTypeStr } from '@common';\nimport { StatusFilterBackup } from '@common/enums/users/status-filter-backup.enum';\nimport { ServiceType } from '@common/models';\nimport { I18NextPipe } from 'angular-i18next';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\n\n@Pipe({\n name: 'filterServiceBackupText',\n pure: true\n})\nexport class FilterServiceBackupTextPipe implements PipeTransform {\n public readonly moduleUsers = I18_NAMESPACE_APPS_UI.users;\n\n constructor(private i18nPipe: I18NextPipe) {}\n\n transform(status: StatusFilterBackup, serviceType: ServiceType): string {\n const serviceMap = {\n [ServiceType.Mail]: ServiceTypeStr.Mail,\n [ServiceType.Drive]: ServiceTypeStr.Drive,\n [ServiceType.Contacts]: ServiceTypeStr.Contacts,\n [ServiceType.Calendar]: ServiceTypeStr.Calendar\n };\n\n const statusMapKey = {\n [StatusFilterBackup.Disabled]: ':tooltip.serviceBackup.disabled',\n [StatusFilterBackup.Enabled]: ':tooltip.serviceBackup.enabled',\n [StatusFilterBackup.NotAvailable]: ':tooltip.serviceBackup.notAvailable'\n };\n\n const servicePrefix = serviceMap[serviceType];\n const statusSuffix = statusMapKey[status];\n\n if (!servicePrefix) {\n throw new Error('Caught error manually: unable to process ServiceType enum, unknown value');\n }\n\n if (!statusSuffix) {\n throw new Error('Caught error manually: unable to process StatusFilterBackup enum, unknown value');\n }\n\n return this.i18nPipe.transform(this.moduleUsers + statusSuffix, { format: 'capitalize', service: servicePrefix });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { StatusFilterBackup } from '@common/enums/users/status-filter-backup.enum';\nimport { ServiceType, User } from '@common/models';\nimport { UserFiltersEnum } from '@common/services';\n\n@Pipe({\n name: 'statusFilterBackup',\n pure: true\n})\nexport class StatusFilterBackupPipe implements PipeTransform {\n transform(user: User, serviceType: ServiceType, disabledServices: ServiceType[] = []): StatusFilterBackup {\n const { InBackup: inBackup, UserProviderState: providerState, IsPublicFolder: isPublicFolder } = user;\n const serviceEnabled = this.getServiceEnabled(user, serviceType);\n const lastBackupStopReason = this.getLastBackupStopReason(user, serviceType);\n\n if (\n serviceEnabled === false ||\n inBackup === false ||\n providerState === UserFiltersEnum.notInDomain ||\n disabledServices.includes(serviceType) ||\n (isPublicFolder && serviceType === ServiceType.Drive)\n ) {\n return StatusFilterBackup.Disabled;\n }\n\n if (lastBackupStopReason === 'NoLicensesAvailable') {\n return StatusFilterBackup.NotAvailable;\n }\n\n return StatusFilterBackup.Enabled;\n }\n\n private getServiceEnabled(user: User, serviceType: ServiceType): boolean {\n switch (serviceType) {\n case ServiceType.Drive:\n return user.DriveEnable;\n case ServiceType.Calendar:\n return user.CalendarEnable;\n case ServiceType.Mail:\n return user.MailEnable;\n case ServiceType.Contacts:\n return user.ContactsEnable;\n default:\n throw new Error('Caught error manually: Cannot get \"ServiceEnabled\"');\n }\n }\n\n private getLastBackupStopReason(user: User, serviceType: ServiceType): string {\n switch (serviceType) {\n case ServiceType.Drive:\n return user.DriveLastBackupStopReason;\n case ServiceType.Calendar:\n return user.CalendarLastBackupStopReason;\n case ServiceType.Mail:\n return user.EmailLastBackupStopReason;\n case ServiceType.Contacts:\n return user.ContactLastBackupStopReason;\n default:\n throw new Error('Caught error manually: Cannot get \"LastBackupStopReason\"');\n }\n }\n}\n","export enum AuditLogTagsEnum {\n event = 'Event',\n action = 'Action',\n userName = 'User Name',\n from = 'DAte From',\n to = 'Date To'\n}\n\nexport const AuditLogTagsMap: Map = new Map([\n [\n AuditLogTagsEnum.event,\n {\n tag: 'Event',\n prop: 'UserActionTypeArea'\n }\n ],\n [\n AuditLogTagsEnum.action,\n {\n tag: 'Action',\n prop: 'UserActionType'\n }\n ],\n [\n AuditLogTagsEnum.userName,\n {\n tag: 'User Name',\n prop: 'UserName'\n }\n ],\n [\n AuditLogTagsEnum.from,\n {\n tag: 'Date From',\n prop: 'Date'\n }\n ],\n [\n AuditLogTagsEnum.to,\n {\n tag: 'Date To',\n prop: 'Date'\n }\n ]\n]);\n","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function () {};\n\n return {\n s: F,\n n: function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function (e) {\n throw e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function () {\n it = it.call(o);\n },\n n: function () {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function (e) {\n didErr = true;\n err = e;\n },\n f: function () {\n try {\n if (!normalCompletion && it.return != null) it.return();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\n\n// Copyright (c) 2013 Pieroxy \n// This work is free. You can redistribute it and/or modify it\n// under the terms of the WTFPL, Version 2\n// For more information see LICENSE.txt or http://www.wtfpl.net/\n//\n// For more information, the home page:\n// http://pieroxy.net/blog/pages/lz-string/testing.html\n//\n// LZ-based compression algorithm, version 1.4.4\n// private property\nvar f = String.fromCharCode;\nvar keyStrBase64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nvar keyStrUriSafe = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$';\nvar baseReverseDic = {};\n\nfunction getBaseValue(alphabet, character) {\n if (!baseReverseDic[alphabet]) {\n baseReverseDic[alphabet] = {};\n\n for (var i = 0; i < alphabet.length; i++) {\n baseReverseDic[alphabet][alphabet.charAt(i)] = i;\n }\n }\n\n return baseReverseDic[alphabet][character];\n}\n\nvar LZString = {\n compressToBase64: function compressToBase64(input) {\n if (input == null) return '';\n\n var res = LZString._compress(input, 6, function (a) {\n return keyStrBase64.charAt(a);\n });\n\n switch (res.length % 4 // To produce valid Base64\n ) {\n default: // When could this happen ?\n\n case 0:\n return res;\n\n case 1:\n return res + '===';\n\n case 2:\n return res + '==';\n\n case 3:\n return res + '=';\n }\n },\n decompressFromBase64: function decompressFromBase64(input) {\n if (input == null) return '';\n if (input == '') return null;\n return LZString._decompress(input.length, 32, function (index) {\n return getBaseValue(keyStrBase64, input.charAt(index));\n });\n },\n compressToUTF16: function compressToUTF16(input) {\n if (input == null) return '';\n return LZString._compress(input, 15, function (a) {\n return f(a + 32);\n }) + ' ';\n },\n decompressFromUTF16: function decompressFromUTF16(compressed) {\n if (compressed == null) return '';\n if (compressed == '') return null;\n return LZString._decompress(compressed.length, 16384, function (index) {\n return compressed.charCodeAt(index) - 32;\n });\n },\n //compress into uint8array (UCS-2 big endian format)\n compressToUint8Array: function compressToUint8Array(uncompressed) {\n var compressed = LZString.compress(uncompressed);\n var buf = new Uint8Array(compressed.length * 2); // 2 bytes per character\n\n for (var i = 0, TotalLen = compressed.length; i < TotalLen; i++) {\n var current_value = compressed.charCodeAt(i);\n buf[i * 2] = current_value >>> 8;\n buf[i * 2 + 1] = current_value % 256;\n }\n\n return buf;\n },\n //decompress from uint8array (UCS-2 big endian format)\n decompressFromUint8Array: function decompressFromUint8Array(compressed) {\n if (compressed === null || compressed === undefined) {\n return LZString.decompress(compressed);\n } else {\n var buf = new Array(compressed.length / 2); // 2 bytes per character\n\n for (var i = 0, TotalLen = buf.length; i < TotalLen; i++) {\n buf[i] = compressed[i * 2] * 256 + compressed[i * 2 + 1];\n }\n\n var result = [];\n buf.forEach(function (c) {\n result.push(f(c));\n });\n return LZString.decompress(result.join(''));\n }\n },\n //compress into a string that is already URI encoded\n compressToEncodedURIComponent: function compressToEncodedURIComponent(input) {\n if (input == null) return '';\n return LZString._compress(input, 6, function (a) {\n return keyStrUriSafe.charAt(a);\n });\n },\n //decompress from an output of compressToEncodedURIComponent\n decompressFromEncodedURIComponent: function decompressFromEncodedURIComponent(input) {\n if (input == null) return '';\n if (input == '') return null;\n input = input.replace(/ /g, '+');\n return LZString._decompress(input.length, 32, function (index) {\n return getBaseValue(keyStrUriSafe, input.charAt(index));\n });\n },\n compress: function compress(uncompressed) {\n return LZString._compress(uncompressed, 16, function (a) {\n return f(a);\n });\n },\n _compress: function _compress(uncompressed, bitsPerChar, getCharFromInt) {\n if (uncompressed == null) return '';\n var i,\n value,\n context_c = '',\n context_wc = '',\n context_w = '',\n context_enlargeIn = 2,\n // Compensate for the first entry which should not count\n context_dictSize = 3,\n context_numBits = 2,\n context_data_val = 0,\n context_data_position = 0,\n ii;\n var context_dictionary = {},\n context_dictionaryToCreate = {},\n context_data = [];\n\n for (ii = 0; ii < uncompressed.length; ii += 1) {\n context_c = uncompressed.charAt(ii);\n\n if (!Object.prototype.hasOwnProperty.call(context_dictionary, context_c)) {\n context_dictionary[context_c] = context_dictSize++;\n context_dictionaryToCreate[context_c] = true;\n }\n\n context_wc = context_w + context_c;\n\n if (Object.prototype.hasOwnProperty.call(context_dictionary, context_wc)) {\n context_w = context_wc;\n } else {\n if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate, context_w)) {\n if (context_w.charCodeAt(0) < 256) {\n for (i = 0; i < context_numBits; i++) {\n context_data_val = context_data_val << 1;\n\n if (context_data_position == bitsPerChar - 1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n }\n\n value = context_w.charCodeAt(0);\n\n for (i = 0; i < 8; i++) {\n context_data_val = context_data_val << 1 | value & 1;\n\n if (context_data_position == bitsPerChar - 1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n\n value = value >> 1;\n }\n } else {\n value = 1;\n\n for (i = 0; i < context_numBits; i++) {\n context_data_val = context_data_val << 1 | value;\n\n if (context_data_position == bitsPerChar - 1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n\n value = 0;\n }\n\n value = context_w.charCodeAt(0);\n\n for (i = 0; i < 16; i++) {\n context_data_val = context_data_val << 1 | value & 1;\n\n if (context_data_position == bitsPerChar - 1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n\n value = value >> 1;\n }\n }\n\n context_enlargeIn--;\n\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n\n for (i = 0; i < context_numBits; i++) {\n context_data_val = context_data_val << 1 | value & 1;\n\n if (context_data_position == bitsPerChar - 1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n\n value = value >> 1;\n }\n }\n\n context_enlargeIn--;\n\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n } // Add wc to the dictionary.\n\n\n context_dictionary[context_wc] = context_dictSize++;\n context_w = String(context_c);\n }\n } // Output the code for w.\n\n\n if (context_w !== '') {\n if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate, context_w)) {\n if (context_w.charCodeAt(0) < 256) {\n for (i = 0; i < context_numBits; i++) {\n context_data_val = context_data_val << 1;\n\n if (context_data_position == bitsPerChar - 1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n }\n\n value = context_w.charCodeAt(0);\n\n for (i = 0; i < 8; i++) {\n context_data_val = context_data_val << 1 | value & 1;\n\n if (context_data_position == bitsPerChar - 1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n\n value = value >> 1;\n }\n } else {\n value = 1;\n\n for (i = 0; i < context_numBits; i++) {\n context_data_val = context_data_val << 1 | value;\n\n if (context_data_position == bitsPerChar - 1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n\n value = 0;\n }\n\n value = context_w.charCodeAt(0);\n\n for (i = 0; i < 16; i++) {\n context_data_val = context_data_val << 1 | value & 1;\n\n if (context_data_position == bitsPerChar - 1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n\n value = value >> 1;\n }\n }\n\n context_enlargeIn--;\n\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n\n for (i = 0; i < context_numBits; i++) {\n context_data_val = context_data_val << 1 | value & 1;\n\n if (context_data_position == bitsPerChar - 1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n\n value = value >> 1;\n }\n }\n\n context_enlargeIn--;\n\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n } // Mark the end of the stream\n\n\n value = 2;\n\n for (i = 0; i < context_numBits; i++) {\n context_data_val = context_data_val << 1 | value & 1;\n\n if (context_data_position == bitsPerChar - 1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n\n value = value >> 1;\n } // Flush the last char\n\n\n while (true) {\n context_data_val = context_data_val << 1;\n\n if (context_data_position == bitsPerChar - 1) {\n context_data.push(getCharFromInt(context_data_val));\n break;\n } else context_data_position++;\n }\n\n return context_data.join('');\n },\n decompress: function decompress(compressed) {\n if (compressed == null) return '';\n if (compressed == '') return null;\n return LZString._decompress(compressed.length, 32768, function (index) {\n return compressed.charCodeAt(index);\n });\n },\n _decompress: function _decompress(length, resetValue, getNextValue) {\n var dictionary = [],\n result = [],\n data = {\n val: getNextValue(0),\n position: resetValue,\n index: 1\n };\n var enlargeIn = 4,\n dictSize = 4,\n numBits = 3,\n entry = '',\n i,\n w,\n bits,\n resb,\n maxpower,\n power,\n c;\n\n for (i = 0; i < 3; i += 1) {\n dictionary[i] = i;\n }\n\n bits = 0;\n maxpower = Math.pow(2, 2);\n power = 1;\n\n while (power != maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n\n bits |= (resb > 0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2, 8);\n power = 1;\n\n while (power != maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n\n bits |= (resb > 0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n c = f(bits);\n break;\n\n case 1:\n bits = 0;\n maxpower = Math.pow(2, 16);\n power = 1;\n\n while (power != maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n\n bits |= (resb > 0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n c = f(bits);\n break;\n\n case 2:\n return '';\n } // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n\n\n dictionary[3] = c; // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n\n w = c; // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n\n result.push(c);\n\n while (true) {\n if (data.index > length) {\n return '';\n }\n\n bits = 0;\n maxpower = Math.pow(2, numBits);\n power = 1;\n\n while (power != maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n\n bits |= (resb > 0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (c = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2, 8);\n power = 1;\n\n while (power != maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n\n bits |= (resb > 0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n dictionary[dictSize++] = f(bits);\n c = dictSize - 1;\n enlargeIn--;\n break;\n\n case 1:\n bits = 0;\n maxpower = Math.pow(2, 16);\n power = 1;\n\n while (power != maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n\n bits |= (resb > 0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n dictionary[dictSize++] = f(bits);\n c = dictSize - 1;\n enlargeIn--;\n break;\n\n case 2:\n return result.join('');\n }\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n if (dictionary[c]) {\n entry = dictionary[c];\n } else {\n if (c === dictSize) {\n entry = w + w.charAt(0);\n } else {\n return null;\n }\n }\n\n result.push(entry); // Add w+entry[0] to the dictionary.\n\n dictionary[dictSize++] = w + entry.charAt(0);\n enlargeIn--;\n w = entry;\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n }\n }\n};\n\nvar version = \"1.31.0\";\n\n// e.g. Config.DEBUG = Config.DEBUG || instance.get_config('debug')\n\nvar Config = {\n DEBUG: false,\n LIB_VERSION: version\n};\n\n/*\n * Saved references to long variable names, so that closure compiler can\n * minimize file size.\n */\nvar ArrayProto = Array.prototype;\nvar ObjProto = Object.prototype;\nvar toString = ObjProto.toString;\nvar hasOwnProperty = ObjProto.hasOwnProperty;\nvar win = typeof window !== 'undefined' ? window : {};\nvar navigator = win.navigator || {\n userAgent: ''\n};\nvar document$1 = win.document || {};\nvar userAgent = navigator.userAgent;\nvar nativeForEach = ArrayProto.forEach,\n nativeIndexOf = ArrayProto.indexOf,\n nativeIsArray = Array.isArray,\n breaker = {}; // Console override\n\nvar logger = {\n /** @type {function(...*)} */\n log: function log() {\n if (Config.DEBUG && !_isUndefined(window.console) && window.console) {\n // Don't log PostHog debug messages in rrweb\n var log = '__rrweb_original__' in window.console.log ? window.console.log['__rrweb_original__'] : window.console.log;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n try {\n log.apply(window.console, args);\n } catch (err) {\n _eachArray(args, function (arg) {\n log(arg);\n });\n }\n }\n },\n\n /** @type {function(...*)} */\n error: function error() {\n if (Config.DEBUG && !_isUndefined(window.console) && window.console) {\n for (var _len2 = arguments.length, _args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n _args[_key2] = arguments[_key2];\n }\n\n var args = ['PostHog error:'].concat(_args); // Don't log PostHog debug messages in rrweb\n\n var error = '__rrweb_original__' in window.console.error ? window.console.error['__rrweb_original__'] : window.console.error;\n\n try {\n error.apply(window.console, args);\n } catch (err) {\n _eachArray(args, function (arg) {\n error(arg);\n });\n }\n }\n },\n\n /** @type {function(...*)} */\n critical: function critical() {\n if (!_isUndefined(window.console) && window.console) {\n for (var _len3 = arguments.length, _args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n _args[_key3] = arguments[_key3];\n }\n\n var args = ['PostHog error:'].concat(_args); // Don't log PostHog debug messages in rrweb\n\n var error = '__rrweb_original__' in window.console.error ? window.console.error['__rrweb_original__'] : window.console.error;\n\n try {\n error.apply(window.console, args);\n } catch (err) {\n _eachArray(args, function (arg) {\n error(arg);\n });\n }\n }\n }\n}; // UNDERSCORE\n// Embed part of the Underscore Library\n\nvar _trim = function _trim(str) {\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n};\nvar _bind_instance_methods = function _bind_instance_methods(obj) {\n for (var func in obj) {\n if (typeof obj[func] === 'function') {\n obj[func] = obj[func].bind(obj);\n }\n }\n};\n/**\n * @param {*=} obj\n * @param {function(...*)=} iterator\n * @param {Object=} thisArg\n */\n\nfunction _each(obj, iterator, thisArg) {\n if (obj === null || obj === undefined) {\n return;\n }\n\n if (nativeForEach && Array.isArray(obj) && obj.forEach === nativeForEach) {\n obj.forEach(iterator, thisArg);\n } else if ('length' in obj && obj.length === +obj.length) {\n for (var i = 0, l = obj.length; i < l; i++) {\n if (i in obj && iterator.call(thisArg, obj[i], i) === breaker) {\n return;\n }\n }\n } else {\n for (var _key4 in obj) {\n if (hasOwnProperty.call(obj, _key4)) {\n if (iterator.call(thisArg, obj[_key4], _key4) === breaker) {\n return;\n }\n }\n }\n }\n}\nfunction _eachArray(obj, iterator, thisArg) {\n if (Array.isArray(obj)) {\n if (nativeForEach && obj.forEach === nativeForEach) {\n obj.forEach(iterator, thisArg);\n } else if ('length' in obj && obj.length === +obj.length) {\n for (var i = 0, l = obj.length; i < l; i++) {\n if (i in obj && iterator.call(thisArg, obj[i], i) === breaker) {\n return;\n }\n }\n }\n }\n}\nvar _extend = function _extend(obj) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key5 = 1; _key5 < _len4; _key5++) {\n args[_key5 - 1] = arguments[_key5];\n }\n\n _eachArray(args, function (source) {\n for (var prop in source) {\n if (source[prop] !== void 0) {\n obj[prop] = source[prop];\n }\n }\n });\n\n return obj;\n};\nvar _isArray = nativeIsArray || function (obj) {\n return toString.call(obj) === '[object Array]';\n}; // from a comment on http://dbj.org/dbj/?p=286\n// fails on only one very rare and deliberate custom object:\n// let bomb = { toString : undefined, valueOf: function(o) { return \"function BOMBA!\"; }};\n\nvar _isFunction = function _isFunction(f) {\n try {\n return /^\\s*\\bfunction\\b/.test(f);\n } catch (x) {\n return false;\n }\n};\nvar _include = function _include(obj, target) {\n var found = false;\n\n if (obj === null) {\n return found;\n }\n\n if (nativeIndexOf && obj.indexOf === nativeIndexOf) {\n return obj.indexOf(target) != -1;\n }\n\n _each(obj, function (value) {\n if (found || (found = value === target)) {\n return breaker;\n }\n\n return;\n });\n\n return found;\n};\nfunction _includes(str, needle) {\n return str.indexOf(needle) !== -1;\n} // Underscore Addons\n\nvar _isObject = function _isObject(obj) {\n return obj === Object(obj) && !_isArray(obj);\n};\nvar _isUndefined = function _isUndefined(obj) {\n return obj === void 0;\n};\nvar _isString = function _isString(obj) {\n return toString.call(obj) == '[object String]';\n};\nvar _isDate = function _isDate(obj) {\n return toString.call(obj) == '[object Date]';\n};\nvar _isNumber = function _isNumber(obj) {\n return toString.call(obj) == '[object Number]';\n};\nvar _encodeDates = function _encodeDates(obj) {\n _each(obj, function (v, k) {\n if (_isDate(v)) {\n obj[k] = _formatDate(v);\n } else if (_isObject(v)) {\n obj[k] = _encodeDates(v); // recurse\n }\n });\n\n return obj;\n};\nvar _timestamp = function _timestamp() {\n Date.now = Date.now || function () {\n return +new Date();\n };\n\n return Date.now();\n};\nvar _formatDate = function _formatDate(d) {\n // YYYY-MM-DDTHH:MM:SS in UTC\n function pad(n) {\n return n < 10 ? '0' + n : n;\n }\n\n return d.getUTCFullYear() + '-' + pad(d.getUTCMonth() + 1) + '-' + pad(d.getUTCDate()) + 'T' + pad(d.getUTCHours()) + ':' + pad(d.getUTCMinutes()) + ':' + pad(d.getUTCSeconds());\n};\nvar _safewrap = function _safewrap(f) {\n return function () {\n try {\n for (var _len5 = arguments.length, args = new Array(_len5), _key7 = 0; _key7 < _len5; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return f.apply(this, args);\n } catch (e) {\n logger.critical('Implementation error. Please turn on debug and contact support@posthog.com.');\n\n if (Config.DEBUG) {\n logger.critical(e);\n }\n }\n };\n}; // eslint-disable-next-line @typescript-eslint/ban-types\n\nvar _safewrap_class = function _safewrap_class(klass, functions) {\n for (var i = 0; i < functions.length; i++) {\n klass.prototype[functions[i]] = _safewrap(klass.prototype[functions[i]]);\n }\n};\nvar _safewrap_instance_methods = function _safewrap_instance_methods(obj) {\n for (var func in obj) {\n if (typeof obj[func] === 'function') {\n obj[func] = _safewrap(obj[func]);\n }\n }\n};\nvar _strip_empty_properties = function _strip_empty_properties(p) {\n var ret = {};\n\n _each(p, function (v, k) {\n if (_isString(v) && v.length > 0) {\n ret[k] = v;\n }\n });\n\n return ret;\n};\nvar COPY_IN_PROGRESS_ATTRIBUTE = typeof Symbol !== 'undefined' ? Symbol('__deepCircularCopyInProgress__') : '__deepCircularCopyInProgress__';\n/**\n * Deep copies an object.\n * It handles cycles by replacing all references to them with `undefined`\n * Also supports customizing native values\n *\n * @param value\n * @param customizer\n * @param [key] if provided this is the object key associated with the value to be copied. It allows the customizer function to have context when it runs\n * @returns {{}|undefined|*}\n */\n\nfunction deepCircularCopy(value, customizer, key) {\n if (value !== Object(value)) return customizer ? customizer(value, key) : value; // primitive value\n\n if (value[COPY_IN_PROGRESS_ATTRIBUTE]) return undefined;\n value[COPY_IN_PROGRESS_ATTRIBUTE] = true;\n var result;\n\n if (_isArray(value)) {\n result = [];\n\n _eachArray(value, function (it) {\n result.push(deepCircularCopy(it, customizer));\n });\n } else {\n result = {};\n\n _each(value, function (val, key) {\n if (key !== COPY_IN_PROGRESS_ATTRIBUTE) {\n result[key] = deepCircularCopy(val, customizer, key);\n }\n });\n }\n\n delete value[COPY_IN_PROGRESS_ATTRIBUTE];\n return result;\n}\n\nvar LONG_STRINGS_ALLOW_LIST = ['$performance_raw'];\nfunction _copyAndTruncateStrings(object, maxStringLength) {\n return deepCircularCopy(object, function (value, key) {\n if (key && LONG_STRINGS_ALLOW_LIST.indexOf(key) > -1) {\n return value;\n }\n\n if (typeof value === 'string' && maxStringLength !== null) {\n return value.slice(0, maxStringLength);\n }\n\n return value;\n });\n}\nfunction _base64Encode(data) {\n var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var o1,\n o2,\n o3,\n h1,\n h2,\n h3,\n h4,\n bits,\n i = 0,\n ac = 0,\n enc = '';\n var tmp_arr = [];\n\n if (!data) {\n return data;\n }\n\n data = _utf8Encode(data);\n\n do {\n // pack three octets into four hexets\n o1 = data.charCodeAt(i++);\n o2 = data.charCodeAt(i++);\n o3 = data.charCodeAt(i++);\n bits = o1 << 16 | o2 << 8 | o3;\n h1 = bits >> 18 & 0x3f;\n h2 = bits >> 12 & 0x3f;\n h3 = bits >> 6 & 0x3f;\n h4 = bits & 0x3f; // use hexets to index into b64, and append result to encoded string\n\n tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);\n } while (i < data.length);\n\n enc = tmp_arr.join('');\n\n switch (data.length % 3) {\n case 1:\n enc = enc.slice(0, -2) + '==';\n break;\n\n case 2:\n enc = enc.slice(0, -1) + '=';\n break;\n }\n\n return enc;\n}\nvar _utf8Encode = function _utf8Encode(string) {\n string = (string + '').replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n var utftext = '',\n start,\n end;\n var stringl = 0,\n n;\n start = end = 0;\n stringl = string.length;\n\n for (n = 0; n < stringl; n++) {\n var c1 = string.charCodeAt(n);\n var enc = null;\n\n if (c1 < 128) {\n end++;\n } else if (c1 > 127 && c1 < 2048) {\n enc = String.fromCharCode(c1 >> 6 | 192, c1 & 63 | 128);\n } else {\n enc = String.fromCharCode(c1 >> 12 | 224, c1 >> 6 & 63 | 128, c1 & 63 | 128);\n }\n\n if (enc !== null) {\n if (end > start) {\n utftext += string.substring(start, end);\n }\n\n utftext += enc;\n start = end = n + 1;\n }\n }\n\n if (end > start) {\n utftext += string.substring(start, string.length);\n }\n\n return utftext;\n};\nvar _UUID = function () {\n // Time/ticks information\n // 1*new Date() is a cross browser version of Date.now()\n var T = function T() {\n var d = new Date().valueOf();\n var i = 0; // this while loop figures how many browser ticks go by\n // before 1*new Date() returns a new number, ie the amount\n // of ticks that go by per millisecond\n\n while (d == new Date().valueOf()) {\n i++;\n }\n\n return d.toString(16) + i.toString(16);\n }; // Math.Random entropy\n\n\n var R = function R() {\n return Math.random().toString(16).replace('.', '');\n }; // User agent entropy\n // This function takes the user agent string, and then xors\n // together each sequence of 8 bytes. This produces a final\n // sequence of 8 bytes which it returns as hex.\n\n\n var UA = function UA() {\n var ua = userAgent;\n var i,\n ch,\n ret = 0,\n buffer = [];\n\n function xor(result, byte_array) {\n var j,\n tmp = 0;\n\n for (j = 0; j < byte_array.length; j++) {\n tmp |= buffer[j] << j * 8;\n }\n\n return result ^ tmp;\n }\n\n for (i = 0; i < ua.length; i++) {\n ch = ua.charCodeAt(i);\n buffer.unshift(ch & 0xff);\n\n if (buffer.length >= 4) {\n ret = xor(ret, buffer);\n buffer = [];\n }\n }\n\n if (buffer.length > 0) {\n ret = xor(ret, buffer);\n }\n\n return ret.toString(16);\n };\n\n return function () {\n var se = (window.screen.height * window.screen.width).toString(16);\n return T() + '-' + R() + '-' + UA() + '-' + se + '-' + T();\n };\n}(); // _.isBlockedUA()\n// This is to block various web spiders from executing our JS and\n// sending false capturing data\n\nvar _isBlockedUA = function _isBlockedUA(ua) {\n if (/(google web preview|baiduspider|yandexbot|bingbot|googlebot|yahoo! slurp|ahrefsbot|facebookexternalhit|facebookcatalog)/i.test(ua)) {\n return true;\n }\n\n return false;\n};\n/**\n * @param {Object=} formdata\n * @param {string=} arg_separator\n */\n\nvar _HTTPBuildQuery = function _HTTPBuildQuery(formdata) {\n var arg_separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '&';\n var use_val;\n var use_key;\n var tph_arr = [];\n\n _each(formdata, function (val, key) {\n use_val = encodeURIComponent(val.toString());\n use_key = encodeURIComponent(key);\n tph_arr[tph_arr.length] = use_key + '=' + use_val;\n });\n\n return tph_arr.join(arg_separator);\n};\nvar _getQueryParam = function _getQueryParam(url, param) {\n // Expects a raw URL\n var cleanParam = param.replace(/[[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\n var regexS = '[\\\\?&]' + cleanParam + '=([^&#]*)';\n var regex = new RegExp(regexS);\n var results = regex.exec(url);\n\n if (results === null || results && typeof results[1] !== 'string' && results[1].length) {\n return '';\n } else {\n var result = results[1];\n\n try {\n result = decodeURIComponent(result);\n } catch (err) {\n logger.error('Skipping decoding for malformed query param: ' + result);\n }\n\n return result.replace(/\\+/g, ' ');\n }\n};\nvar _getHashParam = function _getHashParam(hash, param) {\n var matches = hash.match(new RegExp(param + '=([^&]*)'));\n return matches ? matches[1] : null;\n};\nvar _register_event = function () {\n // written by Dean Edwards, 2005\n // with input from Tino Zijdel - crisp@xs4all.nl\n // with input from Carl Sverre - mail@carlsverre.com\n // with input from PostHog\n // http://dean.edwards.name/weblog/2005/10/add-event/\n // https://gist.github.com/1930440\n\n /**\n * @param {Object} element\n * @param {string} type\n * @param {function(...*)} handler\n * @param {boolean=} oldSchool\n * @param {boolean=} useCapture\n */\n var register_event = function register_event(element, type, handler, oldSchool, useCapture) {\n if (!element) {\n logger.error('No valid element provided to register_event');\n return;\n }\n\n if (element.addEventListener && !oldSchool) {\n element.addEventListener(type, handler, !!useCapture);\n } else {\n var ontype = 'on' + type;\n var old_handler = element[ontype] // can be undefined\n ;\n element[ontype] = makeHandler(element, handler, old_handler);\n }\n };\n\n function makeHandler(element, new_handler, old_handlers) {\n return function (event) {\n event = event || fixEvent(window.event); // this basically happens in firefox whenever another script\n // overwrites the onload callback and doesn't pass the event\n // object to previously defined callbacks. All the browsers\n // that don't define window.event implement addEventListener\n // so the dom_loaded handler will still be fired as usual.\n\n if (!event) {\n return undefined;\n }\n\n var ret = true;\n var old_result;\n\n if (_isFunction(old_handlers)) {\n old_result = old_handlers(event);\n }\n\n var new_result = new_handler.call(element, event);\n\n if (false === old_result || false === new_result) {\n ret = false;\n }\n\n return ret;\n };\n }\n\n function fixEvent(event) {\n if (event) {\n event.preventDefault = fixEvent.preventDefault;\n event.stopPropagation = fixEvent.stopPropagation;\n }\n\n return event;\n }\n\n fixEvent.preventDefault = function () {\n this.returnValue = false;\n };\n\n fixEvent.stopPropagation = function () {\n this.cancelBubble = true;\n };\n\n return register_event;\n}();\nvar _info = {\n campaignParams: function campaignParams() {\n var campaign_keywords = 'utm_source utm_medium utm_campaign utm_content utm_term gclid fbclid msclkid'.split(' ');\n var params = {};\n\n _each(campaign_keywords, function (kwkey) {\n var kw = _getQueryParam(document$1.URL, kwkey);\n\n if (kw.length) {\n params[kwkey] = kw;\n }\n });\n\n return params;\n },\n searchEngine: function searchEngine(referrer) {\n if (referrer.search('https?://(.*)google.([^/?]*)') === 0) {\n return 'google';\n } else if (referrer.search('https?://(.*)bing.com') === 0) {\n return 'bing';\n } else if (referrer.search('https?://(.*)yahoo.com') === 0) {\n return 'yahoo';\n } else if (referrer.search('https?://(.*)duckduckgo.com') === 0) {\n return 'duckduckgo';\n } else {\n return null;\n }\n },\n searchInfo: function searchInfo(referrer) {\n var search = _info.searchEngine(referrer),\n param = search != 'yahoo' ? 'q' : 'p',\n ret = {};\n\n if (search !== null) {\n ret['$search_engine'] = search;\n\n var keyword = _getQueryParam(referrer, param);\n\n if (keyword.length) {\n ret['ph_keyword'] = keyword;\n }\n }\n\n return ret;\n },\n\n /**\n * This function detects which browser is running this script.\n * The order of the checks are important since many user agents\n * include key words used in later checks.\n */\n browser: function browser(user_agent, vendor, opera) {\n vendor = vendor || ''; // vendor is undefined for at least IE9\n\n if (opera || _includes(user_agent, ' OPR/')) {\n if (_includes(user_agent, 'Mini')) {\n return 'Opera Mini';\n }\n\n return 'Opera';\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n return 'BlackBerry';\n } else if (_includes(user_agent, 'IEMobile') || _includes(user_agent, 'WPDesktop')) {\n return 'Internet Explorer Mobile';\n } else if (_includes(user_agent, 'SamsungBrowser/')) {\n // https://developer.samsung.com/internet/user-agent-string-format\n return 'Samsung Internet';\n } else if (_includes(user_agent, 'Edge') || _includes(user_agent, 'Edg/')) {\n return 'Microsoft Edge';\n } else if (_includes(user_agent, 'FBIOS')) {\n return 'Facebook Mobile';\n } else if (_includes(user_agent, 'Chrome')) {\n return 'Chrome';\n } else if (_includes(user_agent, 'CriOS')) {\n return 'Chrome iOS';\n } else if (_includes(user_agent, 'UCWEB') || _includes(user_agent, 'UCBrowser')) {\n return 'UC Browser';\n } else if (_includes(user_agent, 'FxiOS')) {\n return 'Firefox iOS';\n } else if (_includes(vendor, 'Apple')) {\n if (_includes(user_agent, 'Mobile')) {\n return 'Mobile Safari';\n }\n\n return 'Safari';\n } else if (_includes(user_agent, 'Android')) {\n return 'Android Mobile';\n } else if (_includes(user_agent, 'Konqueror')) {\n return 'Konqueror';\n } else if (_includes(user_agent, 'Firefox')) {\n return 'Firefox';\n } else if (_includes(user_agent, 'MSIE') || _includes(user_agent, 'Trident/')) {\n return 'Internet Explorer';\n } else if (_includes(user_agent, 'Gecko')) {\n return 'Mozilla';\n } else {\n return '';\n }\n },\n\n /**\n * This function detects which browser version is running this script,\n * parsing major and minor version (e.g., 42.1). User agent strings from:\n * http://www.useragentstring.com/pages/useragentstring.php\n */\n browserVersion: function browserVersion(userAgent, vendor, opera) {\n var browser = _info.browser(userAgent, vendor, opera);\n\n var versionRegexs = {\n 'Internet Explorer Mobile': /rv:(\\d+(\\.\\d+)?)/,\n 'Microsoft Edge': /Edge?\\/(\\d+(\\.\\d+)?)/,\n Chrome: /Chrome\\/(\\d+(\\.\\d+)?)/,\n 'Chrome iOS': /CriOS\\/(\\d+(\\.\\d+)?)/,\n 'UC Browser': /(UCBrowser|UCWEB)\\/(\\d+(\\.\\d+)?)/,\n Safari: /Version\\/(\\d+(\\.\\d+)?)/,\n 'Mobile Safari': /Version\\/(\\d+(\\.\\d+)?)/,\n Opera: /(Opera|OPR)\\/(\\d+(\\.\\d+)?)/,\n Firefox: /Firefox\\/(\\d+(\\.\\d+)?)/,\n 'Firefox iOS': /FxiOS\\/(\\d+(\\.\\d+)?)/,\n Konqueror: /Konqueror:(\\d+(\\.\\d+)?)/,\n BlackBerry: /BlackBerry (\\d+(\\.\\d+)?)/,\n 'Android Mobile': /android\\s(\\d+(\\.\\d+)?)/,\n 'Samsung Internet': /SamsungBrowser\\/(\\d+(\\.\\d+)?)/,\n 'Internet Explorer': /(rv:|MSIE )(\\d+(\\.\\d+)?)/,\n Mozilla: /rv:(\\d+(\\.\\d+)?)/\n };\n var regex = versionRegexs[browser];\n\n if (regex === undefined) {\n return null;\n }\n\n var matches = userAgent.match(regex);\n\n if (!matches) {\n return null;\n }\n\n return parseFloat(matches[matches.length - 2]);\n },\n os: function os() {\n var a = userAgent;\n\n if (/Windows/i.test(a)) {\n if (/Phone/.test(a) || /WPDesktop/.test(a)) {\n return 'Windows Phone';\n }\n\n return 'Windows';\n } else if (/(iPhone|iPad|iPod)/.test(a)) {\n return 'iOS';\n } else if (/Android/.test(a)) {\n return 'Android';\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(a)) {\n return 'BlackBerry';\n } else if (/Mac/i.test(a)) {\n return 'Mac OS X';\n } else if (/Linux/.test(a)) {\n return 'Linux';\n } else if (/CrOS/.test(a)) {\n return 'Chrome OS';\n } else {\n return '';\n }\n },\n device: function device(user_agent) {\n if (/Windows Phone/i.test(user_agent) || /WPDesktop/.test(user_agent)) {\n return 'Windows Phone';\n } else if (/iPad/.test(user_agent)) {\n return 'iPad';\n } else if (/iPod/.test(user_agent)) {\n return 'iPod Touch';\n } else if (/iPhone/.test(user_agent)) {\n return 'iPhone';\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n return 'BlackBerry';\n } else if (/Android/.test(user_agent) && !/Mobile/.test(user_agent)) {\n return 'Android Tablet';\n } else if (/Android/.test(user_agent)) {\n return 'Android';\n } else {\n return '';\n }\n },\n deviceType: function deviceType(user_agent) {\n var device = this.device(user_agent);\n\n if (device === 'iPad' || device === 'Android Tablet') {\n return 'Tablet';\n } else if (device) {\n return 'Mobile';\n } else {\n return 'Desktop';\n }\n },\n referringDomain: function referringDomain(referrer) {\n var split = referrer.split('/');\n\n if (split.length >= 3) {\n return split[2];\n }\n\n return '';\n },\n properties: function properties() {\n return _extend(_strip_empty_properties({\n $os: _info.os(),\n $browser: _info.browser(userAgent, navigator.vendor, window.opera),\n $device: _info.device(userAgent),\n $device_type: _info.deviceType(userAgent)\n }), {\n $current_url: window.location.href,\n $host: window.location.host,\n $pathname: window.location.pathname,\n $browser_version: _info.browserVersion(userAgent, navigator.vendor, window.opera),\n $screen_height: window.screen.height,\n $screen_width: window.screen.width,\n $viewport_height: window.innerHeight,\n $viewport_width: window.innerWidth,\n $lib: 'web',\n $lib_version: Config.LIB_VERSION,\n $insert_id: Math.random().toString(36).substring(2, 10) + Math.random().toString(36).substring(2, 10),\n $time: _timestamp() / 1000 // epoch time in seconds\n\n });\n },\n people_properties: function people_properties() {\n return _extend(_strip_empty_properties({\n $os: _info.os(),\n $browser: _info.browser(userAgent, navigator.vendor, window.opera)\n }), {\n $browser_version: _info.browserVersion(userAgent, navigator.vendor, window.opera)\n });\n }\n};\n\nfunction getClassName(el) {\n switch (_typeof(el.className)) {\n case 'string':\n return el.className;\n // TODO: when is this ever used?\n\n case 'object':\n // handle cases where className might be SVGAnimatedString or some other type\n return ('baseVal' in el.className ? el.className.baseVal : null) || el.getAttribute('class') || '';\n\n default:\n // future proof\n return '';\n }\n}\n/*\n * Get the direct text content of an element, protecting against sensitive data collection.\n * Concats textContent of each of the element's text node children; this avoids potential\n * collection of sensitive data that could happen if we used element.textContent and the\n * element had sensitive child elements, since element.textContent includes child content.\n * Scrubs values that look like they could be sensitive (i.e. cc or ssn number).\n * @param {Element} el - element to get the text of\n * @returns {string} the element's direct text content\n */\n\nfunction getSafeText(el) {\n var elText = '';\n\n if (shouldCaptureElement(el) && !isSensitiveElement(el) && el.childNodes && el.childNodes.length) {\n _each(el.childNodes, function (child) {\n if (isTextNode(child) && child.textContent) {\n elText += _trim(child.textContent) // scrub potentially sensitive values\n .split(/(\\s+)/).filter(shouldCaptureValue).join('') // normalize whitespace\n .replace(/[\\r\\n]/g, ' ').replace(/[ ]+/g, ' ') // truncate\n .substring(0, 255);\n }\n });\n }\n\n return _trim(elText);\n}\n/*\n * Check whether an element has nodeType Node.ELEMENT_NODE\n * @param {Element} el - element to check\n * @returns {boolean} whether el is of the correct nodeType\n */\n\nfunction isElementNode(el) {\n return !!el && el.nodeType === 1; // Node.ELEMENT_NODE - use integer constant for browser portability\n}\n/*\n * Check whether an element is of a given tag type.\n * Due to potential reference discrepancies (such as the webcomponents.js polyfill),\n * we want to match tagNames instead of specific references because something like\n * element === document.body won't always work because element might not be a native\n * element.\n * @param {Element} el - element to check\n * @param {string} tag - tag name (e.g., \"div\")\n * @returns {boolean} whether el is of the given tag type\n */\n\nfunction isTag(el, tag) {\n return !!el && !!el.tagName && el.tagName.toLowerCase() === tag.toLowerCase();\n}\n/*\n * Check whether an element has nodeType Node.TEXT_NODE\n * @param {Element} el - element to check\n * @returns {boolean} whether el is of the correct nodeType\n */\n\nfunction isTextNode(el) {\n return !!el && el.nodeType === 3; // Node.TEXT_NODE - use integer constant for browser portability\n}\n/*\n * Check whether an element has nodeType Node.DOCUMENT_FRAGMENT_NODE\n * @param {Element} el - element to check\n * @returns {boolean} whether el is of the correct nodeType\n */\n\nfunction isDocumentFragment(el) {\n return !!el && el.nodeType === 11; // Node.DOCUMENT_FRAGMENT_NODE - use integer constant for browser portability\n}\nvar usefulElements = ['a', 'button', 'form', 'input', 'select', 'textarea', 'label'];\n/*\n * Check whether a DOM event should be \"captured\" or if it may contain sentitive data\n * using a variety of heuristics.\n * @param {Element} el - element to check\n * @param {Event} event - event to check\n * @returns {boolean} whether the event should be captured\n */\n\nfunction shouldCaptureDomEvent(el, event) {\n if (!el || isTag(el, 'html') || !isElementNode(el)) {\n return false;\n }\n\n var parentIsUsefulElement = false;\n var targetElementList = [el]; // TODO: remove this var, it's never queried\n\n var parentNode = true;\n var curEl = el;\n\n while (curEl.parentNode && !isTag(curEl, 'body')) {\n // If element is a shadow root, we skip it\n if (isDocumentFragment(curEl.parentNode)) {\n targetElementList.push(curEl.parentNode.host);\n curEl = curEl.parentNode.host;\n continue;\n }\n\n parentNode = curEl.parentNode || false;\n if (!parentNode) break;\n\n if (usefulElements.indexOf(parentNode.tagName.toLowerCase()) > -1) {\n parentIsUsefulElement = true;\n } else {\n var _compStyles = window.getComputedStyle(parentNode);\n\n if (_compStyles && _compStyles.getPropertyValue('cursor') === 'pointer') {\n parentIsUsefulElement = true;\n }\n }\n\n targetElementList.push(parentNode);\n curEl = parentNode;\n }\n\n var compStyles = window.getComputedStyle(el);\n\n if (compStyles && compStyles.getPropertyValue('cursor') === 'pointer' && event.type === 'click') {\n return true;\n }\n\n var tag = el.tagName.toLowerCase();\n\n switch (tag) {\n case 'html':\n return false;\n\n case 'form':\n return event.type === 'submit';\n\n case 'input':\n return event.type === 'change' || event.type === 'click';\n\n case 'select':\n case 'textarea':\n return event.type === 'change' || event.type === 'click';\n\n default:\n if (parentIsUsefulElement) return event.type === 'click';\n return event.type === 'click' && (usefulElements.indexOf(tag) > -1 || el.getAttribute('contenteditable') === 'true');\n }\n}\n/*\n * Check whether a DOM element should be \"captured\" or if it may contain sentitive data\n * using a variety of heuristics.\n * @param {Element} el - element to check\n * @returns {boolean} whether the element should be captured\n */\n\nfunction shouldCaptureElement(el) {\n for (var curEl = el; curEl.parentNode && !isTag(curEl, 'body'); curEl = curEl.parentNode) {\n var classes = getClassName(curEl).split(' ');\n\n if (_includes(classes, 'ph-sensitive') || _includes(classes, 'ph-no-capture')) {\n return false;\n }\n }\n\n if (_includes(getClassName(el).split(' '), 'ph-include')) {\n return true;\n } // don't include hidden or password fields\n\n\n var type = el.type || '';\n\n if (typeof type === 'string') {\n // it's possible for el.type to be a DOM element if el is a form with a child input[name=\"type\"]\n switch (type.toLowerCase()) {\n case 'hidden':\n return false;\n\n case 'password':\n return false;\n }\n } // filter out data from fields that look like sensitive fields\n\n\n var name = el.name || el.id || ''; // See https://github.com/posthog/posthog-js/issues/165\n // Under specific circumstances a bug caused .replace to be called on a DOM element\n // instead of a string, removing the element from the page. Ensure this issue is mitigated.\n\n if (typeof name === 'string') {\n // it's possible for el.name or el.id to be a DOM element if el is a form with a child input[name=\"name\"]\n var sensitiveNameRegex = /^cc|cardnum|ccnum|creditcard|csc|cvc|cvv|exp|pass|pwd|routing|seccode|securitycode|securitynum|socialsec|socsec|ssn/i;\n\n if (sensitiveNameRegex.test(name.replace(/[^a-zA-Z0-9]/g, ''))) {\n return false;\n }\n }\n\n return true;\n}\n/*\n * Check whether a DOM element is 'sensitive' and we should only capture limited data\n * @param {Element} el - element to check\n * @returns {boolean} whether the element should be captured\n */\n\nfunction isSensitiveElement(el) {\n // don't send data from inputs or similar elements since there will always be\n // a risk of clientside javascript placing sensitive data in attributes\n var allowedInputTypes = ['button', 'checkbox', 'submit', 'reset'];\n\n if (isTag(el, 'input') && !allowedInputTypes.includes(el.type) || isTag(el, 'select') || isTag(el, 'textarea') || el.getAttribute('contenteditable') === 'true') {\n return true;\n }\n\n return false;\n}\n/*\n * Check whether a string value should be \"captured\" or if it may contain sentitive data\n * using a variety of heuristics.\n * @param {string} value - string value to check\n * @returns {boolean} whether the element should be captured\n */\n\nfunction shouldCaptureValue(value) {\n if (value === null || _isUndefined(value)) {\n return false;\n }\n\n if (typeof value === 'string') {\n value = _trim(value); // check to see if input value looks like a credit card number\n // see: https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9781449327453/ch04s20.html\n\n var ccRegex = /^(?:(4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(6(?:011|5[0-9]{2})[0-9]{12})|(3[47][0-9]{13})|(3(?:0[0-5]|[68][0-9])[0-9]{11})|((?:2131|1800|35[0-9]{3})[0-9]{11}))$/;\n\n if (ccRegex.test((value || '').replace(/[- ]/g, ''))) {\n return false;\n } // check to see if input value looks like a social security number\n\n\n var ssnRegex = /(^\\d{3}-?\\d{2}-?\\d{4}$)/;\n\n if (ssnRegex.test(value)) {\n return false;\n }\n }\n\n return true;\n}\n/*\n * Check whether an attribute name is an Angular style attr (either _ngcontent or _nghost)\n * These update on each build and lead to noise in the element chain\n * More details on the attributes here: https://angular.io/guide/view-encapsulation\n * @param {string} attributeName - string value to check\n * @returns {boolean} whether the element is an angular tag\n */\n\nfunction isAngularStyleAttr(attributeName) {\n if (typeof attributeName === 'string') {\n return attributeName.substring(0, 10) === '_ngcontent' || attributeName.substring(0, 7) === '_nghost';\n }\n\n return false;\n}\nfunction loadScript(scriptUrlToLoad, callback) {\n var scriptTag = document.createElement('script');\n scriptTag.type = 'text/javascript';\n scriptTag.src = scriptUrlToLoad;\n scriptTag.onload = callback;\n var scripts = document.getElementsByTagName('script');\n\n if (scripts.length > 0) {\n var _scripts$0$parentNode;\n\n (_scripts$0$parentNode = scripts[0].parentNode) === null || _scripts$0$parentNode === void 0 ? void 0 : _scripts$0$parentNode.insertBefore(scriptTag, scripts[0]);\n } else {\n document.body.appendChild(scriptTag);\n }\n}\n\n// Naive rage click implementation: If mouse has not moved than RAGE_CLICK_THRESHOLD_PX\n// over RAGE_CLICK_CLICK_COUNT clicks with max RAGE_CLICK_TIMEOUT_MS between clicks, it's\n// counted as a rage click\nvar RAGE_CLICK_THRESHOLD_PX = 30;\nvar RAGE_CLICK_TIMEOUT_MS = 1000;\nvar RAGE_CLICK_CLICK_COUNT = 3;\n\nvar RageClick = /*#__PURE__*/function () {\n function RageClick(instance) {\n var enabled = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : instance.get_config('rageclick');\n\n _classCallCheck(this, RageClick);\n\n this.clicks = [];\n this.instance = instance;\n this.enabled = enabled;\n }\n\n _createClass(RageClick, [{\n key: \"click\",\n value: function click(x, y, timestamp) {\n if (!this.enabled) {\n return;\n }\n\n var lastClick = this.clicks[this.clicks.length - 1];\n\n if (lastClick && Math.abs(x - lastClick.x) + Math.abs(y - lastClick.y) < RAGE_CLICK_THRESHOLD_PX && timestamp - lastClick.timestamp < RAGE_CLICK_TIMEOUT_MS) {\n this.clicks.push({\n x: x,\n y: y,\n timestamp: timestamp\n });\n\n if (this.clicks.length === RAGE_CLICK_CLICK_COUNT) {\n this.instance.capture('$rageclick');\n }\n } else {\n this.clicks = [{\n x: x,\n y: y,\n timestamp: timestamp\n }];\n }\n }\n }]);\n\n return RageClick;\n}();\n\nvar autocapture = {\n _initializedTokens: [],\n _previousElementSibling: function _previousElementSibling(el) {\n if (el.previousElementSibling) {\n return el.previousElementSibling;\n } else {\n var _el = el;\n\n do {\n _el = _el.previousSibling; // resolves to ChildNode->Node, which is Element's parent class\n } while (_el && !isElementNode(_el));\n\n return _el;\n }\n },\n _getPropertiesFromElement: function _getPropertiesFromElement(elem, maskInputs, maskText) {\n var tag_name = elem.tagName.toLowerCase();\n var props = {\n tag_name: tag_name\n };\n\n if (usefulElements.indexOf(tag_name) > -1 && !maskText) {\n props['$el_text'] = getSafeText(elem);\n }\n\n var classes = getClassName(elem);\n if (classes.length > 0) props['classes'] = classes.split(' ').filter(function (c) {\n return c !== '';\n });\n\n _each(elem.attributes, function (attr) {\n // Only capture attributes we know are safe\n if (isSensitiveElement(elem) && ['name', 'id', 'class'].indexOf(attr.name) === -1) return;\n\n if (!maskInputs && shouldCaptureValue(attr.value) && !isAngularStyleAttr(attr.name)) {\n props['attr__' + attr.name] = attr.value;\n }\n });\n\n var nthChild = 1;\n var nthOfType = 1;\n var currentElem = elem;\n\n while (currentElem = this._previousElementSibling(currentElem)) {\n // eslint-disable-line no-cond-assign\n nthChild++;\n\n if (currentElem.tagName === elem.tagName) {\n nthOfType++;\n }\n }\n\n props['nth_child'] = nthChild;\n props['nth_of_type'] = nthOfType;\n return props;\n },\n _getDefaultProperties: function _getDefaultProperties(eventType) {\n return {\n $event_type: eventType,\n $ce_version: 1\n };\n },\n _extractCustomPropertyValue: function _extractCustomPropertyValue(customProperty) {\n var propValues = [];\n\n _each(document.querySelectorAll(customProperty['css_selector']), function (matchedElem) {\n var value;\n\n if (['input', 'select'].indexOf(matchedElem.tagName.toLowerCase()) > -1) {\n value = matchedElem['value'];\n } else if (matchedElem['textContent']) {\n value = matchedElem['textContent'];\n }\n\n if (shouldCaptureValue(value)) {\n propValues.push(value);\n }\n });\n\n return propValues.join(', ');\n },\n // TODO: delete custom_properties after changeless typescript refactor\n _getCustomProperties: function _getCustomProperties(targetElementList) {\n var _this = this;\n\n var props = {}; // will be deleted\n\n _each(this._customProperties, function (customProperty) {\n _each(customProperty['event_selectors'], function (eventSelector) {\n var eventElements = document.querySelectorAll(eventSelector);\n\n _each(eventElements, function (eventElement) {\n if (_includes(targetElementList, eventElement) && shouldCaptureElement(eventElement)) {\n props[customProperty['name']] = _this._extractCustomPropertyValue(customProperty);\n }\n });\n });\n });\n\n return props;\n },\n _getEventTarget: function _getEventTarget(e) {\n // https://developer.mozilla.org/en-US/docs/Web/API/Event/target#Compatibility_notes\n if (typeof e.target === 'undefined') {\n return e.srcElement || null;\n } else {\n var _e$target;\n\n if ((_e$target = e.target) !== null && _e$target !== void 0 && _e$target.shadowRoot) {\n return e.composedPath()[0] || null;\n }\n\n return e.target || null;\n }\n },\n _captureEvent: function _captureEvent(e, instance) {\n var _this2 = this;\n\n /*** Don't mess with this code without running IE8 tests on it ***/\n var target = this._getEventTarget(e);\n\n if (isTextNode(target)) {\n // defeat Safari bug (see: http://www.quirksmode.org/js/events_properties.html)\n target = target.parentNode || null;\n }\n\n if (e.type === 'click' && e instanceof MouseEvent) {\n var _this$rageclicks;\n\n (_this$rageclicks = this.rageclicks) === null || _this$rageclicks === void 0 ? void 0 : _this$rageclicks.click(e.clientX, e.clientY, new Date().getTime());\n }\n\n if (target && shouldCaptureDomEvent(target, e)) {\n var targetElementList = [target];\n var curEl = target;\n\n while (curEl.parentNode && !isTag(curEl, 'body')) {\n if (isDocumentFragment(curEl.parentNode)) {\n targetElementList.push(curEl.parentNode.host);\n curEl = curEl.parentNode.host;\n continue;\n }\n\n targetElementList.push(curEl.parentNode);\n curEl = curEl.parentNode;\n }\n\n var elementsJson = [];\n var href,\n explicitNoCapture = false;\n\n _each(targetElementList, function (el) {\n var shouldCaptureEl = shouldCaptureElement(el); // if the element or a parent element is an anchor tag\n // include the href as a property\n\n if (el.tagName.toLowerCase() === 'a') {\n href = el.getAttribute('href');\n href = shouldCaptureEl && shouldCaptureValue(href) && href;\n } // allow users to programmatically prevent capturing of elements by adding class 'ph-no-capture'\n\n\n var classes = getClassName(el).split(' ');\n\n if (_includes(classes, 'ph-no-capture')) {\n explicitNoCapture = true;\n }\n\n elementsJson.push(_this2._getPropertiesFromElement(el, instance.get_config('mask_all_element_attributes'), instance.get_config('mask_all_text')));\n });\n\n if (!instance.get_config('mask_all_text')) {\n elementsJson[0]['$el_text'] = getSafeText(target);\n }\n\n if (href) {\n elementsJson[0]['attr__href'] = href;\n }\n\n if (explicitNoCapture) {\n return false;\n }\n\n var props = _extend(this._getDefaultProperties(e.type), {\n $elements: elementsJson\n }, this._getCustomProperties(targetElementList));\n\n instance.capture('$autocapture', props);\n return true;\n }\n },\n // only reason is to stub for unit tests\n // since you can't override window.location props\n _navigate: function _navigate(href) {\n window.location.href = href;\n },\n _addDomEventHandlers: function _addDomEventHandlers(instance) {\n var _this3 = this;\n\n var handler = function handler(e) {\n e = e || window.event;\n\n _this3._captureEvent(e, instance);\n };\n\n _register_event(document, 'submit', handler, false, true);\n\n _register_event(document, 'change', handler, false, true);\n\n _register_event(document, 'click', handler, false, true);\n },\n _customProperties: [],\n rageclicks: null,\n init: function init(instance) {\n this.rageclicks = new RageClick(instance);\n },\n afterDecideResponse: function afterDecideResponse(response, instance) {\n var token = instance.get_config('token');\n\n if (this._initializedTokens.indexOf(token) > -1) {\n logger.log('autocapture already initialized for token \"' + token + '\"');\n return;\n }\n\n this._initializedTokens.push(token);\n\n if (response && response['config'] && response['config']['enable_collect_everything'] && instance.get_config('autocapture')) {\n // TODO: delete custom_properties after changeless typescript refactor\n if (response['custom_properties']) {\n this._customProperties = response['custom_properties'];\n }\n\n this._addDomEventHandlers(instance);\n } else {\n instance['__autocapture_enabled'] = false;\n }\n },\n // this is a mechanism to ramp up CE with no server-side interaction.\n // when CE is active, every page load results in a decide request. we\n // need to gently ramp this up so we don't overload decide. this decides\n // deterministically if CE is enabled for this project by modding the char\n // value of the project token.\n enabledForProject: function enabledForProject(token, numBuckets, numEnabledBuckets) {\n if (!token) {\n return true;\n }\n\n numBuckets = !_isUndefined(numBuckets) ? numBuckets : 10;\n numEnabledBuckets = !_isUndefined(numEnabledBuckets) ? numEnabledBuckets : 10;\n var charCodeSum = 0;\n\n for (var i = 0; i < token.length; i++) {\n charCodeSum += token.charCodeAt(i);\n }\n\n return charCodeSum % numBuckets < numEnabledBuckets;\n },\n isBrowserSupported: function isBrowserSupported() {\n return _isFunction(document.querySelectorAll);\n }\n};\n\n_bind_instance_methods(autocapture);\n\n_safewrap_instance_methods(autocapture);\n\nvar DOMAIN_MATCH_REGEX = /[a-z0-9][a-z0-9-]+\\.[a-z.]{2,6}$/i; // Methods partially borrowed from quirksmode.org/js/cookies.html\n\nvar cookieStore = {\n is_supported: function is_supported() {\n return true;\n },\n error: function error(msg) {\n logger.error('cookieStore error: ' + msg);\n },\n get: function get(name) {\n try {\n var nameEQ = name + '=';\n var ca = document.cookie.split(';');\n\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n\n while (c.charAt(0) == ' ') {\n c = c.substring(1, c.length);\n }\n\n if (c.indexOf(nameEQ) === 0) {\n return decodeURIComponent(c.substring(nameEQ.length, c.length));\n }\n }\n } catch (err) {}\n\n return null;\n },\n parse: function parse(name) {\n var cookie;\n\n try {\n cookie = JSON.parse(cookieStore.get(name)) || {};\n } catch (err) {// noop\n }\n\n return cookie;\n },\n set: function set(name, value, days, cross_subdomain, is_secure) {\n try {\n var cdomain = '',\n expires = '',\n secure = '';\n\n if (cross_subdomain) {\n var matches = document.location.hostname.match(DOMAIN_MATCH_REGEX),\n domain = matches ? matches[0] : '';\n cdomain = domain ? '; domain=.' + domain : '';\n }\n\n if (days) {\n var date = new Date();\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n expires = '; expires=' + date.toUTCString();\n }\n\n if (is_secure) {\n secure = '; secure';\n }\n\n var new_cookie_val = name + '=' + encodeURIComponent(JSON.stringify(value)) + expires + '; path=/' + cdomain + secure;\n document.cookie = new_cookie_val;\n return new_cookie_val;\n } catch (err) {\n return;\n }\n },\n remove: function remove(name, cross_subdomain) {\n try {\n cookieStore.set(name, '', -1, cross_subdomain);\n } catch (err) {\n return;\n }\n }\n};\nvar _localStorage_supported = null;\nvar localStore = {\n is_supported: function is_supported() {\n if (_localStorage_supported !== null) {\n return _localStorage_supported;\n }\n\n var supported = true;\n\n if (window) {\n try {\n var key = '__mplssupport__',\n val = 'xyz';\n localStore.set(key, val);\n\n if (localStore.get(key) !== '\"xyz\"') {\n supported = false;\n }\n\n localStore.remove(key);\n } catch (err) {\n supported = false;\n }\n } else {\n supported = false;\n }\n\n if (!supported) {\n logger.error('localStorage unsupported; falling back to cookie store');\n }\n\n _localStorage_supported = supported;\n return supported;\n },\n error: function error(msg) {\n logger.error('localStorage error: ' + msg);\n },\n get: function get(name) {\n try {\n return window.localStorage.getItem(name);\n } catch (err) {\n localStore.error(err);\n }\n\n return null;\n },\n parse: function parse(name) {\n try {\n return JSON.parse(localStore.get(name)) || {};\n } catch (err) {// noop\n }\n\n return null;\n },\n set: function set(name, value) {\n try {\n window.localStorage.setItem(name, JSON.stringify(value));\n } catch (err) {\n localStore.error(err);\n }\n },\n remove: function remove(name) {\n try {\n window.localStorage.removeItem(name);\n } catch (err) {\n localStore.error(err);\n }\n }\n}; // Use localstorage for most data but still use cookie for distinct_id\n// This solves issues with cookies having too much data in them causing headers too large\n// Also makes sure we don't have to send a ton of data to the server\n\nvar localPlusCookieStore = _objectSpread2(_objectSpread2({}, localStore), {}, {\n parse: function parse(name) {\n try {\n var extend = {};\n\n try {\n // See if there's a cookie stored with data.\n extend = cookieStore.parse(name) || {};\n\n if (extend['distinct_id']) {\n cookieStore.set(name, {\n distinct_id: extend['distinct_id']\n });\n }\n } catch (err) {}\n\n var value = _extend(extend, JSON.parse(localStore.get(name) || '{}'));\n\n localStore.set(name, value);\n return value;\n } catch (err) {// noop\n }\n\n return null;\n },\n set: function set(name, value, days, cross_subdomain, is_secure) {\n try {\n localStore.set(name, value);\n\n if (value.distinct_id) {\n cookieStore.set(name, {\n distinct_id: value.distinct_id\n }, days, cross_subdomain, is_secure);\n }\n } catch (err) {\n localStore.error(err);\n }\n },\n remove: function remove(name, cross_subdomain) {\n try {\n window.localStorage.removeItem(name);\n cookieStore.remove(name, cross_subdomain);\n } catch (err) {\n localStore.error(err);\n }\n }\n});\nvar memoryStorage = {}; // Storage that only lasts the length of the pageview if we don't want to use cookies\n\nvar memoryStore = {\n is_supported: function is_supported() {\n return true;\n },\n error: function error(msg) {\n logger.error('memoryStorage error: ' + msg);\n },\n get: function get(name) {\n return memoryStorage[name] || null;\n },\n parse: function parse(name) {\n return memoryStorage[name] || null;\n },\n set: function set(name, value) {\n memoryStorage[name] = value;\n },\n remove: function remove(name) {\n delete memoryStorage[name];\n }\n};\nvar sessionStorageSupported = null;\n\nvar sessionStore = {\n is_supported: function is_supported() {\n if (sessionStorageSupported !== null) {\n return sessionStorageSupported;\n }\n\n sessionStorageSupported = true;\n\n if (window) {\n try {\n var key = '__support__',\n val = 'xyz';\n sessionStore.set(key, val);\n\n if (sessionStore.get(key) !== '\"xyz\"') {\n sessionStorageSupported = false;\n }\n\n sessionStore.remove(key);\n } catch (err) {\n sessionStorageSupported = false;\n }\n } else {\n sessionStorageSupported = false;\n }\n\n return sessionStorageSupported;\n },\n error: function error(msg) {\n if (Config.DEBUG) {\n logger.error('sessionStorage error: ', msg);\n }\n },\n get: function get(name) {\n try {\n return window.sessionStorage.getItem(name);\n } catch (err) {\n sessionStore.error(err);\n }\n\n return null;\n },\n parse: function parse(name) {\n try {\n return JSON.parse(sessionStore.get(name)) || null;\n } catch (err) {// noop\n }\n\n return null;\n },\n set: function set(name, value) {\n try {\n window.sessionStorage.setItem(name, JSON.stringify(value));\n } catch (err) {\n sessionStore.error(err);\n }\n },\n remove: function remove(name) {\n try {\n window.sessionStorage.removeItem(name);\n } catch (err) {\n sessionStore.error(err);\n }\n }\n};\n\n/**\n * GDPR utils\n *\n * The General Data Protection Regulation (GDPR) is a regulation in EU law on data protection\n * and privacy for all individuals within the European Union. It addresses the export of personal\n * data outside the EU. The GDPR aims primarily to give control back to citizens and residents\n * over their personal data and to simplify the regulatory environment for international business\n * by unifying the regulation within the EU.\n *\n * This set of utilities is intended to enable opt in/out functionality in the PostHog JS SDK.\n * These functions are used internally by the SDK and are not intended to be publicly exposed.\n */\n\n/**\n * A function used to capture a PostHog event (e.g. PostHogLib.capture)\n * @callback captureFunction\n * @param {String} event_name The name of the event. This can be anything the user does - 'Button Click', 'Sign Up', 'Item Purchased', etc.\n * @param {Object} [properties] A set of properties to include with the event you're sending. These describe the user who did the event or details about the event itself.\n * @param {Function} [callback] If provided, the callback function will be called after capturing the event.\n */\n\n/** Public **/\nvar GDPR_DEFAULT_PERSISTENCE_PREFIX = '__ph_opt_in_out_';\n/**\n * Opt the user in to data capturing and cookies/localstorage for the given token\n * @param {string} token - PostHog project capturing token\n * @param {Object} [options]\n * @param {captureFunction} [options.capture] - function used for capturing a PostHog event to record the opt-in action\n * @param {string} [options.captureEventName] - event name to be used for capturing the opt-in action\n * @param {Object} [options.captureProperties] - set of properties to be captured along with the opt-in action\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__ph_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\n\nfunction optIn(token, options) {\n _optInOut(true, token, options);\n}\n/**\n * Opt the user out of data capturing and cookies/localstorage for the given token\n * @param {string} token - PostHog project capturing token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__ph_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-out cookie expires\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-out cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-out cookie is set as secure or not\n */\n\nfunction optOut(token, options) {\n _optInOut(false, token, options);\n}\n/**\n * Check whether the user has opted in to data capturing and cookies/localstorage for the given token\n * @param {string} token - PostHog project capturing token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__ph_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} whether the user has opted in to the given opt type\n */\n\nfunction hasOptedIn(token, options) {\n return _getStorageValue(token, options) === '1';\n}\n/**\n * Check whether the user has opted out of data capturing and cookies/localstorage for the given token\n * @param {string} token - PostHog project capturing token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__ph_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {boolean} [options.respectDnt] - flag to take browser DNT setting into account\n * @returns {boolean} whether the user has opted out of the given opt type\n */\n\nfunction hasOptedOut(token, options) {\n if (_hasDoNotTrackFlagOn(options)) {\n return true;\n }\n\n return _getStorageValue(token, options) === '0';\n}\n/**\n * Clear the user's opt in/out status of data capturing and cookies/localstorage for the given token\n * @param {string} token - PostHog project capturing token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__ph_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\n\nfunction clearOptInOut(token, options) {\n options = options || {};\n\n _getStorage(options).remove(_getStorageKey(token, options), !!options.crossSubdomainCookie);\n}\n/** Private **/\n\n/**\n * Get storage util\n * @param {Object} [options]\n * @param {string} [options.persistenceType]\n * @returns {object} either cookieStore or localStore\n */\n\nfunction _getStorage(options) {\n options = options || {};\n\n if (options.persistenceType === 'localStorage') {\n return localStore;\n }\n\n if (options.persistenceType === 'localStorage+cookie') {\n return localPlusCookieStore;\n }\n\n return cookieStore;\n}\n/**\n * Get the name of the cookie that is used for the given opt type (capturing, cookie, etc.)\n * @param {string} token - PostHog project capturing token\n * @param {Object} [options]\n * @param {string} [options.persistencePrefix=__ph_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {string} the name of the cookie for the given opt type\n */\n\n\nfunction _getStorageKey(token, options) {\n options = options || {};\n return (options.persistencePrefix || GDPR_DEFAULT_PERSISTENCE_PREFIX) + token;\n}\n/**\n * Get the value of the cookie that is used for the given opt type (capturing, cookie, etc.)\n * @param {string} token - PostHog project capturing token\n * @param {Object} [options]\n * @param {string} [options.persistencePrefix=__ph_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {string} the value of the cookie for the given opt type\n */\n\n\nfunction _getStorageValue(token, options) {\n return _getStorage(options).get(_getStorageKey(token, options));\n}\n/**\n * Check whether the user has set the DNT/doNotTrack setting to true in their browser\n * @param {Object} [options]\n * @param {string} [options.window] - alternate window object to check; used to force various DNT settings in browser tests\n * @param {boolean} [options.respectDnt] - flag to take browser DNT setting into account\n * @returns {boolean} whether the DNT setting is true\n */\n\n\nfunction _hasDoNotTrackFlagOn(options) {\n if (options && options.respectDnt) {\n var win$1 = options && options.window || win;\n var nav = win$1['navigator'] || {};\n var hasDntOn = false;\n\n _each([nav['doNotTrack'], // standard\n nav['msDoNotTrack'], win$1['doNotTrack']], function (dntValue) {\n if (_includes([true, 1, '1', 'yes'], dntValue)) {\n hasDntOn = true;\n }\n });\n\n return hasDntOn;\n }\n\n return false;\n}\n/**\n * Set cookie/localstorage for the user indicating that they are opted in or out for the given opt type\n * @param {boolean} optValue - whether to opt the user in or out for the given opt type\n * @param {string} token - PostHog project capturing token\n * @param {Object} [options]\n * @param {captureFunction} [options.capture] - function used for capturing a PostHog event to record the opt-in action\n * @param {string} [options.captureEventName] - event name to be used for capturing the opt-in action\n * @param {Object} [options.captureProperties] - set of properties to be captured along with the opt-in action\n * @param {string} [options.persistencePrefix=__ph_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\n\n\nfunction _optInOut(optValue, token, options) {\n if (!_isString(token) || !token.length) {\n console.error('gdpr.' + (optValue ? 'optIn' : 'optOut') + ' called with an invalid token');\n return;\n }\n\n options = options || {};\n\n _getStorage(options).set(_getStorageKey(token, options), optValue ? 1 : 0, _isNumber(options.cookieExpiration) ? options.cookieExpiration : null, options.crossSubdomainCookie, options.secureCookie);\n\n if (options.capture && optValue) {\n // only capture event if opting in (optValue=true)\n options.capture(options.captureEventName || '$opt_in', options.captureProperties || {}, {\n send_instantly: true\n });\n }\n}\n\nfunction userOptedOut(posthog, silenceErrors) {\n var optedOut = false;\n\n try {\n var token = posthog.get_config('token');\n var respectDnt = posthog.get_config('respect_dnt');\n var persistenceType = posthog.get_config('opt_out_capturing_persistence_type');\n var persistencePrefix = posthog.get_config('opt_out_capturing_cookie_prefix') || undefined;\n var win = posthog.get_config('window'); // used to override window during browser tests\n\n if (token) {\n // if there was an issue getting the token, continue method execution as normal\n optedOut = hasOptedOut(token, {\n respectDnt: respectDnt,\n persistenceType: persistenceType,\n persistencePrefix: persistencePrefix,\n window: win\n });\n }\n } catch (err) {\n if (!silenceErrors) {\n console.error('Unexpected error when checking capturing opt-out status: ' + err);\n }\n }\n\n return optedOut;\n}\n/**\n * Wrap a method with a check for whether the user is opted out of data capturing and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {PostHog} posthog - the posthog instance\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @param silenceErrors\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\n\nfunction addOptOutCheck(posthog, method, silenceErrors) {\n return function () {\n var optedOut = userOptedOut(posthog, silenceErrors);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (!optedOut) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return method.apply(this, args);\n }\n\n var callback = args[args.length - 1];\n\n if (typeof callback === 'function') {\n callback(0);\n }\n\n return;\n };\n}\n\nvar SET_ACTION = '$set';\nvar SET_ONCE_ACTION = '$set_once';\n/**\n * PostHog People Object\n * @constructor\n */\n\nvar PostHogPeople = /*#__PURE__*/function () {\n function PostHogPeople(posthog) {\n var _this = this;\n\n _classCallCheck(this, PostHogPeople);\n\n this._posthog = posthog;\n /*\n * Set properties on a user record.\n *\n * ### Usage:\n *\n * posthog.people.set('gender', 'm');\n *\n * // or set multiple properties at once\n * posthog.people.set({\n * 'Company': 'Acme',\n * 'Plan': 'Premium',\n * 'Upgrade date': new Date()\n * });\n * // properties can be strings, integers, dates, or lists\n *\n * @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n * @param {*} [to] A value to set on the given property name\n * @param {Function} [callback] If provided, the callback will be called after capturing the event.\n */\n\n this.set = addOptOutCheck(posthog, function (prop, to, callback) {\n var data = _this.set_action(prop, to);\n\n if (_isObject(prop)) {\n callback = to;\n } // make sure that the referrer info has been updated and saved\n\n\n if (_this._get_config('save_referrer')) {\n _this._posthog.persistence.update_referrer_info(document.referrer);\n } // update $set object with default people properties\n\n\n data[SET_ACTION] = _extend({}, _info.people_properties(), _this._posthog.persistence.get_referrer_info(), data[SET_ACTION]);\n return _this._send_request(data, callback);\n });\n /*\n * Set properties on a user record, only if they do not yet exist.\n * This will not overwrite previous people property values, unlike\n * people.set().\n *\n * ### Usage:\n *\n * posthog.people.set_once('First Login Date', new Date());\n *\n * // or set multiple properties at once\n * posthog.people.set_once({\n * 'First Login Date': new Date(),\n * 'Starting Plan': 'Premium'\n * });\n *\n * // properties can be strings, integers or dates\n *\n * @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n * @param {*} [to] A value to set on the given property name\n * @param {Function} [callback] If provided, the callback will be called after capturing the event.\n */\n\n this.set_once = addOptOutCheck(posthog, function (prop, to, callback) {\n var data = _this.set_once_action(prop, to);\n\n if (_isObject(prop)) {\n callback = to;\n }\n\n return _this._send_request(data, callback);\n });\n }\n\n _createClass(PostHogPeople, [{\n key: \"toString\",\n value: function toString() {\n return this._posthog.toString() + '.people';\n }\n }, {\n key: \"_send_request\",\n value: function _send_request(data, callback) {\n data['$token'] = this._get_config('token');\n data['$distinct_id'] = this._posthog.get_distinct_id();\n\n var device_id = this._posthog.get_property('$device_id');\n\n var user_id = this._posthog.get_property('$user_id');\n\n var had_persisted_distinct_id = this._posthog.get_property('$had_persisted_distinct_id');\n\n if (device_id) {\n data['$device_id'] = device_id;\n }\n\n if (user_id) {\n data['$user_id'] = user_id;\n }\n\n if (had_persisted_distinct_id) {\n data['$had_persisted_distinct_id'] = had_persisted_distinct_id;\n }\n\n var date_encoded_data = _encodeDates(data);\n\n var truncated_data = _copyAndTruncateStrings(date_encoded_data, this._get_config('properties_string_max_length'));\n\n var json_data = JSON.stringify(date_encoded_data);\n\n var encoded_data = _base64Encode(json_data);\n\n this._posthog._send_request(this._get_config('api_host') + '/engage/', {\n data: encoded_data\n }, {}, this._posthog._prepare_callback(callback, truncated_data));\n\n return truncated_data;\n }\n }, {\n key: \"_get_config\",\n value: function _get_config(conf_var) {\n return this._posthog.get_config(conf_var);\n }\n }, {\n key: \"_is_reserved_property\",\n value: function _is_reserved_property(prop) {\n return prop === '$distinct_id' || prop === '$token' || prop === '$device_id' || prop === '$user_id' || prop === '$had_persisted_distinct_id';\n } // Internal methods for posthog.people API.\n // These methods shouldn't involve network I/O.\n\n }, {\n key: \"set_action\",\n value: function set_action(prop, to) {\n return this.apiActionParser(SET_ACTION, prop, to);\n }\n }, {\n key: \"set_once_action\",\n value: function set_once_action(prop, to) {\n return this.apiActionParser(SET_ONCE_ACTION, prop, to);\n }\n }, {\n key: \"apiActionParser\",\n value: function apiActionParser(actionType, prop, to) {\n var _this2 = this;\n\n var data = {};\n var props = {};\n\n if (_isObject(prop)) {\n _each(prop, function (v, k) {\n if (!_this2._is_reserved_property(k)) {\n props[k] = v;\n }\n });\n } else {\n props[prop] = to;\n }\n\n data[actionType] = props;\n return data;\n }\n }]);\n\n return PostHogPeople;\n}();\n\nvar parseFeatureFlagDecideResponse = function parseFeatureFlagDecideResponse(response, persistence) {\n var flags = response['featureFlags'];\n\n if (flags) {\n // using the v1 api\n if (Array.isArray(flags)) {\n var $enabled_feature_flags = {};\n\n if (flags) {\n for (var i = 0; i < flags.length; i++) {\n $enabled_feature_flags[flags[i]] = true;\n }\n }\n\n persistence && persistence.register({\n $active_feature_flags: flags,\n $enabled_feature_flags: $enabled_feature_flags\n });\n } else {\n // using the v2 api\n persistence && persistence.register({\n $active_feature_flags: Object.keys(flags || {}),\n $enabled_feature_flags: flags || {}\n });\n }\n } else {\n if (persistence) {\n persistence.unregister('$active_feature_flags');\n persistence.unregister('$enabled_feature_flags');\n }\n }\n};\nvar PostHogFeatureFlags = /*#__PURE__*/function () {\n function PostHogFeatureFlags(instance) {\n _classCallCheck(this, PostHogFeatureFlags);\n\n this.instance = instance;\n this._override_warning = false;\n this.flagCallReported = {};\n this.featureFlagEventHandlers = [];\n this.reloadFeatureFlagsQueued = false;\n this.reloadFeatureFlagsInAction = false;\n }\n\n _createClass(PostHogFeatureFlags, [{\n key: \"getFlags\",\n value: function getFlags() {\n return Object.keys(this.getFlagVariants());\n }\n }, {\n key: \"getFlagVariants\",\n value: function getFlagVariants() {\n var enabledFlags = this.instance.get_property('$enabled_feature_flags');\n var overriddenFlags = this.instance.get_property('$override_feature_flags');\n\n if (!overriddenFlags) {\n return enabledFlags || {};\n }\n\n var finalFlags = _extend({}, enabledFlags);\n\n var overriddenKeys = Object.keys(overriddenFlags);\n\n for (var i = 0; i < overriddenKeys.length; i++) {\n if (overriddenFlags[overriddenKeys[i]] === false) {\n delete finalFlags[overriddenKeys[i]];\n } else {\n finalFlags[overriddenKeys[i]] = overriddenFlags[overriddenKeys[i]];\n }\n }\n\n if (!this._override_warning) {\n console.warn('[PostHog] Overriding feature flags!', {\n enabledFlags: enabledFlags,\n overriddenFlags: overriddenFlags,\n finalFlags: finalFlags\n });\n this._override_warning = true;\n }\n\n return finalFlags;\n }\n /**\n * Reloads feature flags asynchronously.\n *\n * Constraints:\n *\n * 1. Avoid parallel requests\n * 2. Delay a few milliseconds after each reloadFeatureFlags call to batch subsequent changes together\n * 3. Don't call this during initial load (as /decide will be called instead), see posthog-core.js\n */\n\n }, {\n key: \"reloadFeatureFlags\",\n value: function reloadFeatureFlags() {\n if (!this.reloadFeatureFlagsQueued) {\n this.reloadFeatureFlagsQueued = true;\n\n this._startReloadTimer();\n }\n }\n }, {\n key: \"setAnonymousDistinctId\",\n value: function setAnonymousDistinctId(anon_distinct_id) {\n this.$anon_distinct_id = anon_distinct_id;\n }\n }, {\n key: \"setReloadingPaused\",\n value: function setReloadingPaused(isPaused) {\n this.reloadFeatureFlagsInAction = isPaused;\n }\n }, {\n key: \"resetRequestQueue\",\n value: function resetRequestQueue() {\n this.reloadFeatureFlagsQueued = false;\n }\n }, {\n key: \"_startReloadTimer\",\n value: function _startReloadTimer() {\n var _this = this;\n\n if (this.reloadFeatureFlagsQueued && !this.reloadFeatureFlagsInAction) {\n setTimeout(function () {\n if (!_this.reloadFeatureFlagsInAction && _this.reloadFeatureFlagsQueued) {\n _this.reloadFeatureFlagsQueued = false;\n\n _this._reloadFeatureFlagsRequest();\n }\n }, 5);\n }\n }\n }, {\n key: \"_reloadFeatureFlagsRequest\",\n value: function _reloadFeatureFlagsRequest() {\n var _this2 = this;\n\n this.setReloadingPaused(true);\n var token = this.instance.get_config('token');\n var json_data = JSON.stringify({\n token: token,\n distinct_id: this.instance.get_distinct_id(),\n groups: this.instance.getGroups(),\n $anon_distinct_id: this.$anon_distinct_id\n });\n\n var encoded_data = _base64Encode(json_data);\n\n this.instance._send_request(this.instance.get_config('api_host') + '/decide/?v=2', {\n data: encoded_data\n }, {\n method: 'POST'\n }, this.instance._prepare_callback(function (response) {\n // reset anon_distinct_id after at least a single request with it\n // makes it through\n _this2.$anon_distinct_id = undefined;\n\n _this2.receivedFeatureFlags(response); // :TRICKY: Reload - start another request if queued!\n\n\n _this2.setReloadingPaused(false);\n\n _this2._startReloadTimer();\n }));\n }\n /*\n * Get feature flag's value for user.\n *\n * ### Usage:\n *\n * if(posthog.getFeatureFlag('my-flag') === 'some-variant') { // do something }\n *\n * @param {Object|String} key Key of the feature flag.\n * @param {Object|String} options (optional) If {send_event: false}, we won't send an $feature_flag_call event to PostHog.\n */\n\n }, {\n key: \"getFeatureFlag\",\n value: function getFeatureFlag(key) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!this.getFlags()) {\n console.warn('getFeatureFlag for key \"' + key + '\" failed. Feature flags didn\\'t load in time.');\n return false;\n }\n\n var flagValue = this.getFlagVariants()[key];\n\n if ((options.send_event || !('send_event' in options)) && !this.flagCallReported[key]) {\n this.flagCallReported[key] = true;\n this.instance.capture('$feature_flag_called', {\n $feature_flag: key,\n $feature_flag_response: flagValue\n });\n }\n\n return flagValue;\n }\n /*\n * See if feature flag is enabled for user.\n *\n * ### Usage:\n *\n * if(posthog.isFeatureEnabled('beta-feature')) { // do something }\n *\n * @param {Object|String} key Key of the feature flag.\n * @param {Object|String} options (optional) If {send_event: false}, we won't send an $feature_flag_call event to PostHog.\n */\n\n }, {\n key: \"isFeatureEnabled\",\n value: function isFeatureEnabled(key) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!this.getFlags()) {\n console.warn('isFeatureEnabled for key \"' + key + '\" failed. Feature flags didn\\'t load in time.');\n return false;\n }\n\n return !!this.getFeatureFlag(key, options);\n }\n }, {\n key: \"addFeatureFlagsHandler\",\n value: function addFeatureFlagsHandler(handler) {\n this.featureFlagEventHandlers.push(handler);\n }\n }, {\n key: \"receivedFeatureFlags\",\n value: function receivedFeatureFlags(response) {\n this.instance.decideEndpointWasHit = true;\n parseFeatureFlagDecideResponse(response, this.instance.persistence);\n var flags = this.getFlags();\n var variants = this.getFlagVariants();\n this.featureFlagEventHandlers.forEach(function (handler) {\n return handler(flags, variants);\n });\n }\n /*\n * Override feature flags for debugging.\n *\n * ### Usage:\n *\n * - posthog.feature_flags.override(false)\n * - posthog.feature_flags.override(['beta-feature'])\n * - posthog.feature_flags.override({'beta-feature': 'variant', 'other-feature': True})\n *\n * @param {Object|Array|String} flags Flags to override with.\n */\n\n }, {\n key: \"override\",\n value: function override(flags) {\n this._override_warning = false;\n\n if (flags === false) {\n this.instance.persistence.unregister('$override_feature_flags');\n } else if (Array.isArray(flags)) {\n var flagsObj = {};\n\n for (var i = 0; i < flags.length; i++) {\n flagsObj[flags[i]] = true;\n }\n\n this.instance.persistence.register({\n $override_feature_flags: flagsObj\n });\n } else {\n this.instance.persistence.register({\n $override_feature_flags: flags\n });\n }\n }\n /*\n * Register an event listener that runs when feature flags become available or when they change.\n * If there are flags, the listener is called immediately in addition to being called on future changes.\n *\n * ### Usage:\n *\n * posthog.onFeatureFlags(function(featureFlags) { // do something })\n *\n * @param {Function} [callback] The callback function will be called once the feature flags are ready or when they are updated.\n * It'll return a list of feature flags enabled for the user.\n */\n\n }, {\n key: \"onFeatureFlags\",\n value: function onFeatureFlags(callback) {\n this.addFeatureFlagsHandler(callback);\n\n if (this.instance.decideEndpointWasHit) {\n var flags = this.getFlags();\n var flagVariants = this.getFlagVariants();\n callback(flags, flagVariants);\n }\n }\n }]);\n\n return PostHogFeatureFlags;\n}();\n\n/*\n * Constants\n */\nvar SET_QUEUE_KEY = '__mps';\nvar SET_ONCE_QUEUE_KEY = '__mpso';\nvar UNSET_QUEUE_KEY = '__mpus';\nvar ADD_QUEUE_KEY = '__mpa';\nvar APPEND_QUEUE_KEY = '__mpap';\nvar REMOVE_QUEUE_KEY = '__mpr';\nvar UNION_QUEUE_KEY = '__mpu'; // This key is deprecated, but we want to check for it to see whether aliasing is allowed.\n\nvar PEOPLE_DISTINCT_ID_KEY = '$people_distinct_id';\nvar ALIAS_ID_KEY = '__alias';\nvar CAMPAIGN_IDS_KEY = '__cmpns';\nvar EVENT_TIMERS_KEY = '__timers';\nvar SESSION_RECORDING_ENABLED_SERVER_SIDE = '$session_recording_enabled_server_side';\nvar SESSION_ID = '$sesid';\nvar ENABLED_FEATURE_FLAGS = '$enabled_feature_flags';\nvar RESERVED_PROPERTIES = [SET_QUEUE_KEY, SET_ONCE_QUEUE_KEY, UNSET_QUEUE_KEY, ADD_QUEUE_KEY, APPEND_QUEUE_KEY, REMOVE_QUEUE_KEY, UNION_QUEUE_KEY, PEOPLE_DISTINCT_ID_KEY, ALIAS_ID_KEY, CAMPAIGN_IDS_KEY, EVENT_TIMERS_KEY, SESSION_RECORDING_ENABLED_SERVER_SIDE, SESSION_ID, ENABLED_FEATURE_FLAGS];\n/**\n * PostHog Persistence Object\n * @constructor\n */\n\nvar PostHogPersistence = /*#__PURE__*/function () {\n function PostHogPersistence(config) {\n _classCallCheck(this, PostHogPersistence);\n\n // clean chars that aren't accepted by the http spec for cookie values\n // https://datatracker.ietf.org/doc/html/rfc2616#section-2.2\n var token = '';\n\n if (config['token']) {\n token = config['token'].replace(/\\+/g, 'PL').replace(/\\//g, 'SL').replace(/=/g, 'EQ');\n }\n\n this.props = {};\n this.campaign_params_saved = false;\n\n if (config['persistence_name']) {\n this.name = 'ph_' + config['persistence_name'];\n } else {\n this.name = 'ph_' + token + '_posthog';\n }\n\n var storage_type = config['persistence'].toLowerCase();\n\n if (storage_type !== 'cookie' && storage_type.indexOf('localstorage') === -1 && storage_type !== 'memory') {\n logger.critical('Unknown persistence type ' + storage_type + '; falling back to cookie');\n storage_type = config['persistence'] = 'cookie';\n }\n\n if (storage_type === 'localstorage' && localStore.is_supported()) {\n this.storage = localStore;\n } else if (storage_type === 'localstorage+cookie' && localPlusCookieStore.is_supported()) {\n this.storage = localPlusCookieStore;\n } else if (storage_type === 'memory') {\n this.storage = memoryStore;\n } else {\n this.storage = cookieStore;\n }\n\n this.load();\n this.update_config(config);\n this.save();\n }\n\n _createClass(PostHogPersistence, [{\n key: \"properties\",\n value: function properties() {\n var p = {}; // Filter out reserved properties\n\n _each(this.props, function (v, k) {\n if (k === ENABLED_FEATURE_FLAGS && _typeof(v) === 'object') {\n var keys = Object.keys(v);\n\n for (var i = 0; i < keys.length; i++) {\n p[\"$feature/\".concat(keys[i])] = v[keys[i]];\n }\n } else if (!_include(RESERVED_PROPERTIES, k)) {\n p[k] = v;\n }\n });\n\n return p;\n }\n }, {\n key: \"load\",\n value: function load() {\n if (this.disabled) {\n return;\n }\n\n var entry = this.storage.parse(this.name);\n\n if (entry) {\n this.props = _extend({}, entry);\n }\n }\n }, {\n key: \"save\",\n value: function save() {\n if (this.disabled) {\n return;\n }\n\n this.storage.set(this.name, this.props, this.expire_days, this.cross_subdomain, this.secure);\n }\n }, {\n key: \"remove\",\n value: function remove() {\n // remove both domain and subdomain cookies\n this.storage.remove(this.name, false);\n this.storage.remove(this.name, true);\n } // removes the storage entry and deletes all loaded data\n // forced name for tests\n\n }, {\n key: \"clear\",\n value: function clear() {\n this.remove();\n this.props = {};\n }\n /**\n * @param {Object} props\n * @param {*=} default_value\n * @param {number=} days\n */\n\n }, {\n key: \"register_once\",\n value: function register_once(props, default_value, days) {\n var _this = this;\n\n if (_isObject(props)) {\n if (typeof default_value === 'undefined') {\n default_value = 'None';\n }\n\n this.expire_days = typeof days === 'undefined' ? this.default_expiry : days;\n\n _each(props, function (val, prop) {\n if (!_this.props.hasOwnProperty(prop) || _this.props[prop] === default_value) {\n _this.props[prop] = val;\n }\n });\n\n this.save();\n return true;\n }\n\n return false;\n }\n /**\n * @param {Object} props\n * @param {number=} days\n */\n\n }, {\n key: \"register\",\n value: function register(props, days) {\n if (_isObject(props)) {\n this.expire_days = typeof days === 'undefined' ? this.default_expiry : days;\n\n _extend(this.props, props);\n\n this.save();\n return true;\n }\n\n return false;\n }\n }, {\n key: \"unregister\",\n value: function unregister(prop) {\n if (prop in this.props) {\n delete this.props[prop];\n this.save();\n }\n }\n }, {\n key: \"update_campaign_params\",\n value: function update_campaign_params() {\n if (!this.campaign_params_saved) {\n this.register(_info.campaignParams());\n this.campaign_params_saved = true;\n }\n }\n }, {\n key: \"update_search_keyword\",\n value: function update_search_keyword(referrer) {\n this.register(_info.searchInfo(referrer));\n } // EXPORTED METHOD, we test this directly.\n\n }, {\n key: \"update_referrer_info\",\n value: function update_referrer_info(referrer) {\n this.register({\n $referrer: referrer || this.props['$referrer'] || '$direct',\n $referring_domain: _info.referringDomain(referrer) || this.props['$referring_domain'] || '$direct'\n });\n }\n }, {\n key: \"get_referrer_info\",\n value: function get_referrer_info() {\n return _strip_empty_properties({\n $referrer: this['props']['$referrer'],\n $referring_domain: this['props']['$referring_domain']\n });\n } // safely fills the passed in object with stored properties,\n // does not override any properties defined in both\n // returns the passed in object\n\n }, {\n key: \"safe_merge\",\n value: function safe_merge(props) {\n _each(this.props, function (val, prop) {\n if (!(prop in props)) {\n props[prop] = val;\n }\n });\n\n return props;\n }\n }, {\n key: \"update_config\",\n value: function update_config(config) {\n this.default_expiry = this.expire_days = config['cookie_expiration'];\n this.set_disabled(config['disable_persistence']);\n this.set_cross_subdomain(config['cross_subdomain_cookie']);\n this.set_secure(config['secure_cookie']);\n }\n }, {\n key: \"set_disabled\",\n value: function set_disabled(disabled) {\n this.disabled = disabled;\n\n if (this.disabled) {\n this.remove();\n } else {\n this.save();\n }\n }\n }, {\n key: \"set_cross_subdomain\",\n value: function set_cross_subdomain(cross_subdomain) {\n if (cross_subdomain !== this.cross_subdomain) {\n this.cross_subdomain = cross_subdomain;\n this.remove();\n this.save();\n }\n }\n }, {\n key: \"get_cross_subdomain\",\n value: function get_cross_subdomain() {\n return !!this.cross_subdomain;\n }\n }, {\n key: \"set_secure\",\n value: function set_secure(secure) {\n if (secure !== this.secure) {\n this.secure = secure;\n this.remove();\n this.save();\n }\n }\n }, {\n key: \"set_event_timer\",\n value: function set_event_timer(event_name, timestamp) {\n var timers = this.props[EVENT_TIMERS_KEY] || {};\n timers[event_name] = timestamp;\n this.props[EVENT_TIMERS_KEY] = timers;\n this.save();\n }\n }, {\n key: \"remove_event_timer\",\n value: function remove_event_timer(event_name) {\n var timers = this.props[EVENT_TIMERS_KEY] || {};\n var timestamp = timers[event_name];\n\n if (!_isUndefined(timestamp)) {\n delete this.props[EVENT_TIMERS_KEY][event_name];\n this.save();\n }\n\n return timestamp;\n }\n }]);\n\n return PostHogPersistence;\n}();\n\nvar replacementImageURI = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNOCAwSDE2TDAgMTZWOEw4IDBaIiBmaWxsPSIjMkQyRDJEIi8+CjxwYXRoIGQ9Ik0xNiA4VjE2SDhMMTYgOFoiIGZpbGw9IiMyRDJEMkQiLz4KPC9zdmc+Cg==';\n/*\n * Check whether a data payload is nearing 5mb. If it is, it checks the data for\n * data URIs (the likely culprit for large payloads). If it finds data URIs, it either replaces\n * it with a generic image (if it's an image) or removes it.\n * @data {object} the rr-web data object\n * @returns {object} the rr-web data object with data uris filtered out\n */\n\nfunction filterDataURLsFromLargeDataObjects(data) {\n if (data && _typeof(data) === 'object') {\n var stringifiedData = JSON.stringify(data); // String length of 5000000 is an approximation of 5mb\n // Note: with compression, this limit may be able to be increased\n // but we're assuming most of the size is from a data uri which\n // is unlikely to be compressed further\n\n if (stringifiedData.length > 5000000) {\n // Regex that matches the pattern for a dataURI with the shape 'data:{mime type};{encoding},{data}'. It:\n // 1) Checks if the pattern starts with 'data:' (potentially, not at the start of the string)\n // 2) Extracts the mime type of the data uri in the first group\n // 3) Determines when the data URI ends.Depending on if it's used in the src tag or css, it can end with a ) or \"\n var dataURIRegex = /data:([\\w\\/\\-\\.]+);(\\w+),([^)\"]*)/gim;\n var matches = stringifiedData.matchAll(dataURIRegex);\n\n var _iterator = _createForOfIteratorHelper(matches),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var match = _step.value;\n\n if (match[1].toLocaleLowerCase().slice(0, 6) === 'image/') {\n stringifiedData = stringifiedData.replace(match[0], replacementImageURI);\n } else {\n stringifiedData = stringifiedData.replace(match[0], '');\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n\n return JSON.parse(stringifiedData);\n }\n\n return data;\n}\nvar CONSOLE_LOG_PLUGIN_NAME = 'rrweb/console@1'; // The name of the rr-web plugin that emits console logs\n// Console logs can be really large. This function truncates large logs\n// It's a simple function that just truncates long strings.\n// TODO: Ideally this function would have better handling of objects + lists,\n// so they could still be rendered in a pretty way after truncation.\n\nfunction truncateLargeConsoleLogs(event) {\n var MAX_STRING_SIZE = 2000; // Maximum number of characters allowed in a string\n\n var MAX_STRINGS_PER_LOG = 10; // A log can consist of multiple strings (e.g. consol.log('string1', 'string2'))\n\n if (event && _typeof(event) === 'object' && event.type === PLUGIN_EVENT_TYPE && _typeof(event.data) === 'object' && event.data.plugin === CONSOLE_LOG_PLUGIN_NAME) {\n // Note: event.data.payload.payload comes from rr-web, and is an array of strings\n if (event.data.payload.payload.length > MAX_STRINGS_PER_LOG) {\n event.data.payload.payload = event.data.payload.payload.slice(0, MAX_STRINGS_PER_LOG);\n event.data.payload.payload.push('...[truncated]');\n }\n\n var updatedPayload = [];\n\n for (var i = 0; i < event.data.payload.payload.length; i++) {\n if (event.data.payload.payload[i] && // Value can be null\n event.data.payload.payload[i].length > MAX_STRING_SIZE) {\n updatedPayload.push(event.data.payload.payload[i].slice(0, MAX_STRING_SIZE) + '...[truncated]');\n } else {\n updatedPayload.push(event.data.payload.payload[i]);\n }\n }\n\n event.data.payload.payload = updatedPayload;\n return event;\n }\n\n return event;\n}\n\nvar BASE_ENDPOINT = '/e/';\nvar FULL_SNAPSHOT_EVENT_TYPE = 2;\nvar META_EVENT_TYPE = 4;\nvar INCREMENTAL_SNAPSHOT_EVENT_TYPE = 3;\nvar PLUGIN_EVENT_TYPE = 6;\nvar MUTATION_SOURCE_TYPE = 0;\nvar SessionRecording = /*#__PURE__*/function () {\n function SessionRecording(instance) {\n _classCallCheck(this, SessionRecording);\n\n this.instance = instance;\n this.captureStarted = false;\n this.snapshots = [];\n this.emit = false; // Controls whether data is sent to the server or not\n\n this.endpoint = BASE_ENDPOINT;\n this.stopRrweb = undefined;\n this.windowId = null;\n this.sessionId = null;\n this.receivedDecide = false;\n }\n\n _createClass(SessionRecording, [{\n key: \"startRecordingIfEnabled\",\n value: function startRecordingIfEnabled() {\n if (this.isRecordingEnabled()) {\n this.startCaptureAndTrySendingQueuedSnapshots();\n } else {\n this.stopRecording();\n }\n }\n }, {\n key: \"started\",\n value: function started() {\n return this.captureStarted;\n }\n }, {\n key: \"stopRecording\",\n value: function stopRecording() {\n if (this.captureStarted && this.stopRrweb) {\n this.stopRrweb();\n this.stopRrweb = undefined;\n this.captureStarted = false;\n }\n }\n }, {\n key: \"isRecordingEnabled\",\n value: function isRecordingEnabled() {\n var enabled_server_side = !!this.instance.get_property(SESSION_RECORDING_ENABLED_SERVER_SIDE);\n var enabled_client_side = !this.instance.get_config('disable_session_recording');\n return enabled_server_side && enabled_client_side;\n }\n }, {\n key: \"afterDecideResponse\",\n value: function afterDecideResponse(response) {\n var _response$sessionReco;\n\n this.receivedDecide = true;\n\n if (this.instance.persistence) {\n this.instance.persistence.register(_defineProperty({}, SESSION_RECORDING_ENABLED_SERVER_SIDE, !!response['sessionRecording']));\n }\n\n if ((_response$sessionReco = response.sessionRecording) !== null && _response$sessionReco !== void 0 && _response$sessionReco.endpoint) {\n var _response$sessionReco2;\n\n this.endpoint = (_response$sessionReco2 = response.sessionRecording) === null || _response$sessionReco2 === void 0 ? void 0 : _response$sessionReco2.endpoint;\n }\n\n this.startRecordingIfEnabled();\n }\n }, {\n key: \"startCaptureAndTrySendingQueuedSnapshots\",\n value: function startCaptureAndTrySendingQueuedSnapshots() {\n var _this = this;\n\n // Only submit data after we've received a decide response to account for\n // changing endpoints and the feature being disabled on the server side.\n if (this.receivedDecide) {\n this.emit = true;\n this.snapshots.forEach(function (properties) {\n return _this._captureSnapshot(properties);\n });\n }\n\n this._startCapture();\n }\n }, {\n key: \"_startCapture\",\n value: function _startCapture() {\n // According to the rrweb docs, rrweb is not supported on IE11 and below:\n // \"rrweb does not support IE11 and below because it uses the MutationObserver API which was supported by these browsers.\"\n // https://github.com/rrweb-io/rrweb/blob/master/guide.md#compatibility-note\n //\n // However, MutationObserver does exist on IE11, it just doesn't work well and does not detect all changes.\n // Instead, when we load \"recorder.js\", the first JS error is about \"Object.assign\" being undefined.\n // Thus instead of MutationObserver, we look for this function and block recording if it's undefined.\n if (typeof Object.assign === 'undefined') {\n return;\n }\n\n if (!this.captureStarted && !this.instance.get_config('disable_session_recording')) {\n this.captureStarted = true;\n loadScript(this.instance.get_config('api_host') + '/static/recorder.js?v=' + Config.LIB_VERSION, this._onScriptLoaded.bind(this));\n }\n }\n }, {\n key: \"_updateWindowAndSessionIds\",\n value: function _updateWindowAndSessionIds(event) {\n var _event$data;\n\n // Some recording events are triggered by non-user events (e.g. \"X minutes ago\" text updating on the screen).\n // We don't want to extend the session or trigger a new session in these cases. These events are designated by event\n // type -> incremental update, and source -> mutation.\n var isNotUserInteraction = event.type === INCREMENTAL_SNAPSHOT_EVENT_TYPE && ((_event$data = event.data) === null || _event$data === void 0 ? void 0 : _event$data.source) === MUTATION_SOURCE_TYPE;\n\n var _this$instance$sessio = this.instance.sessionManager.checkAndGetSessionAndWindowId(isNotUserInteraction, event.timestamp),\n windowId = _this$instance$sessio.windowId,\n sessionId = _this$instance$sessio.sessionId; // Event types FullSnapshot and Meta mean we're already in the process of sending a full snapshot\n\n\n if ((this.windowId !== windowId || this.sessionId !== sessionId) && [FULL_SNAPSHOT_EVENT_TYPE, META_EVENT_TYPE].indexOf(event.type) === -1) {\n var _this$rrwebRecord;\n\n (_this$rrwebRecord = this.rrwebRecord) === null || _this$rrwebRecord === void 0 ? void 0 : _this$rrwebRecord.takeFullSnapshot();\n }\n\n this.windowId = windowId;\n this.sessionId = sessionId;\n }\n }, {\n key: \"_onScriptLoaded\",\n value: function _onScriptLoaded() {\n var _this$rrwebRecord2,\n _this2 = this;\n\n // rrweb config info: https://github.com/rrweb-io/rrweb/blob/7d5d0033258d6c29599fb08412202d9a2c7b9413/src/record/index.ts#L28\n var sessionRecordingOptions = {\n // select set of rrweb config options we expose to our users\n // see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n blockClass: 'ph-no-capture',\n blockSelector: undefined,\n ignoreClass: 'ph-ignore-input',\n maskAllInputs: true,\n maskInputOptions: {},\n maskInputFn: undefined,\n slimDOMOptions: {},\n collectFonts: false,\n inlineStylesheet: true\n }; // We switched from loading all of rrweb to just the record part, but\n // keep backwards compatibility if someone hasn't upgraded PostHog\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n\n this.rrwebRecord = window.rrweb ? window.rrweb.record : window.rrwebRecord; // only allows user to set our 'whitelisted' options\n\n var userSessionRecordingOptions = this.instance.get_config('session_recording');\n\n for (var _i = 0, _Object$entries = Object.entries(userSessionRecordingOptions || {}); _i < _Object$entries.length; _i++) {\n var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),\n key = _Object$entries$_i[0],\n value = _Object$entries$_i[1];\n\n if (key in sessionRecordingOptions) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n sessionRecordingOptions[key] = value;\n }\n }\n\n this.stopRrweb = (_this$rrwebRecord2 = this.rrwebRecord) === null || _this$rrwebRecord2 === void 0 ? void 0 : _this$rrwebRecord2.call(this, _objectSpread2({\n emit: function emit(event) {\n event = truncateLargeConsoleLogs(filterDataURLsFromLargeDataObjects(event));\n\n _this2._updateWindowAndSessionIds(event);\n\n var properties = {\n $snapshot_data: event,\n $session_id: _this2.sessionId,\n $window_id: _this2.windowId\n };\n\n _this2.instance._captureMetrics.incr('rrweb-record');\n\n _this2.instance._captureMetrics.incr(\"rrweb-record-\".concat(event.type));\n\n if (_this2.emit) {\n _this2._captureSnapshot(properties);\n } else {\n _this2.snapshots.push(properties);\n }\n },\n plugins: window.rrwebConsoleRecord && this.instance.get_config('enable_recording_console_log') ? [window.rrwebConsoleRecord.getRecordConsolePlugin()] : []\n }, sessionRecordingOptions)); // :TRICKY: rrweb does not capture navigation within SPA-s, so hook into our $pageview events to get access to all events.\n // Dropping the initial event is fine (it's always captured by rrweb).\n\n this.instance._addCaptureHook(function (eventName) {\n if (eventName === '$pageview') {\n var _this2$rrwebRecord;\n\n (_this2$rrwebRecord = _this2.rrwebRecord) === null || _this2$rrwebRecord === void 0 ? void 0 : _this2$rrwebRecord.addCustomEvent('$pageview', {\n href: window.location.href\n });\n }\n });\n }\n }, {\n key: \"_captureSnapshot\",\n value: function _captureSnapshot(properties) {\n // :TRICKY: Make sure we batch these requests, use a custom endpoint and don't truncate the strings.\n this.instance.capture('$snapshot', properties, {\n transport: 'XHR',\n method: 'POST',\n endpoint: this.endpoint,\n _noTruncate: true,\n _batchKey: 'sessionRecording',\n _metrics: {\n rrweb_full_snapshot: properties.$snapshot_data.type === FULL_SNAPSHOT_EVENT_TYPE\n }\n });\n }\n }]);\n\n return SessionRecording;\n}();\n\nvar Decide = /*#__PURE__*/function () {\n function Decide(instance) {\n _classCallCheck(this, Decide);\n\n this.instance = instance; // don't need to wait for `decide` to return if flags were provided on initialisation\n\n this.instance.decideEndpointWasHit = this.instance._hasBootstrappedFeatureFlags();\n }\n\n _createClass(Decide, [{\n key: \"call\",\n value: function call() {\n var _this = this;\n\n /*\n Calls /decide endpoint to fetch options for autocapture, session recording, feature flags & compression.\n */\n var json_data = JSON.stringify({\n token: this.instance.get_config('token'),\n distinct_id: this.instance.get_distinct_id(),\n groups: this.instance.getGroups()\n });\n\n var encoded_data = _base64Encode(json_data);\n\n this.instance._send_request(\"\".concat(this.instance.get_config('api_host'), \"/decide/?v=2\"), {\n data: encoded_data,\n verbose: true\n }, {\n method: 'POST'\n }, function (response) {\n return _this.parseDecideResponse(response);\n });\n }\n }, {\n key: \"parseDecideResponse\",\n value: function parseDecideResponse(response) {\n var _this2 = this,\n _this$instance$sessio;\n\n if ((response === null || response === void 0 ? void 0 : response.status) === 0) {\n console.error('Failed to fetch feature flags from PostHog.');\n return;\n }\n\n this.instance.decideEndpointWasHit = true;\n\n if (!(document && document.body)) {\n console.log('document not ready yet, trying again in 500 milliseconds...');\n setTimeout(function () {\n _this2.parseDecideResponse(response);\n }, 500);\n return;\n }\n\n this.instance.toolbar.afterDecideResponse(response);\n (_this$instance$sessio = this.instance.sessionRecording) === null || _this$instance$sessio === void 0 ? void 0 : _this$instance$sessio.afterDecideResponse(response);\n autocapture.afterDecideResponse(response, this.instance);\n this.instance.featureFlags.receivedFeatureFlags(response);\n\n if (response['supportedCompression']) {\n var compression = {};\n\n var _iterator = _createForOfIteratorHelper(response['supportedCompression']),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var method = _step.value;\n compression[method] = true;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n this.instance['compression'] = compression;\n } else {\n this.instance['compression'] = {};\n }\n }\n }]);\n\n return Decide;\n}();\n\nvar Toolbar = /*#__PURE__*/function () {\n function Toolbar(instance) {\n _classCallCheck(this, Toolbar);\n\n this.instance = instance;\n }\n\n _createClass(Toolbar, [{\n key: \"afterDecideResponse\",\n value: function afterDecideResponse(response) {\n var editorParams = response['editorParams'] || (response['toolbarVersion'] ? {\n toolbarVersion: response['toolbarVersion']\n } : {});\n\n if (response['isAuthenticated'] && editorParams['toolbarVersion'] && editorParams['toolbarVersion'].indexOf('toolbar') === 0) {\n this._loadEditor(_objectSpread2(_objectSpread2({}, editorParams), {}, {\n apiURL: this.instance.get_config('api_host')\n }));\n }\n }\n /**\n * To load the visual editor, we need an access token and other state. That state comes from one of three places:\n * 1. In the URL hash params if the customer is using an old snippet\n * 2. From session storage under the key `editorParams` if the editor was initialized on a previous page\n */\n\n }, {\n key: \"maybeLoadEditor\",\n value: function maybeLoadEditor() {\n var location = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.location;\n var localStorage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n var history = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : window.history;\n\n try {\n // Before running the code we check if we can access localStorage, if not we opt-out\n if (!localStorage) {\n try {\n window.localStorage.setItem('test', 'test');\n window.localStorage.removeItem('test');\n } catch (error) {\n return false;\n } // If localStorage was undefined, and localStorage is supported we set the default value\n\n\n localStorage = window.localStorage;\n }\n\n var stateHash = _getHashParam(location.hash, '__posthog') || _getHashParam(location.hash, 'state');\n\n var state = stateHash ? JSON.parse(decodeURIComponent(stateHash)) : null;\n var parseFromUrl = state && (state['action'] === 'mpeditor' || state['action'] === 'ph_authorize');\n var editorParams;\n\n if (parseFromUrl) {\n // happens if they are initializing the editor using an old snippet\n editorParams = state;\n\n if (editorParams && Object.keys(editorParams).length > 0) {\n localStorage.setItem('_postHogEditorParams', JSON.stringify(editorParams));\n\n if (state['desiredHash']) {\n // hash that was in the url before the redirect\n location.hash = state['desiredHash'];\n } else if (history) {\n history.replaceState('', document.title, location.pathname + location.search); // completely remove hash\n } else {\n location.hash = ''; // clear hash (but leaves # unfortunately)\n }\n }\n } else {\n // get credentials from localStorage from a previous initialzation\n editorParams = JSON.parse(localStorage.getItem('_postHogEditorParams') || '{}'); // delete \"add-action\" or other intent from editorParams, otherwise we'll have the same intent\n // every time we open the page (e.g. you just visiting your own site an hour later)\n\n delete editorParams.userIntent;\n }\n\n if (!editorParams.apiURL) {\n editorParams.apiURL = this.instance.get_config('api_host');\n }\n\n if (editorParams['token'] && this.instance.get_config('token') === editorParams['token']) {\n this._loadEditor(editorParams);\n\n return true;\n } else {\n return false;\n }\n } catch (e) {\n return false;\n }\n }\n }, {\n key: \"_loadEditor\",\n value: function _loadEditor(editorParams) {\n var _this = this;\n\n if (!window['_postHogToolbarLoaded']) {\n window['_postHogToolbarLoaded'] = true;\n var host = editorParams['jsURL'] || editorParams['apiURL'] || this.instance.get_config('api_host');\n var toolbarScript = 'toolbar.js';\n var editorUrl = host + (host.endsWith('/') ? '' : '/') + 'static/' + toolbarScript + '?_ts=' + new Date().getTime();\n var disableToolbarMetrics = this.instance.get_config('api_host') !== 'https://app.posthog.com' && this.instance.get_config('advanced_disable_toolbar_metrics');\n editorParams = _objectSpread2(_objectSpread2({}, editorParams), disableToolbarMetrics ? {\n instrument: false\n } : {});\n loadScript(editorUrl, function () {\n window['ph_load_editor'](editorParams, _this.instance);\n }); // Turbolinks doesn't fire an onload event but does replace the entire page, including the toolbar\n\n _register_event(window, 'turbolinks:load', function () {\n window['_postHogToolbarLoaded'] = false;\n\n _this._loadEditor(editorParams);\n });\n\n return true;\n }\n\n return false;\n }\n }]);\n\n return Toolbar;\n}();\n\nvar RequestQueueScaffold = /*#__PURE__*/function () {\n // flag to continue to recursively poll or not\n // to track empty polls\n // to become interval for reference to clear later\n function RequestQueueScaffold() {\n var pollInterval = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 3000;\n\n _classCallCheck(this, RequestQueueScaffold);\n\n this.isPolling = true; // flag to continue to recursively poll or not\n\n this._event_queue = [];\n this._empty_queue_count = 0; // to track empty polls\n\n this._poller = undefined; // to become interval for reference to clear later\n\n this._pollInterval = pollInterval;\n }\n\n _createClass(RequestQueueScaffold, [{\n key: \"setPollInterval\",\n value: function setPollInterval(interval) {\n this._pollInterval = interval; // Reset interval if running already\n\n if (this.isPolling) {\n this.poll();\n }\n } // // eslint-disable-next-line no-unused-vars\n // enqueue(_requestData: Record): void {\n // return\n // }\n\n }, {\n key: \"poll\",\n value: function poll() {\n return;\n }\n }, {\n key: \"unload\",\n value: function unload() {\n return;\n }\n }, {\n key: \"getTime\",\n value: function getTime() {\n return new Date().getTime();\n }\n }]);\n\n return RequestQueueScaffold;\n}();\n\nvar RequestQueue = /*#__PURE__*/function (_RequestQueueScaffold) {\n _inherits(RequestQueue, _RequestQueueScaffold);\n\n var _super = _createSuper(RequestQueue);\n\n function RequestQueue(captureMetrics, handlePollRequest) {\n var _this;\n\n var pollInterval = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 3000;\n\n _classCallCheck(this, RequestQueue);\n\n _this = _super.call(this, pollInterval);\n _this.handlePollRequest = handlePollRequest;\n _this.captureMetrics = captureMetrics;\n return _this;\n }\n\n _createClass(RequestQueue, [{\n key: \"enqueue\",\n value: function enqueue(url, data, options) {\n this.captureMetrics.incr('batch-enqueue');\n\n this._event_queue.push({\n url: url,\n data: data,\n options: options\n });\n\n if (!this.isPolling) {\n this.isPolling = true;\n this.poll();\n }\n }\n }, {\n key: \"poll\",\n value: function poll() {\n var _this2 = this;\n\n clearTimeout(this._poller);\n this._poller = setTimeout(function () {\n if (_this2._event_queue.length > 0) {\n var requests = _this2.formatQueue();\n\n var _loop = function _loop(key) {\n var _requests$key = requests[key],\n url = _requests$key.url,\n data = _requests$key.data,\n options = _requests$key.options;\n\n _each(data, function (_, dataKey) {\n data[dataKey]['offset'] = Math.abs(data[dataKey]['timestamp'] - _this2.getTime());\n delete data[dataKey]['timestamp'];\n });\n\n _this2.handlePollRequest(url, data, options);\n\n _this2.captureMetrics.incr('batch-requests');\n\n _this2.captureMetrics.incr(\"batch-requests-\".concat(url.slice(url.length - 2)));\n\n _this2.captureMetrics.incr('batch-handle', data.length);\n\n _this2.captureMetrics.incr(\"batch-handle-\".concat(url.slice(url.length - 2)), data.length);\n };\n\n for (var key in requests) {\n _loop(key);\n }\n\n _this2._event_queue.length = 0; // flush the _event_queue\n\n _this2._empty_queue_count = 0;\n } else {\n _this2._empty_queue_count++;\n }\n /**\n * _empty_queue_count will increment each time the queue is polled\n * and it is empty. To avoid empty polling (user went idle, stepped away from comp)\n * we can turn it off with the isPolling flag.\n *\n * Polling will be re enabled when the next time PostHogLib.capture is called with\n * an event that should be added to the event queue.\n */\n\n\n if (_this2._empty_queue_count > 4) {\n _this2.isPolling = false;\n _this2._empty_queue_count = 0;\n }\n\n if (_this2.isPolling) {\n _this2.poll();\n }\n }, this._pollInterval);\n }\n }, {\n key: \"updateUnloadMetrics\",\n value: function updateUnloadMetrics() {\n var requests = this.formatQueue();\n\n for (var key in requests) {\n var _requests$key2 = requests[key],\n _url = _requests$key2.url,\n _data = _requests$key2.data;\n this.captureMetrics.incr('batch-unload-requests');\n this.captureMetrics.incr(\"batch-unload-requests-\".concat(_url.slice(_url.length - 2)));\n this.captureMetrics.incr('batch-unload', _data.length);\n this.captureMetrics.incr(\"batch-unload-\".concat(_url.slice(_url.length - 2)), _data.length);\n }\n }\n }, {\n key: \"unload\",\n value: function unload() {\n var _this3 = this;\n\n clearTimeout(this._poller);\n var requests = this._event_queue.length > 0 ? this.formatQueue() : {};\n this._event_queue.length = 0;\n var requestValues = Object.values(requests); // Always force events to be sent before recordings, as events are more important, and recordings are bigger and thus less likely to arrive\n\n var sortedRequests = [].concat(_toConsumableArray(requestValues.filter(function (r) {\n return r.url.indexOf('/e') === 0;\n })), _toConsumableArray(requestValues.filter(function (r) {\n return r.url.indexOf('/e') !== 0;\n })));\n sortedRequests.map(function (_ref) {\n var url = _ref.url,\n data = _ref.data,\n options = _ref.options;\n\n _this3.handlePollRequest(url, data, _objectSpread2(_objectSpread2({}, options), {}, {\n transport: 'sendBeacon'\n }));\n });\n }\n }, {\n key: \"formatQueue\",\n value: function formatQueue() {\n var requests = {};\n\n _each(this._event_queue, function (request) {\n var url = request.url,\n data = request.data,\n options = request.options;\n var key = (options ? options._batchKey : null) || url;\n\n if (requests[key] === undefined) {\n requests[key] = {\n data: [],\n url: url,\n options: options\n };\n } // :TRICKY: Metrics-only code\n\n\n if (options && requests[key].options && requests[key].options._metrics && !requests[key].options._metrics['rrweb_full_snapshot']) {\n requests[key].options._metrics['rrweb_full_snapshot'] = options._metrics['rrweb_full_snapshot'];\n }\n\n requests[key].data.push(data);\n });\n\n return requests;\n }\n }]);\n\n return RequestQueue;\n}(RequestQueueScaffold);\n\nvar CaptureMetrics = /*#__PURE__*/function () {\n function CaptureMetrics(enabled) {\n _classCallCheck(this, CaptureMetrics);\n\n this.enabled = enabled;\n this.metrics = {};\n }\n\n _createClass(CaptureMetrics, [{\n key: \"incr\",\n value: function incr(key) {\n var by = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n if (this.enabled) {\n key = \"phjs-\".concat(key);\n this.metrics[key] = (this.metrics[key] || 0) + by;\n }\n }\n }, {\n key: \"decr\",\n value: function decr(key) {\n if (this.enabled) {\n key = \"phjs-\".concat(key);\n this.metrics[key] = (this.metrics[key] || 0) - 1;\n }\n }\n }]);\n\n return CaptureMetrics;\n}();\n\n// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n\n\nvar u8 = Uint8Array,\n u16 = Uint16Array,\n u32 = Uint32Array; // fixed length extra bits\n\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0,\n/* unused */\n0, 0,\n/* impossible */\n0]); // fixed distance extra bits\n// see fleb note\n\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13,\n/* unused */\n0, 0]); // code length index map\n\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); // get base, reverse index map from extra bits\n\nvar freb = function freb(eb, start) {\n var b = new u16(31);\n\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n } // numbers here are at max 18 bits\n\n\n var r = new u32(b[30]);\n\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = j - b[i] << 5 | i;\n }\n }\n\n return [b, r];\n};\n\nvar _a = freb(fleb, 2),\n fl = _a[0],\n revfl = _a[1]; // we can ignore the fact that the other numbers are wrong; they never happen anyway\n\n\nfl[28] = 258, revfl[258] = 28;\n\nvar _b = freb(fdeb, 0),\n revfd = _b[1]; // map of value to reverse (assuming 16 bits)\n\n\nvar rev = new u16(32768);\n\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = (i & 0xAAAA) >>> 1 | (i & 0x5555) << 1;\n x = (x & 0xCCCC) >>> 2 | (x & 0x3333) << 2;\n x = (x & 0xF0F0) >>> 4 | (x & 0x0F0F) << 4;\n rev[i] = ((x & 0xFF00) >>> 8 | (x & 0x00FF) << 8) >>> 1;\n} // create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\n\n\nvar hMap = function hMap(cd, mb, r) {\n var s = cd.length; // index\n\n var i = 0; // u16 \"map\": index -> # of codes with bit length = index\n\n var l = new u16(mb); // length of cd must be 288 (total # of codes)\n\n for (; i < s; ++i) {\n ++l[cd[i] - 1];\n } // u16 \"map\": index -> minimum code for bit length = index\n\n\n var le = new u16(mb);\n\n for (i = 0; i < mb; ++i) {\n le[i] = le[i - 1] + l[i - 1] << 1;\n }\n\n var co;\n\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb); // bits to remove for reverser\n\n var rvb = 15 - mb;\n\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = i << 4 | cd[i]; // free bits\n\n var r_1 = mb - cd[i]; // start value\n\n var v = le[cd[i] - 1]++ << r_1; // m is end value\n\n for (var m = v | (1 << r_1) - 1; v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >>> rvb] = sv;\n }\n }\n }\n } else {\n co = new u16(s);\n\n for (i = 0; i < s; ++i) {\n co[i] = rev[le[cd[i] - 1]++] >>> 15 - cd[i];\n }\n }\n\n return co;\n}; // fixed length tree\n\n\nvar flt = new u8(288);\n\nfor (var i = 0; i < 144; ++i) {\n flt[i] = 8;\n}\n\nfor (var i = 144; i < 256; ++i) {\n flt[i] = 9;\n}\n\nfor (var i = 256; i < 280; ++i) {\n flt[i] = 7;\n}\n\nfor (var i = 280; i < 288; ++i) {\n flt[i] = 8;\n} // fixed distance tree\n\n\nvar fdt = new u8(32);\n\nfor (var i = 0; i < 32; ++i) {\n fdt[i] = 5;\n} // fixed length map\n\n\nvar flm = /*#__PURE__*/hMap(flt, 9, 0);\n // fixed distance map\n\nvar fdm = /*#__PURE__*/hMap(fdt, 5, 0);\n // find max of array\n\n\nvar shft = function shft(p) {\n return (p / 8 >> 0) + (p & 7 && 1);\n}; // typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\n\n\nvar slc = function slc(v, s, e) {\n if (s == null || s < 0) s = 0;\n if (e == null || e > v.length) e = v.length; // can't use .constructor in case user-supplied\n\n var n = new (v instanceof u16 ? u16 : v instanceof u32 ? u32 : u8)(e - s);\n n.set(v.subarray(s, e));\n return n;\n}; // expands raw DEFLATE data\n\n\nvar wbits = function wbits(d, p, v) {\n v <<= p & 7;\n var o = p / 8 >> 0;\n d[o] |= v;\n d[o + 1] |= v >>> 8;\n}; // starting at p, write the minimum number of bits (>8) that can hold v to d\n\n\nvar wbits16 = function wbits16(d, p, v) {\n v <<= p & 7;\n var o = p / 8 >> 0;\n d[o] |= v;\n d[o + 1] |= v >>> 8;\n d[o + 2] |= v >>> 16;\n}; // creates code lengths from a frequency table\n\n\nvar hTree = function hTree(d, mb) {\n // Need extra info to make a tree\n var t = [];\n\n for (var i = 0; i < d.length; ++i) {\n if (d[i]) t.push({\n s: i,\n f: d[i]\n });\n }\n\n var s = t.length;\n var t2 = t.slice();\n if (!s) return [new u8(0), 0];\n\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return [v, 1];\n }\n\n t.sort(function (a, b) {\n return a.f - b.f;\n }); // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n\n t.push({\n s: -1,\n f: 25001\n });\n var l = t[0],\n r = t[1],\n i0 = 0,\n i1 = 1,\n i2 = 2;\n t[0] = {\n s: -1,\n f: l.f + r.f,\n l: l,\n r: r\n }; // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = {\n s: -1,\n f: l.f + r.f,\n l: l,\n r: r\n };\n }\n\n var maxSym = t2[0].s;\n\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym) maxSym = t2[i].s;\n } // code lengths\n\n\n var tr = new u16(maxSym + 1); // max bits in tree\n\n var mbt = ln(t[i1 - 1], tr, 0);\n\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0,\n dt = 0; // left cost\n\n var lft = mbt - mb,\n cst = 1 << lft;\n t2.sort(function (a, b) {\n return tr[b.s] - tr[a.s] || a.f - b.f;\n });\n\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n\n if (tr[i2_1] > mb) {\n dt += cst - (1 << mbt - tr[i2_1]);\n tr[i2_1] = mb;\n } else break;\n }\n\n dt >>>= lft;\n\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb) dt -= 1 << mb - tr[i2_2]++ - 1;else ++i;\n }\n\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n\n mbt = mb;\n }\n\n return [new u8(tr), mbt];\n}; // get the max length and assign length codes\n\n\nvar ln = function ln(n, l, d) {\n return n.s == -1 ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1)) : l[n.s] = d;\n}; // length codes generation\n\n\nvar lc = function lc(c) {\n var s = c.length; // Note that the semicolon was intentional\n\n while (s && !c[--s]) {\n }\n\n var cl = new u16(++s); // ind num streak\n\n var cli = 0,\n cln = c[0],\n cls = 1;\n\n var w = function w(v) {\n cl[cli++] = v;\n };\n\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s) ++cls;else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138) {\n w(32754);\n }\n\n if (cls > 2) {\n w(cls > 10 ? cls - 11 << 5 | 28690 : cls - 3 << 5 | 12305);\n cls = 0;\n }\n } else if (cls > 3) {\n w(cln), --cls;\n\n for (; cls > 6; cls -= 6) {\n w(8304);\n }\n\n if (cls > 2) w(cls - 3 << 5 | 8208), cls = 0;\n }\n\n while (cls--) {\n w(cln);\n }\n\n cls = 1;\n cln = c[i];\n }\n }\n\n return [cl.subarray(0, cli), s];\n}; // calculate the length of output from tree, code lengths\n\n\nvar clen = function clen(cf, cl) {\n var l = 0;\n\n for (var i = 0; i < cl.length; ++i) {\n l += cf[i] * cl[i];\n }\n\n return l;\n}; // writes a fixed block\n// returns the new bit pos\n\n\nvar wfblk = function wfblk(out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >>> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n\n for (var i = 0; i < s; ++i) {\n out[o + i + 4] = dat[i];\n }\n\n return (o + 4 + s) * 8;\n}; // writes a block\n\n\nvar wblk = function wblk(dat, out, _final2, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, _final2);\n ++lf[256];\n\n var _a = hTree(lf, 15),\n dlt = _a[0],\n mlb = _a[1];\n\n var _b = hTree(df, 15),\n ddt = _b[0],\n mdb = _b[1];\n\n var _c = lc(dlt),\n lclt = _c[0],\n nlc = _c[1];\n\n var _d = lc(ddt),\n lcdt = _d[0],\n ndc = _d[1];\n\n var lcfreq = new u16(19);\n\n for (var i = 0; i < lclt.length; ++i) {\n lcfreq[lclt[i] & 31]++;\n }\n\n for (var i = 0; i < lcdt.length; ++i) {\n lcfreq[lcdt[i] & 31]++;\n }\n\n var _e = hTree(lcfreq, 7),\n lct = _e[0],\n mlcb = _e[1];\n\n var nlcc = 19;\n\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc) {\n }\n\n var flen = bl + 5 << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + (2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18]);\n if (flen <= ftlen && flen <= dtlen) return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n\n for (var i = 0; i < nlcc; ++i) {\n wbits(out, p + 3 * i, lct[clim[i]]);\n }\n\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15) wbits(out, p, clct[i] >>> 5 & 127), p += clct[i] >>> 12;\n }\n }\n } else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n\n for (var i = 0; i < li; ++i) {\n if (syms[i] > 255) {\n var len = syms[i] >>> 18 & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7) wbits(out, p, syms[i] >>> 23 & 31), p += fleb[len];\n var dst = syms[i] & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3) wbits16(out, p, syms[i] >>> 5 & 8191), p += fdeb[dst];\n } else {\n wbits16(out, p, lm[syms[i]]), p += ll[syms[i]];\n }\n }\n\n wbits16(out, p, lm[256]);\n return p + ll[256];\n}; // deflate options (nice << 13) | chain\n\n\nvar deo = /*#__PURE__*/new u32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]); // empty\n\nvar et = /*#__PURE__*/new u8(0); // compresses data into a raw DEFLATE buffer\n\nvar dflt = function dflt(dat, lvl, plvl, pre, post, lst) {\n var s = dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.floor(s / 7000)) + post); // writing to this writes to the output buffer\n\n var w = o.subarray(pre, o.length - post);\n var pos = 0;\n\n if (!lvl || s < 8) {\n for (var i = 0; i <= s; i += 65535) {\n // end\n var e = i + 65535;\n\n if (e < s) {\n // write full block\n pos = wfblk(w, pos, dat.subarray(i, e));\n } else {\n // write final block\n w[i] = lst;\n pos = wfblk(w, pos, dat.subarray(i, s));\n }\n }\n } else {\n var opt = deo[lvl - 1];\n var n = opt >>> 13,\n c = opt & 8191;\n var msk_1 = (1 << plvl) - 1; // prev 2-byte val map curr 2-byte val map\n\n var prev = new u16(32768),\n head = new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3),\n bs2_1 = 2 * bs1_1;\n\n var hsh = function hsh(i) {\n return (dat[i] ^ dat[i + 1] << bs1_1 ^ dat[i + 2] << bs2_1) & msk_1;\n }; // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n\n\n var syms = new u32(25000); // length/literal freq distance freq\n\n var lf = new u16(288),\n df = new u16(32); // l/lcnt exbits index l/lind waitdx bitpos\n\n var lc_1 = 0,\n eb = 0,\n i = 0,\n li = 0,\n wi = 0,\n bs = 0;\n\n for (; i < s; ++i) {\n // hash value\n var hv = hsh(i); // index mod 32768\n\n var imod = i & 32767; // previous index with this value\n\n var pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod; // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n\n if ((lc_1 > 7000 || li > 24576) && rem > 423) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n\n for (var j = 0; j < 286; ++j) {\n lf[j] = 0;\n }\n\n for (var j = 0; j < 30; ++j) {\n df[j] = 0;\n }\n } // len dist chain\n\n\n var l = 2,\n d = 0,\n ch_1 = c,\n dif = imod - pimod & 32767;\n\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i); // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n\n var ml = Math.min(258, rem);\n\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl) {\n }\n\n if (nl > l) {\n l = nl, d = dif; // break out early when we reach \"nice\" (we are satisfied enough)\n\n if (nl > maxn) break; // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n\n for (var j = 0; j < mmd; ++j) {\n var ti = i - dif + j + 32768 & 32767;\n var pti = prev[ti];\n var cd = ti - pti + 32768 & 32767;\n if (cd > md) md = cd, pimod = ti;\n }\n }\n } // check the previous match\n\n\n imod = pimod, pimod = prev[imod];\n dif += imod - pimod + 32768 & 32767;\n }\n } // d will be nonzero only when a match was found\n\n\n if (d) {\n // store both dist and len data in one Uint32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | revfl[l] << 18 | revfd[d];\n var lin = revfl[l] & 31,\n din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n } else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos); // this is the easiest way to avoid needing to maintain state\n\n if (!lst) pos = wfblk(w, pos, et);\n }\n\n return slc(o, 0, pre + shft(pos) + post);\n}; // CRC32 table\n\n\nvar crct = /*#__PURE__*/function () {\n var t = new u32(256);\n\n for (var i = 0; i < 256; ++i) {\n var c = i,\n k = 9;\n\n while (--k) {\n c = (c & 1 && 0xEDB88320) ^ c >>> 1;\n }\n\n t[i] = c;\n }\n\n return t;\n}(); // CRC32\n\n\nvar crc = function crc() {\n var c = 0xFFFFFFFF;\n return {\n p: function p(d) {\n // closures have awful performance\n var cr = c;\n\n for (var i = 0; i < d.length; ++i) {\n cr = crct[cr & 255 ^ d[i]] ^ cr >>> 8;\n }\n\n c = cr;\n },\n d: function d() {\n return c ^ 0xFFFFFFFF;\n }\n };\n}; // Alder32\n\nvar dopt = function dopt(dat, opt, pre, post, st) {\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 12 + opt.mem, pre, post, !st);\n}; // Walmart object spread\n\n\nvar wbytes = function wbytes(d, b, v) {\n for (; v; ++b) {\n d[b] = v, v >>>= 8;\n }\n}; // gzip header\n\n\nvar gzh = function gzh(c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n\n if (o.mtime != 0) wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n\n if (fn) {\n c[3] = 8;\n\n for (var i = 0; i <= fn.length; ++i) {\n c[i + 10] = fn.charCodeAt(i);\n }\n }\n}; // gzip footer: -8 to -4 = CRC, -4 to -0 is length\n\n\nvar gzhl = function gzhl(o) {\n return 10 + (o.filename && o.filename.length + 1 || 0);\n}; // zlib header\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\n\nfunction gzipSync(data, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n var c = crc(),\n l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8),\n s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\n\n\nfunction strToU8(str, latin1) {\n var l = str.length;\n if (!latin1 && typeof TextEncoder != 'undefined') return new TextEncoder().encode(str);\n var ar = new u8(str.length + (str.length >>> 1));\n var ai = 0;\n\n var w = function w(v) {\n ar[ai++] = v;\n };\n\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + (l - i << 1));\n n.set(ar);\n ar = n;\n }\n\n var c = str.charCodeAt(i);\n if (c < 128 || latin1) w(c);else if (c < 2048) w(192 | c >>> 6), w(128 | c & 63);else if (c > 55295 && c < 57344) c = 65536 + (c & 1023 << 10) | str.charCodeAt(++i) & 1023, w(240 | c >>> 18), w(128 | c >>> 12 & 63), w(128 | c >>> 6 & 63), w(128 | c & 63);else w(224 | c >>> 12), w(128 | c >>> 6 & 63), w(128 | c & 63);\n }\n\n return slc(ar, 0, ai);\n}\n\nvar Compression;\n\n(function (Compression) {\n Compression[\"GZipJS\"] = \"gzip-js\";\n Compression[\"LZ64\"] = \"lz64\";\n Compression[\"Base64\"] = \"base64\";\n})(Compression || (Compression = {}));\n\nfunction decideCompression(compressionSupport) {\n if (compressionSupport[Compression.GZipJS]) {\n return Compression.GZipJS;\n } else if (compressionSupport[Compression.LZ64]) {\n return Compression.LZ64;\n } else {\n return Compression.Base64;\n }\n}\nfunction compressData(compression, jsonData, options) {\n if (compression === Compression.LZ64) {\n return [{\n data: LZString.compressToBase64(jsonData),\n compression: Compression.LZ64\n }, options];\n } else if (compression === Compression.GZipJS) {\n // :TRICKY: This returns an UInt8Array. We don't encode this to a string - returning a blob will do this for us.\n return [gzipSync(strToU8(jsonData), {\n mtime: 0\n }), _objectSpread2(_objectSpread2({}, options), {}, {\n blob: true,\n urlQueryArgs: {\n compression: Compression.GZipJS\n }\n })];\n } else {\n return [{\n data: _base64Encode(jsonData)\n }, options];\n }\n}\n\nvar addParamsToURL = function addParamsToURL(url, urlQueryArgs, parameterOptions) {\n var args = urlQueryArgs || {};\n args['ip'] = parameterOptions['ip'] ? 1 : 0;\n args['_'] = new Date().getTime().toString();\n args['ver'] = Config.LIB_VERSION;\n var halves = url.split('?');\n\n if (halves.length > 1) {\n var params = halves[1].split('&');\n\n var _iterator = _createForOfIteratorHelper(params),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var p = _step.value;\n var key = p.split('=')[0];\n\n if (args[key]) {\n delete args[key];\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n\n var argSeparator = url.indexOf('?') > -1 ? '&' : '?';\n return url + argSeparator + _HTTPBuildQuery(args);\n};\nvar encodePostData = function encodePostData(data, options) {\n if (options.blob && data.buffer) {\n return new Blob([data.buffer], {\n type: 'text/plain'\n });\n }\n\n if (options.sendBeacon || options.blob) {\n var body = encodePostData(data, {\n method: 'POST'\n });\n return new Blob([body], {\n type: 'application/x-www-form-urlencoded'\n });\n }\n\n if (options.method !== 'POST') {\n return null;\n }\n\n var body_data;\n\n var isUint8Array = function isUint8Array(d) {\n return Object.prototype.toString.call(d) === '[object Uint8Array]';\n };\n\n if (Array.isArray(data) || isUint8Array(data)) {\n // TODO: eh? passing an Array here?\n body_data = 'data=' + encodeURIComponent(data);\n } else {\n body_data = 'data=' + encodeURIComponent(data.data);\n }\n\n if ('compression' in data && data.compression) {\n body_data += '&compression=' + data.compression;\n }\n\n return body_data;\n};\nvar xhr = function xhr(_ref) {\n var url = _ref.url,\n data = _ref.data,\n headers = _ref.headers,\n options = _ref.options,\n captureMetrics = _ref.captureMetrics,\n callback = _ref.callback,\n retriesPerformedSoFar = _ref.retriesPerformedSoFar,\n retryQueue = _ref.retryQueue,\n onXHRError = _ref.onXHRError;\n var req = new XMLHttpRequest();\n req.open(options.method || 'GET', url, true);\n var body = encodePostData(data, options);\n captureMetrics.incr('_send_request');\n captureMetrics.incr('_send_request_inflight');\n\n _each(headers, function (headerValue, headerName) {\n req.setRequestHeader(headerName, headerValue);\n });\n\n if (options.method === 'POST' && !options.blob) {\n req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n } // send the ph_optout cookie\n // withCredentials cannot be modified until after calling .open on Android and Mobile Safari\n\n\n req.withCredentials = true;\n\n req.onreadystatechange = function () {\n if (req.readyState === 4) {\n captureMetrics.incr(\"xhr-response\");\n captureMetrics.incr(\"xhr-response-\".concat(req.status));\n captureMetrics.decr('_send_request_inflight'); // XMLHttpRequest.DONE == 4, except in safari 4\n\n if (req.status === 200) {\n if (callback) {\n var response;\n\n try {\n response = JSON.parse(req.responseText);\n } catch (e) {\n logger.error(e);\n return;\n }\n\n callback(response);\n }\n } else {\n if (typeof onXHRError === 'function') {\n onXHRError(req);\n } // don't retry certain errors\n\n\n if ([401, 403, 404, 500].indexOf(req.status) < 0) {\n retryQueue.enqueue({\n url: url,\n data: data,\n options: options,\n headers: headers,\n retriesPerformedSoFar: (retriesPerformedSoFar || 0) + 1,\n callback: callback\n });\n }\n\n if (callback) {\n callback({\n status: 0\n });\n }\n }\n }\n };\n\n req.send(body);\n};\n\nvar RetryQueue = /*#__PURE__*/function (_RequestQueueScaffold) {\n _inherits(RetryQueue, _RequestQueueScaffold);\n\n var _super = _createSuper(RetryQueue);\n\n function RetryQueue(captureMetrics, onXHRError) {\n var _this;\n\n _classCallCheck(this, RetryQueue);\n\n _this = _super.call(this);\n _this.captureMetrics = captureMetrics;\n _this.isPolling = false;\n _this.queue = [];\n _this.areWeOnline = true;\n _this.onXHRError = onXHRError;\n\n if ('onLine' in window.navigator) {\n _this.areWeOnline = window.navigator.onLine;\n window.addEventListener('online', function () {\n _this._handleWeAreNowOnline();\n });\n window.addEventListener('offline', function () {\n _this.areWeOnline = false;\n });\n }\n\n return _this;\n }\n\n _createClass(RetryQueue, [{\n key: \"enqueue\",\n value: function enqueue(requestData) {\n var retriesPerformedSoFar = requestData.retriesPerformedSoFar || 0;\n\n if (retriesPerformedSoFar >= 10) {\n return;\n }\n\n var msToNextRetry = 3000 * Math.pow(2, retriesPerformedSoFar);\n var retryAt = new Date(Date.now() + msToNextRetry);\n console.warn(\"Enqueued failed request for retry in \".concat(msToNextRetry));\n this.queue.push({\n retryAt: retryAt,\n requestData: requestData\n });\n\n if (!this.isPolling) {\n this.isPolling = true;\n this.poll();\n }\n }\n }, {\n key: \"poll\",\n value: function poll() {\n var _this2 = this;\n\n this._poller && clearTimeout(this._poller);\n this._poller = setTimeout(function () {\n if (_this2.areWeOnline && _this2.queue.length > 0) {\n _this2.flush();\n }\n\n _this2.poll();\n }, this._pollInterval);\n }\n }, {\n key: \"flush\",\n value: function flush() {\n // using Date.now to make tests easier as recommended here https://codewithhugo.com/mocking-the-current-date-in-jest-tests/\n var now = new Date(Date.now());\n var toFlush = this.queue.filter(function (_ref) {\n var retryAt = _ref.retryAt;\n return retryAt < now;\n });\n\n if (toFlush.length > 0) {\n this.queue = this.queue.filter(function (_ref2) {\n var retryAt = _ref2.retryAt;\n return retryAt >= now;\n });\n\n var _iterator = _createForOfIteratorHelper(toFlush),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var requestData = _step.value.requestData;\n\n this._executeXhrRequest(requestData);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }\n }, {\n key: \"unload\",\n value: function unload() {\n if (this._poller) {\n clearTimeout(this._poller);\n this._poller = undefined;\n }\n\n var _iterator2 = _createForOfIteratorHelper(this.queue),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var requestData = _step2.value.requestData;\n var url = requestData.url,\n data = requestData.data,\n options = requestData.options;\n\n try {\n window.navigator.sendBeacon(url, encodePostData(data, _objectSpread2(_objectSpread2({}, options), {}, {\n sendBeacon: true\n })));\n } catch (e) {\n // Note sendBeacon automatically retries, and after the first retry it will loose reference to contextual `this`.\n // This means in some cases `this.getConfig` will be undefined.\n if (Config.DEBUG) {\n console.error(e);\n }\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n this.queue = [];\n }\n }, {\n key: \"_executeXhrRequest\",\n value: function _executeXhrRequest(_ref3) {\n var url = _ref3.url,\n data = _ref3.data,\n options = _ref3.options,\n headers = _ref3.headers,\n callback = _ref3.callback,\n retriesPerformedSoFar = _ref3.retriesPerformedSoFar;\n xhr({\n url: url,\n data: data || {},\n options: options || {},\n headers: headers || {},\n retriesPerformedSoFar: retriesPerformedSoFar || 0,\n callback: callback,\n captureMetrics: this.captureMetrics,\n retryQueue: this,\n onXHRError: this.onXHRError\n });\n }\n }, {\n key: \"_handleWeAreNowOnline\",\n value: function _handleWeAreNowOnline() {\n this.areWeOnline = true;\n this.flush();\n }\n }]);\n\n return RetryQueue;\n}(RequestQueueScaffold);\n\nvar SESSION_CHANGE_THRESHOLD = 30 * 60 * 1000; // 30 mins\n\nvar SESSION_LENGTH_LIMIT = 24 * 3600 * 1000; // 24 hours\n\nvar SessionIdManager = /*#__PURE__*/function () {\n function SessionIdManager(config, persistence) {\n _classCallCheck(this, SessionIdManager);\n\n this.persistence = persistence;\n this._windowId = undefined;\n this._sessionId = undefined;\n this._sessionStartTimestamp = null;\n this._sessionActivityTimestamp = null;\n var persistenceName = config['persistence_name'] || config['token'];\n this.window_id_storage_key = 'ph_' + persistenceName + '_window_id';\n this.primary_window_exists_storage_key = 'ph_' + persistenceName + '_primary_window_exists'; // primary_window_exists is set when the DOM has been loaded and is cleared on unload\n // if it exists here it means there was no unload which suggests this window is opened as a tab duplication, window.open, etc.\n\n if (!this.persistence.disabled && sessionStore.is_supported()) {\n var lastWindowId = sessionStore.parse(this.window_id_storage_key);\n var primaryWindowExists = sessionStore.parse(this.primary_window_exists_storage_key);\n\n if (lastWindowId && !primaryWindowExists) {\n // Persist window from previous storage state\n this._windowId = lastWindowId;\n } else {\n // Wipe any reference to previous window id\n sessionStore.remove(this.window_id_storage_key);\n } // Flag this session as having a primary window\n\n\n sessionStore.set(this.primary_window_exists_storage_key, true);\n }\n\n this._listenToReloadWindow();\n } // Note: this tries to store the windowId in sessionStorage. SessionStorage is unique to the current window/tab,\n // and persists page loads/reloads. So it's uniquely suited for storing the windowId. This function also respects\n // when persistence is disabled (by user config) and when sessionStorage is not supported (it *should* be supported on all browsers),\n // and in that case, it falls back to memory (which sadly, won't persist page loads)\n\n\n _createClass(SessionIdManager, [{\n key: \"_setWindowId\",\n value: function _setWindowId(windowId) {\n if (windowId !== this._windowId) {\n this._windowId = windowId;\n\n if (!this.persistence.disabled && sessionStore.is_supported()) {\n sessionStore.set(this.window_id_storage_key, windowId);\n }\n }\n }\n }, {\n key: \"_getWindowId\",\n value: function _getWindowId() {\n if (this._windowId) {\n return this._windowId;\n }\n\n if (!this.persistence.disabled && sessionStore.is_supported()) {\n return sessionStore.parse(this.window_id_storage_key);\n } // New window id will be generated\n\n\n return null;\n } // Note: 'this.persistence.register' can be disabled in the config.\n // In that case, this works by storing sessionId and the timestamp in memory.\n\n }, {\n key: \"_setSessionId\",\n value: function _setSessionId(sessionId, sessionActivityTimestamp, sessionStartTimestamp) {\n if (sessionId !== this._sessionId || sessionActivityTimestamp !== this._sessionActivityTimestamp || sessionStartTimestamp !== this._sessionStartTimestamp) {\n this._sessionStartTimestamp = sessionStartTimestamp;\n this._sessionActivityTimestamp = sessionActivityTimestamp;\n this._sessionId = sessionId;\n this.persistence.register(_defineProperty({}, SESSION_ID, [sessionActivityTimestamp, sessionId, sessionStartTimestamp]));\n }\n }\n }, {\n key: \"_getSessionId\",\n value: function _getSessionId() {\n if (this._sessionId && this._sessionActivityTimestamp && this._sessionStartTimestamp) {\n return [this._sessionActivityTimestamp, this._sessionId, this._sessionStartTimestamp];\n }\n\n var sessionId = this.persistence.props[SESSION_ID];\n\n if (Array.isArray(sessionId) && sessionId.length === 2) {\n // Storage does not yet have a session start time. Add the last activity timestamp as the start time\n sessionId.push(sessionId[0]);\n }\n\n return sessionId || [0, null, 0];\n } // Resets the session id by setting it to null. On the subsequent call to checkAndGetSessionAndWindowId,\n // new ids will be generated.\n\n }, {\n key: \"resetSessionId\",\n value: function resetSessionId() {\n this._setSessionId(null, null, null);\n }\n /*\n * Listens to window unloads and removes the primaryWindowExists key from sessionStorage.\n * Reloaded or fresh tabs created after a DOM unloads (reloading the same tab) WILL NOT have this primaryWindowExists flag in session storage.\n * Cloned sessions (new tab, tab duplication, window.open(), ...) WILL have this primaryWindowExists flag in their copied session storage.\n * We conditionally check the primaryWindowExists value in the constructor to decide if the window id in the last session storage should be carried over.\n */\n\n }, {\n key: \"_listenToReloadWindow\",\n value: function _listenToReloadWindow() {\n var _this = this;\n\n window.addEventListener('beforeunload', function () {\n if (!_this.persistence.disabled && sessionStore.is_supported()) {\n sessionStore.remove(_this.primary_window_exists_storage_key);\n }\n });\n }\n /*\n * This function returns the current sessionId and windowId. It should be used to\n * access these values over directly calling `._sessionId` or `._windowId`. In addition\n * to returning the sessionId and windowId, this function also manages cycling the\n * sessionId and windowId when appropriate by doing the following:\n *\n * 1. If the sessionId or windowId is not set, it will generate a new one and store it.\n * 2. If the readOnly param is set to false, it will:\n * a. Check if it has been > SESSION_CHANGE_THRESHOLD since the last call with this flag set.\n * If so, it will generate a new sessionId and store it.\n * b. Update the timestamp stored with the sessionId to ensure the current session is extended\n * for the appropriate amount of time.\n *\n * @param {boolean} readOnly (optional) Defaults to False. Should be set to True when the call to the function should not extend or cycle the session (e.g. being called for non-user generated events)\n * @param {Number} timestamp (optional) Defaults to the current time. The timestamp to be stored with the sessionId (used when determining if a new sessionId should be generated)\n */\n\n }, {\n key: \"checkAndGetSessionAndWindowId\",\n value: function checkAndGetSessionAndWindowId() {\n var readOnly = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var _timestamp = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n var timestamp = _timestamp || new Date().getTime(); // eslint-disable-next-line prefer-const\n\n\n var _this$_getSessionId = this._getSessionId(),\n _this$_getSessionId2 = _slicedToArray(_this$_getSessionId, 3),\n lastTimestamp = _this$_getSessionId2[0],\n sessionId = _this$_getSessionId2[1],\n startTimestamp = _this$_getSessionId2[2];\n\n var windowId = this._getWindowId();\n\n var sessionPastMaximumLength = startTimestamp && startTimestamp > 0 && Math.abs(timestamp - startTimestamp) > SESSION_LENGTH_LIMIT;\n\n if (!sessionId || !readOnly && Math.abs(timestamp - lastTimestamp) > SESSION_CHANGE_THRESHOLD || sessionPastMaximumLength) {\n sessionId = _UUID();\n windowId = _UUID();\n startTimestamp = timestamp;\n } else if (!windowId) {\n windowId = _UUID();\n }\n\n var newTimestamp = lastTimestamp === 0 || !readOnly || sessionPastMaximumLength ? timestamp : lastTimestamp;\n var sessionStartTimestamp = startTimestamp === 0 ? new Date().getTime() : startTimestamp;\n\n this._setWindowId(windowId);\n\n this._setSessionId(sessionId, newTimestamp, sessionStartTimestamp);\n\n return {\n sessionId: sessionId,\n windowId: windowId\n };\n }\n }]);\n\n return SessionIdManager;\n}();\n\nfunction isFloat(n) {\n return Number(n) === n && n % 1 !== 0;\n}\n\nfunction optimisePerformanceData(performanceEntries) {\n performanceEntries.forEach(function (performanceEntry, index) {\n for (var performanceEntryItemKey_ in performanceEntry) {\n var performanceEntryItemKey = performanceEntryItemKey_;\n\n if (isFloat(performanceEntry[performanceEntryItemKey]) && performanceEntry[performanceEntryItemKey].toString().match(/^\\d+\\.\\d{4,}$/)) {\n performanceEntries[index][performanceEntryItemKey] = Number(performanceEntry[performanceEntryItemKey].toFixed(3));\n }\n\n if (performanceEntryItemKey === 'serverTiming' && performanceEntry[performanceEntryItemKey].length === 0) {\n delete performanceEntries[index][performanceEntryItemKey];\n }\n\n if (performanceEntryItemKey === 'entryType' && performanceEntry[performanceEntryItemKey] === 'resource') {\n // Writeable<> doesn't support inherited attributes from PerformanceEntry on PerformanceResourceTiming\n delete performanceEntries[index][performanceEntryItemKey];\n }\n\n if (performanceEntryItemKey === 'nextHopProtocol') {\n // Writeable<> doesn't support inherited attributes from PerformanceEntry on PerformanceResourceTiming\n delete performanceEntries[index][performanceEntryItemKey];\n }\n\n if (performanceEntry[performanceEntryItemKey] === 0) {\n delete performanceEntries[index][performanceEntryItemKey];\n }\n }\n });\n return deduplicateKeys(performanceEntries);\n}\nfunction getPerformanceEntriesByType(type) {\n // wide support but not available pre IE 10\n try {\n // stringifying and then parsing made data collection more reliable\n var entriesOfType = JSON.parse(JSON.stringify(win.performance.getEntriesByType(type)));\n return optimisePerformanceData(entriesOfType);\n } catch (ex) {\n if (Config.DEBUG) {\n console.warn('not able to capture performance data (' + type + ') - ' + ex);\n }\n\n return [];\n }\n}\n/**\n * https://developer.mozilla.org/en-US/docs/Web/API/Performance/getEntriesByType\n *\n * The arrays in the prformance data are populated by getEntriesByType\n * They contain PerformanceEntry objects for the given performance type.\n * This means each object in the array shares a set of keys\n *\n * @param performanceEntries\n * @returns {(string[]|*)[]}\n */\n\nfunction deduplicateKeys(performanceEntries) {\n if (performanceEntries.length === 0) {\n return [];\n }\n\n var keys = Object.keys(performanceEntries[0]);\n return [keys, performanceEntries.map(function (obj) {\n return keys.map(function (key) {\n return obj[key];\n });\n })];\n}\n/*\nThe duration property is on the PerformanceNavigationTiming object.\n\nIt is a timestamp that is the difference between the PerformanceNavigationTiming.loadEventEnd\nand PerformanceEntry.startTime properties.\nhttps://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming\n\nEven in browsers that implement it, it is not always available to us\n */\n\nfunction pageLoadFrom(performanceData) {\n var keys = performanceData.navigation && performanceData.navigation[0];\n var values = performanceData.navigation && performanceData.navigation[1] && performanceData.navigation[1][0];\n var durationIndex = keys && keys.indexOf('duration');\n\n if (durationIndex > -1) {\n return values[durationIndex];\n } else {\n var endKeyIndex = keys && keys.indexOf('loadEventEnd');\n var startKeyIndex = keys && keys.indexOf('startTime'); // start key is not present if start is 0\n\n if (endKeyIndex > -1) {\n var end = values && values[endKeyIndex];\n var start = values && values[startKeyIndex] || 0;\n return end - start;\n }\n }\n}\nfunction getPerformanceData() {\n var performanceEntries = {\n navigation: getPerformanceEntriesByType('navigation'),\n paint: getPerformanceEntriesByType('paint'),\n resource: getPerformanceEntriesByType('resource')\n };\n\n if (_typeof(win) !== undefined && win.performance && win.performance.clearResourceTimings) {\n win.performance.clearResourceTimings();\n }\n\n var properties = {};\n var pageLoad = pageLoadFrom(performanceEntries);\n\n if (pageLoad) {\n properties['$performance_page_loaded'] = pageLoad;\n }\n\n properties['$performance_raw'] = JSON.stringify(performanceEntries);\n return properties;\n}\n\n/**\n * Integrate Sentry with PostHog. This will add a direct link to the person in Sentry, and an $exception event in PostHog\n *\n * ### Usage\n *\n * Sentry.init({\n * dsn: 'https://example',\n * integrations: [\n * new posthog.SentryIntegration(posthog)\n * ]\n * })\n *\n * @param {Object} [posthog] The posthog object\n * @param {string} [organization] Optional: The Sentry organization, used to send a direct link from PostHog to Sentry\n * @param {Number} [projectId] Optional: The Sentry project id, used to send a direct link from PostHog to Sentry\n * @param {string} [prefix] Optional: Url of a self-hosted sentry instance (default: https://sentry.io/organizations/)\n */\nvar SentryIntegration = /*#__PURE__*/_createClass(function SentryIntegration(_posthog, organization, projectId, prefix) {\n _classCallCheck(this, SentryIntegration);\n\n // setupOnce gets called by Sentry when it intializes the plugin\n // 'this' is not this: PostHogLib object, but the new class that's created.\n // TODO: refactor to a real class. The types\n this.name = 'posthog-js';\n\n this.setupOnce = function (addGlobalEventProcessor) {\n addGlobalEventProcessor(function (event) {\n var _event$exception, _exceptions$, _exceptions$2;\n\n if (event.level !== 'error' || !_posthog.__loaded) return event;\n if (!event.tags) event.tags = {};\n event.tags['PostHog Person URL'] = _posthog.config.api_host + '/person/' + _posthog.get_distinct_id();\n\n if (_posthog.sessionRecordingStarted()) {\n event.tags['PostHog Recording URL'] = _posthog.config.api_host + '/recordings/#sessionRecordingId=' + _posthog.sessionManager.checkAndGetSessionAndWindowId(true).sessionId;\n }\n\n var exceptions = ((_event$exception = event.exception) === null || _event$exception === void 0 ? void 0 : _event$exception.values) || [];\n var data = {\n $sentry_event_id: event.event_id,\n $sentry_exception: event.exception,\n $sentry_exception_message: (_exceptions$ = exceptions[0]) === null || _exceptions$ === void 0 ? void 0 : _exceptions$.value,\n $sentry_exception_type: (_exceptions$2 = exceptions[0]) === null || _exceptions$2 === void 0 ? void 0 : _exceptions$2.type,\n $sentry_tags: event.tags\n };\n if (organization && projectId) data['$sentry_url'] = (prefix || 'https://sentry.io/organizations/') + organization + '/issues/?project=' + projectId + '&query=' + event.event_id;\n\n _posthog.capture('$exception', data);\n\n return event;\n });\n };\n});\n\n/*\nSIMPLE STYLE GUIDE:\n\nthis.x === public function\nthis._x === internal - only use within this file\nthis.__x === private - only use within the class\n\nGlobals should be all caps\n*/\n\nvar InitType;\n\n(function (InitType) {\n InitType[InitType[\"INIT_MODULE\"] = 0] = \"INIT_MODULE\";\n InitType[InitType[\"INIT_SNIPPET\"] = 1] = \"INIT_SNIPPET\";\n})(InitType || (InitType = {}));\n\nvar init_type; // TODO: the type of this is very loose. Sometimes it's also PostHogLib itself\n\nvar posthog_master; // some globals for comparisons\n\nvar __NOOP = function __NOOP() {};\n\nvar __NOOPTIONS = {};\nvar PRIMARY_INSTANCE_NAME = 'posthog';\n/*\n * Dynamic... constants? Is that an oxymoron?\n */\n// http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/\n// https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#withCredentials\n\nvar USE_XHR = win.XMLHttpRequest && 'withCredentials' in new XMLHttpRequest(); // IE<10 does not support cross-origin XHR's but script tags\n// with defer won't block window.onload; ENQUEUE_REQUESTS\n// should only be true for Opera<12\n\nvar ENQUEUE_REQUESTS = !USE_XHR && userAgent.indexOf('MSIE') === -1 && userAgent.indexOf('Mozilla') === -1;\n\nvar defaultConfig = function defaultConfig() {\n var _document$location, _document$location$ho, _window$location;\n\n return {\n api_host: 'https://app.posthog.com',\n api_method: 'POST',\n api_transport: 'XHR',\n token: '',\n autocapture: true,\n rageclick: false,\n cross_subdomain_cookie: (document$1 === null || document$1 === void 0 ? void 0 : (_document$location = document$1.location) === null || _document$location === void 0 ? void 0 : (_document$location$ho = _document$location.hostname) === null || _document$location$ho === void 0 ? void 0 : _document$location$ho.indexOf('herokuapp.com')) === -1,\n persistence: 'cookie',\n persistence_name: '',\n cookie_name: '',\n loaded: __NOOP,\n store_google: true,\n save_referrer: true,\n test: false,\n verbose: false,\n img: false,\n capture_pageview: true,\n debug: false,\n cookie_expiration: 365,\n upgrade: false,\n disable_session_recording: false,\n disable_persistence: false,\n disable_cookie: false,\n enable_recording_console_log: false,\n secure_cookie: (win === null || win === void 0 ? void 0 : (_window$location = win.location) === null || _window$location === void 0 ? void 0 : _window$location.protocol) === 'https:',\n ip: true,\n opt_out_capturing_by_default: false,\n opt_out_persistence_by_default: false,\n opt_out_capturing_persistence_type: 'localStorage',\n opt_out_capturing_cookie_prefix: null,\n property_blacklist: [],\n respect_dnt: false,\n sanitize_properties: null,\n xhr_headers: {},\n // { header: value, header2: value }\n inapp_protocol: '//',\n inapp_link_new_window: false,\n request_batching: true,\n properties_string_max_length: 65535,\n session_recording: {\n // select set of rrweb config options we expose to our users\n // see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n blockClass: 'ph-no-capture',\n blockSelector: null,\n ignoreClass: 'ph-ignore-input',\n maskAllInputs: true,\n maskInputOptions: {},\n maskInputFn: null,\n slimDOMOptions: {},\n collectFonts: false,\n inlineStylesheet: true\n },\n mask_all_element_attributes: false,\n mask_all_text: false,\n advanced_disable_decide: false,\n advanced_disable_toolbar_metrics: false,\n on_xhr_error: function on_xhr_error(req) {\n var error = 'Bad HTTP status: ' + req.status + ' ' + req.statusText;\n console.error(error);\n },\n get_device_id: function get_device_id(uuid) {\n return uuid;\n },\n // Used for internal testing\n _onCapture: __NOOP,\n _capture_metrics: false,\n _capture_performance: false,\n name: 'posthog',\n callback_fn: 'posthog._jsc',\n bootstrap: {}\n };\n};\n/**\n * create_mplib(token:string, config:object, name:string)\n *\n * This function is used by the init method of PostHogLib objects\n * as well as the main initializer at the end of the JSLib (that\n * initializes document.posthog as well as any additional instances\n * declared before this file has loaded).\n */\n\n\nvar create_mplib = function create_mplib(token, config, name) {\n var instance;\n var target = name === PRIMARY_INSTANCE_NAME || !posthog_master ? posthog_master : name ? posthog_master[name] : undefined;\n\n if (target && init_type === InitType.INIT_MODULE) {\n instance = target;\n } else {\n if (target && !_isArray(target)) {\n console.error('You have already initialized ' + name); // TODO: throw something instead?\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n\n return;\n }\n\n instance = new PostHog();\n }\n\n instance._init(token, config, name);\n\n instance.toolbar.maybeLoadEditor();\n instance.sessionRecording = new SessionRecording(instance);\n instance.sessionRecording.startRecordingIfEnabled();\n instance.__autocapture_enabled = instance.get_config('autocapture');\n\n if (instance.get_config('autocapture')) {\n var num_buckets = 100;\n var num_enabled_buckets = 100;\n\n if (!autocapture.enabledForProject(instance.get_config('token'), num_buckets, num_enabled_buckets)) {\n instance.__autocapture_enabled = false;\n logger.log('Not in active bucket: disabling Automatic Event Collection.');\n } else if (!autocapture.isBrowserSupported()) {\n instance.__autocapture_enabled = false;\n logger.log('Disabling Automatic Event Collection because this browser is not supported');\n } else {\n autocapture.init(instance);\n }\n } // if any instance on the page has debug = true, we set the\n // global debug to be true\n\n\n Config.DEBUG = Config.DEBUG || instance.get_config('debug'); // if target is not defined, we called init after the lib already\n // loaded, so there won't be an array of things to execute\n\n if (typeof target !== 'undefined' && _isArray(target)) {\n // Crunch through the people queue first - we queue this data up &\n // flush on identify, so it's better to do all these operations first\n instance._execute_array.call(instance.people, target.people);\n\n instance._execute_array(target);\n }\n\n return instance;\n};\n/**\n * PostHog Library Object\n * @constructor\n */\n\n\nvar PostHog = /*#__PURE__*/function () {\n function PostHog() {\n _classCallCheck(this, PostHog);\n\n this.config = defaultConfig();\n this.compression = {};\n this.decideEndpointWasHit = false;\n this.SentryIntegration = SentryIntegration;\n this.__captureHooks = [];\n this.__request_queue = [];\n this.__loaded = false;\n this.__autocapture_enabled = undefined;\n\n this._jsc = function () {};\n\n this.people = new PostHogPeople(this);\n this.featureFlags = new PostHogFeatureFlags(this);\n this.feature_flags = this.featureFlags;\n this.toolbar = new Toolbar(this); // these are created in _init() after we have the config\n\n this._captureMetrics = undefined;\n this._requestQueue = undefined;\n this._retryQueue = undefined;\n this.persistence = undefined;\n this.sessionManager = undefined;\n } // Initialization methods\n\n /**\n * This function initializes a new instance of the PostHog capturing object.\n * All new instances are added to the main posthog object as sub properties (such as\n * posthog.library_name) and also returned by this function. To define a\n * second instance on the page, you would call:\n *\n * posthog.init('new token', { your: 'config' }, 'library_name');\n *\n * and use it like so:\n *\n * posthog.library_name.capture(...);\n *\n * @param {String} token Your PostHog API token\n * @param {Object} [config] A dictionary of config options to override. See a list of default config options.\n * @param {String} [name] The name for the new posthog instance that you want created\n */\n\n\n _createClass(PostHog, [{\n key: \"init\",\n value: function init(token, config, name) {\n if (_isUndefined(name)) {\n console.error('You must name your new library: init(token, config, name)');\n return;\n }\n\n if (name === PRIMARY_INSTANCE_NAME) {\n console.error('You must initialize the main posthog object right after you include the PostHog js snippet');\n return;\n }\n\n var instance = create_mplib(token, config, name);\n posthog_master[name] = instance;\n\n instance._loaded();\n\n return instance;\n } // posthog._init(token:string, config:object, name:string)\n //\n // This function sets up the current instance of the posthog\n // library. The difference between this method and the init(...)\n // method is this one initializes the actual instance, whereas the\n // init(...) method sets up a new library and calls _init on it.\n //\n\n }, {\n key: \"_init\",\n value: function _init(token) {\n var _config$bootstrap;\n\n var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var name = arguments.length > 2 ? arguments[2] : undefined;\n this.__loaded = true;\n this.config = {}; // will be set right below\n\n this._triggered_notifs = [];\n this.set_config(_extend({}, defaultConfig(), config, {\n name: name,\n token: token,\n callback_fn: (name === PRIMARY_INSTANCE_NAME ? name : PRIMARY_INSTANCE_NAME + '.' + name) + '._jsc'\n }));\n\n this._jsc = function () {};\n\n this._captureMetrics = new CaptureMetrics(this.get_config('_capture_metrics'));\n this._requestQueue = new RequestQueue(this._captureMetrics, this._handle_queued_event.bind(this));\n this._retryQueue = new RetryQueue(this._captureMetrics, this.get_config('on_xhr_error'));\n this.__captureHooks = [];\n this.__request_queue = [];\n this.persistence = new PostHogPersistence(this.config);\n this.sessionManager = new SessionIdManager(this.config, this.persistence);\n\n this._gdpr_init();\n\n if (((_config$bootstrap = config.bootstrap) === null || _config$bootstrap === void 0 ? void 0 : _config$bootstrap.distinctID) !== undefined) {\n var _config$bootstrap2;\n\n var uuid = this.get_config('get_device_id')(_UUID());\n var deviceID = (_config$bootstrap2 = config.bootstrap) !== null && _config$bootstrap2 !== void 0 && _config$bootstrap2.isIdentifiedID ? uuid : config.bootstrap.distinctID;\n this.register({\n distinct_id: config.bootstrap.distinctID,\n $device_id: deviceID\n });\n }\n\n if (this._hasBootstrappedFeatureFlags()) {\n var _config$bootstrap3;\n\n var activeFlags = Object.keys(((_config$bootstrap3 = config.bootstrap) === null || _config$bootstrap3 === void 0 ? void 0 : _config$bootstrap3.featureFlags) || {}).filter(function (flag) {\n var _config$bootstrap4, _config$bootstrap4$fe;\n\n return !!((_config$bootstrap4 = config.bootstrap) !== null && _config$bootstrap4 !== void 0 && (_config$bootstrap4$fe = _config$bootstrap4.featureFlags) !== null && _config$bootstrap4$fe !== void 0 && _config$bootstrap4$fe[flag]);\n }).reduce(function (res, key) {\n var _config$bootstrap5, _config$bootstrap5$fe;\n\n return res[key] = ((_config$bootstrap5 = config.bootstrap) === null || _config$bootstrap5 === void 0 ? void 0 : (_config$bootstrap5$fe = _config$bootstrap5.featureFlags) === null || _config$bootstrap5$fe === void 0 ? void 0 : _config$bootstrap5$fe[key]) || false, res;\n }, {});\n this.featureFlags.receivedFeatureFlags({\n featureFlags: activeFlags\n });\n }\n\n if (!this.get_distinct_id()) {\n // There is no need to set the distinct id\n // or the device id if something was already stored\n // in the persitence\n var _uuid = this.get_config('get_device_id')(_UUID());\n\n this.register_once({\n distinct_id: _uuid,\n $device_id: _uuid\n }, '');\n } // Set up event handler for pageleave\n // Use `onpagehide` if available, see https://calendar.perfplanet.com/2020/beaconing-in-practice/#beaconing-reliability-avoiding-abandons\n\n\n win.addEventListener && win.addEventListener('onpagehide' in self ? 'pagehide' : 'unload', this._handle_unload.bind(this));\n } // Private methods\n\n }, {\n key: \"_loaded\",\n value: function _loaded() {\n // Pause `reloadFeatureFlags` calls in config.loaded callback.\n // These feature flags are loaded in the decide call made right afterwards\n this.featureFlags.setReloadingPaused(true);\n\n try {\n this.get_config('loaded')(this);\n } catch (err) {\n console.error('`loaded` function failed', err);\n }\n\n this._start_queue_if_opted_in(); // this happens after so a user can call identify in\n // the loaded callback\n\n\n if (this.get_config('capture_pageview')) {\n this.capture('$pageview', {}, {\n send_instantly: true\n });\n } // Call decide to get what features are enabled and other settings.\n // As a reminder, if the /decide endpoint is disabled, feature flags, toolbar, session recording, autocapture,\n // and compression will not be available.\n\n\n if (!this.get_config('advanced_disable_decide')) {\n new Decide(this).call();\n }\n\n this.featureFlags.resetRequestQueue();\n this.featureFlags.setReloadingPaused(false);\n }\n }, {\n key: \"_start_queue_if_opted_in\",\n value: function _start_queue_if_opted_in() {\n if (!this.has_opted_out_capturing()) {\n if (this.get_config('request_batching')) {\n this._requestQueue.poll();\n }\n }\n }\n }, {\n key: \"_dom_loaded\",\n value: function _dom_loaded() {\n var _this = this;\n\n if (!this.has_opted_out_capturing()) {\n _eachArray(this.__request_queue, function (item) {\n _this._send_request.apply(_this, _toConsumableArray(item));\n });\n }\n\n this.__request_queue = [];\n\n this._start_queue_if_opted_in();\n }\n /**\n * _prepare_callback() should be called by callers of _send_request for use\n * as the callback argument.\n *\n * If there is no callback, this returns null.\n * If we are going to make XHR/XDR requests, this returns a function.\n * If we are going to use script tags, this returns a string to use as the\n * callback GET param.\n */\n // TODO: get rid of the \"| string\"\n\n }, {\n key: \"_prepare_callback\",\n value: function _prepare_callback(callback, data) {\n if (_isUndefined(callback)) {\n return null;\n }\n\n if (USE_XHR) {\n return function (response) {\n callback(response, data);\n };\n } else {\n // if the user gives us a callback, we store as a random\n // property on this instances jsc function and update our\n // callback string to reflect that.\n var jsc = this._jsc;\n var randomized_cb = '' + Math.floor(Math.random() * 100000000);\n var callback_string = this.get_config('callback_fn') + '[' + randomized_cb + ']';\n\n jsc[randomized_cb] = function (response) {\n delete jsc[randomized_cb];\n callback(response, data);\n };\n\n return callback_string;\n }\n }\n }, {\n key: \"_handle_unload\",\n value: function _handle_unload() {\n if (!this.get_config('request_batching')) {\n if (this.get_config('capture_pageview')) {\n this.capture('$pageleave', null, {\n transport: 'sendBeacon'\n });\n }\n\n return;\n }\n\n if (this.get_config('capture_pageview')) {\n this.capture('$pageleave');\n }\n\n if (this.get_config('_capture_metrics')) {\n this._requestQueue.updateUnloadMetrics();\n\n this.capture('$capture_metrics', this._captureMetrics.metrics);\n }\n\n this._requestQueue.unload();\n\n this._retryQueue.unload();\n }\n }, {\n key: \"_handle_queued_event\",\n value: function _handle_queued_event(url, data, options) {\n var jsonData = JSON.stringify(data);\n\n this.__compress_and_send_json_request(url, jsonData, options || __NOOPTIONS, __NOOP);\n }\n }, {\n key: \"__compress_and_send_json_request\",\n value: function __compress_and_send_json_request(url, jsonData, options, callback) {\n var _compressData = compressData(decideCompression(this.compression), jsonData, options),\n _compressData2 = _slicedToArray(_compressData, 2),\n data = _compressData2[0],\n _options = _compressData2[1];\n\n this._send_request(url, data, _options, callback);\n }\n }, {\n key: \"_send_request\",\n value: function _send_request(url, data, options, callback) {\n if (ENQUEUE_REQUESTS) {\n this.__request_queue.push([url, data, options, callback]);\n\n return;\n }\n\n var DEFAULT_OPTIONS = {\n method: this.get_config('api_method'),\n transport: this.get_config('api_transport'),\n verbose: this.get_config('verbose')\n };\n options = _extend(DEFAULT_OPTIONS, options || {});\n\n if (!USE_XHR) {\n options.method = 'GET';\n }\n\n var useSendBeacon = 'sendBeacon' in win.navigator && options.transport === 'sendBeacon';\n url = addParamsToURL(url, options.urlQueryArgs || {}, {\n ip: this.get_config('ip')\n });\n\n if (_isObject(data) && this.get_config('img')) {\n var img = document$1.createElement('img');\n img.src = url;\n document$1.body.appendChild(img);\n } else if (useSendBeacon) {\n // beacon documentation https://w3c.github.io/beacon/\n // beacons format the message and use the type property\n // also no need to try catch as sendBeacon does not report errors\n // and is defined as best effort attempt\n try {\n win.navigator.sendBeacon(url, encodePostData(data, _objectSpread2(_objectSpread2({}, options), {}, {\n sendBeacon: true\n })));\n } catch (e) {\n if (this.get_config('debug')) {\n console.error(e);\n }\n }\n } else if (USE_XHR) {\n try {\n xhr({\n url: url,\n data: data,\n headers: this.get_config('xhr_headers'),\n options: options,\n captureMetrics: this._captureMetrics,\n callback: callback,\n retriesPerformedSoFar: 0,\n retryQueue: this._retryQueue,\n onXHRError: this.get_config('on_xhr_error')\n });\n } catch (e) {\n console.error(e);\n }\n } else {\n var _s$parentNode;\n\n var script = document$1.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.defer = true;\n script.src = url;\n var s = document$1.getElementsByTagName('script')[0];\n (_s$parentNode = s.parentNode) === null || _s$parentNode === void 0 ? void 0 : _s$parentNode.insertBefore(script, s);\n }\n }\n /**\n * _execute_array() deals with processing any posthog function\n * calls that were called before the PostHog library were loaded\n * (and are thus stored in an array so they can be called later)\n *\n * Note: we fire off all the posthog function calls && user defined\n * functions BEFORE we fire off posthog capturing calls. This is so\n * identify/register/set_config calls can properly modify early\n * capturing calls.\n *\n * @param {Array} array\n */\n\n }, {\n key: \"_execute_array\",\n value: function _execute_array(array) {\n var _this2 = this;\n\n var fn_name;\n var alias_calls = [];\n var other_calls = [];\n var capturing_calls = [];\n\n _eachArray(array, function (item) {\n if (item) {\n fn_name = item[0];\n\n if (_isArray(fn_name)) {\n capturing_calls.push(item); // chained call e.g. posthog.get_group().set()\n } else if (typeof item === 'function') {\n item.call(_this2);\n } else if (_isArray(item) && fn_name === 'alias') {\n alias_calls.push(item);\n } else if (_isArray(item) && fn_name.indexOf('capture') !== -1 && typeof _this2[fn_name] === 'function') {\n capturing_calls.push(item);\n } else {\n other_calls.push(item);\n }\n }\n });\n\n var execute = function execute(calls, thisArg) {\n _eachArray(calls, function (item) {\n if (_isArray(item[0])) {\n // chained call\n var caller = thisArg;\n\n _each(item, function (call) {\n caller = caller[call[0]].apply(caller, call.slice(1));\n });\n } else {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this[item[0]].apply(this, item.slice(1));\n }\n }, thisArg);\n };\n\n execute(alias_calls, this);\n execute(other_calls, this);\n execute(capturing_calls, this);\n }\n }, {\n key: \"_hasBootstrappedFeatureFlags\",\n value: function _hasBootstrappedFeatureFlags() {\n var _this$config$bootstra, _this$config$bootstra2;\n\n return ((_this$config$bootstra = this.config.bootstrap) === null || _this$config$bootstra === void 0 ? void 0 : _this$config$bootstra.featureFlags) && Object.keys((_this$config$bootstra2 = this.config.bootstrap) === null || _this$config$bootstra2 === void 0 ? void 0 : _this$config$bootstra2.featureFlags).length > 0 || false;\n }\n /**\n * push() keeps the standard async-array-push\n * behavior around after the lib is loaded.\n * This is only useful for external integrations that\n * do not wish to rely on our convenience methods\n * (created in the snippet).\n *\n * ### Usage:\n * posthog.push(['register', { a: 'b' }]);\n *\n * @param {Array} item A [function_name, args...] array to be executed\n */\n\n }, {\n key: \"push\",\n value: function push(item) {\n this._execute_array([item]);\n }\n /**\n * Capture an event. This is the most important and\n * frequently used PostHog function.\n *\n * ### Usage:\n *\n * // capture an event named 'Registered'\n * posthog.capture('Registered', {'Gender': 'Male', 'Age': 21});\n *\n * // capture an event using navigator.sendBeacon\n * posthog.capture('Left page', {'duration_seconds': 35}, {transport: 'sendBeacon'});\n *\n * @param {String} event_name The name of the event. This can be anything the user does - 'Button Click', 'Sign Up', 'Item Purchased', etc.\n * @param {Object} [properties] A set of properties to include with the event you're sending. These describe the user who did the event or details about the event itself.\n * @param {Object} [options] Optional configuration for this capture request.\n * @param {String} [options.transport] Transport method for network request ('XHR' or 'sendBeacon').\n * @param {Date} [options.timestamp] Timestamp is a Date object. If not set, it'll automatically be set to the current time.\n */\n\n }, {\n key: \"capture\",\n value: function capture(event_name, properties) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : __NOOPTIONS;\n\n // While developing, a developer might purposefully _not_ call init(),\n // in this case, we would like capture to be a noop.\n if (!this.__loaded) {\n return;\n }\n\n if (userOptedOut(this, false)) {\n return;\n }\n\n this._captureMetrics.incr('capture');\n\n if (event_name === '$snapshot') {\n this._captureMetrics.incr('snapshot');\n }\n\n options = options || __NOOPTIONS;\n var transport = options['transport']; // external API, don't minify 'transport' prop\n\n if (transport) {\n options.transport = transport; // 'transport' prop name can be minified internally\n } // typing doesn't prevent interesting data\n\n\n if (_isUndefined(event_name) || typeof event_name !== 'string') {\n console.error('No event name provided to posthog.capture');\n return;\n }\n\n if (_isBlockedUA(userAgent)) {\n return;\n }\n\n var start_timestamp = this.persistence.remove_event_timer(event_name); // update persistence\n\n this.persistence.update_search_keyword(document$1.referrer);\n\n if (this.get_config('store_google')) {\n this.persistence.update_campaign_params();\n }\n\n if (this.get_config('save_referrer')) {\n this.persistence.update_referrer_info(document$1.referrer);\n }\n\n var data = {\n event: event_name,\n properties: this._calculate_event_properties(event_name, properties || {}, start_timestamp)\n };\n\n if (event_name === '$identify' && options.$set) {\n data['$set'] = options['$set'];\n }\n\n data = _copyAndTruncateStrings(data, options._noTruncate ? null : this.get_config('properties_string_max_length'));\n data.timestamp = options.timestamp || new Date();\n\n if (this.get_config('debug')) {\n logger.log('PostHog.js send', data);\n }\n\n var jsonData = JSON.stringify(data);\n var url = this.get_config('api_host') + (options.endpoint || '/e/');\n var has_unique_traits = options !== __NOOPTIONS;\n\n if (this.get_config('request_batching') && (!has_unique_traits || options._batchKey) && !options.send_instantly) {\n this._requestQueue.enqueue(url, data, options);\n } else {\n this.__compress_and_send_json_request(url, jsonData, options);\n }\n\n this._invokeCaptureHooks(event_name, data);\n\n return data;\n }\n }, {\n key: \"_addCaptureHook\",\n value: function _addCaptureHook(callback) {\n this.__captureHooks.push(callback);\n }\n }, {\n key: \"_invokeCaptureHooks\",\n value: function _invokeCaptureHooks(eventName, eventData) {\n this.config._onCapture(eventName, eventData);\n\n _each(this.__captureHooks, function (callback) {\n return callback(eventName);\n });\n }\n }, {\n key: \"_calculate_event_properties\",\n value: function _calculate_event_properties(event_name, event_properties, start_timestamp) {\n // set defaults\n var properties = _objectSpread2({}, event_properties);\n\n properties['token'] = this.get_config('token');\n\n if (event_name === '$snapshot') {\n var persistenceProps = this.persistence.properties();\n properties['distinct_id'] = persistenceProps.distinct_id;\n return properties;\n } // set $duration if time_event was previously called for this event\n\n\n if (typeof start_timestamp !== 'undefined') {\n var duration_in_ms = new Date().getTime() - start_timestamp;\n properties['$duration'] = parseFloat((duration_in_ms / 1000).toFixed(3));\n }\n\n if (this.sessionManager) {\n var _this$sessionManager$ = this.sessionManager.checkAndGetSessionAndWindowId(),\n sessionId = _this$sessionManager$.sessionId,\n windowId = _this$sessionManager$.windowId;\n\n properties['$session_id'] = sessionId;\n properties['$window_id'] = windowId;\n } // note: extend writes to the first object, so lets make sure we\n // don't write to the persistence properties object and info\n // properties object by passing in a new object\n // update properties with pageview info and super-properties\n\n\n properties = _extend({}, _info.properties(), this.persistence.properties(), properties);\n\n if (event_name === '$pageview' && this.get_config('_capture_performance')) {\n properties = _extend(properties, getPerformanceData());\n }\n\n var property_blacklist = this.get_config('property_blacklist');\n\n if (_isArray(property_blacklist)) {\n _each(property_blacklist, function (blacklisted_prop) {\n delete properties[blacklisted_prop];\n });\n } else {\n console.error('Invalid value for property_blacklist config: ' + property_blacklist);\n }\n\n var sanitize_properties = this.get_config('sanitize_properties');\n\n if (sanitize_properties) {\n properties = sanitize_properties(properties, event_name);\n }\n\n return properties;\n }\n /**\n * Register a set of super properties, which are included with all\n * events. This will overwrite previous super property values.\n *\n * ### Usage:\n *\n * // register 'Gender' as a super property\n * posthog.register({'Gender': 'Female'});\n *\n * // register several super properties when a user signs up\n * posthog.register({\n * 'Email': 'jdoe@example.com',\n * 'Account Type': 'Free'\n * });\n *\n * @param {Object} properties An associative array of properties to store about the user\n * @param {Number} [days] How many days since the user's last visit to store the super properties\n */\n\n }, {\n key: \"register\",\n value: function register(properties, days) {\n this.persistence.register(properties, days);\n }\n /**\n * Register a set of super properties only once. This will not\n * overwrite previous super property values, unlike register().\n *\n * ### Usage:\n *\n * // register a super property for the first time only\n * posthog.register_once({\n * 'First Login Date': new Date().toISOString()\n * });\n *\n * ### Notes:\n *\n * If default_value is specified, current super properties\n * with that value will be overwritten.\n *\n * @param {Object} properties An associative array of properties to store about the user\n * @param {*} [default_value] Value to override if already set in super properties (ex: 'False') Default: 'None'\n * @param {Number} [days] How many days since the users last visit to store the super properties\n */\n\n }, {\n key: \"register_once\",\n value: function register_once(properties, default_value, days) {\n this.persistence.register_once(properties, default_value, days);\n }\n /**\n * Delete a super property stored with the current user.\n *\n * @param {String} property The name of the super property to remove\n */\n\n }, {\n key: \"unregister\",\n value: function unregister(property) {\n this.persistence.unregister(property);\n }\n }, {\n key: \"_register_single\",\n value: function _register_single(prop, value) {\n this.register(_defineProperty({}, prop, value));\n }\n /*\n * Get feature flag value for user (supports multivariate flags).\n *\n * ### Usage:\n *\n * if(posthog.getFeatureFlag('beta-feature') === 'some-value') { // do something }\n *\n * @param {Object|String} prop Key of the feature flag.\n * @param {Object|String} options (optional) If {send_event: false}, we won't send an $feature_flag_call event to PostHog.\n */\n\n }, {\n key: \"getFeatureFlag\",\n value: function getFeatureFlag(key, options) {\n return this.featureFlags.getFeatureFlag(key, options);\n }\n /*\n * See if feature flag is enabled for user.\n *\n * ### Usage:\n *\n * if(posthog.isFeatureEnabled('beta-feature')) { // do something }\n *\n * @param {Object|String} prop Key of the feature flag.\n * @param {Object|String} options (optional) If {send_event: false}, we won't send an $feature_flag_call event to PostHog.\n */\n\n }, {\n key: \"isFeatureEnabled\",\n value: function isFeatureEnabled(key, options) {\n return this.featureFlags.isFeatureEnabled(key, options);\n }\n }, {\n key: \"reloadFeatureFlags\",\n value: function reloadFeatureFlags() {\n this.featureFlags.reloadFeatureFlags();\n }\n /*\n * Register an event listener that runs when feature flags become available or when they change.\n * If there are flags, the listener is called immediately in addition to being called on future changes.\n *\n * ### Usage:\n *\n * posthog.onFeatureFlags(function(featureFlags) { // do something })\n *\n * @param {Function} [callback] The callback function will be called once the feature flags are ready or when they are updated.\n * It'll return a list of feature flags enabled for the user.\n */\n\n }, {\n key: \"onFeatureFlags\",\n value: function onFeatureFlags(callback) {\n return this.featureFlags.onFeatureFlags(callback);\n }\n /**\n * Identify a user with a unique ID instead of a PostHog\n * randomly generated distinct_id. If the method is never called,\n * then unique visitors will be identified by a UUID generated\n * the first time they visit the site.\n *\n * If user properties are passed, they are also sent to posthog.\n *\n * ### Usage:\n *\n * posthog.identify('[user unique id]')\n * posthog.identify('[user unique id]', { email: 'john@example.com' })\n * posthog.identify('[user unique id]', {}, { referral_code: '12345' })\n *\n * ### Notes:\n *\n * You can call this function to overwrite a previously set\n * unique ID for the current user. PostHog cannot translate\n * between IDs at this time, so when you change a user's ID\n * they will appear to be a new user.\n *\n * When used alone, posthog.identify will change the user's\n * distinct_id to the unique ID provided. When used in tandem\n * with posthog.alias, it will allow you to identify based on\n * unique ID and map that back to the original, anonymous\n * distinct_id given to the user upon her first arrival to your\n * site (thus connecting anonymous pre-signup activity to\n * post-signup activity). Though the two work together, do not\n * call identify() at the same time as alias(). Calling the two\n * at the same time can cause a race condition, so it is best\n * practice to call identify on the original, anonymous ID\n * right after you've aliased it.\n *\n * @param {String} [new_distinct_id] A string that uniquely identifies a user. If not provided, the distinct_id currently in the persistent store (cookie or localStorage) will be used.\n * @param {Object} [userPropertiesToSet] Optional: An associative array of properties to store about the user\n * @param {Object} [userPropertiesToSetOnce] Optional: An associative array of properties to store about the user. If property is previously set, this does not override that value.\n */\n\n }, {\n key: \"identify\",\n value: function identify(new_distinct_id, userPropertiesToSet, userPropertiesToSetOnce) {\n //if the new_distinct_id has not been set ignore the identify event\n if (!new_distinct_id) {\n console.error('Unique user id has not been set in posthog.identify');\n return;\n }\n\n this._captureMetrics.incr('identify');\n\n var previous_distinct_id = this.get_distinct_id();\n this.register({\n $user_id: new_distinct_id\n });\n\n if (!this.get_property('$device_id')) {\n // The persisted distinct id might not actually be a device id at all\n // it might be a distinct id of the user from before\n var device_id = previous_distinct_id;\n this.register_once({\n $had_persisted_distinct_id: true,\n $device_id: device_id\n }, '');\n } // identify only changes the distinct id if it doesn't match either the existing or the alias;\n // if it's new, blow away the alias as well.\n\n\n if (new_distinct_id !== previous_distinct_id && new_distinct_id !== this.get_property(ALIAS_ID_KEY)) {\n this.unregister(ALIAS_ID_KEY);\n this.register({\n distinct_id: new_distinct_id\n });\n } // send an $identify event any time the distinct_id is changing and the old ID is an anoymous ID\n // - logic on the server will determine whether or not to do anything with it.\n\n\n if (new_distinct_id !== previous_distinct_id && (!this.get_property('$device_id') || previous_distinct_id === this.get_property('$device_id'))) {\n this.capture('$identify', {\n distinct_id: new_distinct_id,\n $anon_distinct_id: previous_distinct_id\n }, {\n $set: userPropertiesToSet || {},\n $set_once: userPropertiesToSetOnce || {}\n }); // let the reload feature flag request know to send this previous distinct id\n // for flag consistency\n\n this.featureFlags.setAnonymousDistinctId(previous_distinct_id);\n } else {\n if (userPropertiesToSet) {\n this.people.set(userPropertiesToSet);\n }\n\n if (userPropertiesToSetOnce) {\n this.people.set_once(userPropertiesToSetOnce);\n }\n } // Reload active feature flags if the user identity changes.\n // Note we don't reload this on property changes as these get processed async\n\n\n if (new_distinct_id !== previous_distinct_id) {\n this.reloadFeatureFlags();\n }\n }\n /**\n * Alpha feature: don't use unless you know what you're doing!\n *\n * Sets group analytics information for subsequent events and reloads feature flags.\n *\n * @param {String} groupType Group type (example: 'organization')\n * @param {String} groupKey Group key (example: 'org::5')\n * @param {Object} groupPropertiesToSet Optional properties to set for group\n */\n\n }, {\n key: \"group\",\n value: function group(groupType, groupKey, groupPropertiesToSet) {\n if (!groupType || !groupKey) {\n console.error('posthog.group requires a group type and group key');\n return;\n }\n\n this._captureMetrics.incr('group');\n\n var existingGroups = this.getGroups();\n this.register({\n $groups: _objectSpread2(_objectSpread2({}, existingGroups), {}, _defineProperty({}, groupType, groupKey))\n });\n\n if (groupPropertiesToSet) {\n this.capture('$groupidentify', {\n $group_type: groupType,\n $group_key: groupKey,\n $group_set: groupPropertiesToSet\n });\n } // If groups change, reload feature flags.\n\n\n if (existingGroups[groupType] !== groupKey) {\n this.reloadFeatureFlags();\n }\n }\n /**\n * Clears super properties and generates a new random distinct_id for this instance.\n * Useful for clearing data when a user logs out.\n */\n\n }, {\n key: \"reset\",\n value: function reset(reset_device_id) {\n var device_id = this.get_property('$device_id');\n this.persistence.clear();\n this.sessionManager.resetSessionId();\n var uuid = this.get_config('get_device_id')(_UUID());\n this.register_once({\n distinct_id: uuid,\n $device_id: reset_device_id ? uuid : device_id\n }, '');\n }\n /**\n * Returns the current distinct id of the user. This is either the id automatically\n * generated by the library or the id that has been passed by a call to identify().\n *\n * ### Notes:\n *\n * get_distinct_id() can only be called after the PostHog library has finished loading.\n * init() has a loaded function available to handle this automatically. For example:\n *\n * // set distinct_id after the posthog library has loaded\n * posthog.init('YOUR PROJECT TOKEN', {\n * loaded: function(posthog) {\n * distinct_id = posthog.get_distinct_id();\n * }\n * });\n */\n\n }, {\n key: \"get_distinct_id\",\n value: function get_distinct_id() {\n return this.get_property('distinct_id');\n }\n }, {\n key: \"getGroups\",\n value: function getGroups() {\n return this.get_property('$groups') || {};\n }\n /**\n * Create an alias, which PostHog will use to link two distinct_ids going forward (not retroactively).\n * Multiple aliases can map to the same original ID, but not vice-versa. Aliases can also be chained - the\n * following is a valid scenario:\n *\n * posthog.alias('new_id', 'existing_id');\n * ...\n * posthog.alias('newer_id', 'new_id');\n *\n * If the original ID is not passed in, we will use the current distinct_id - probably the auto-generated GUID.\n *\n * ### Notes:\n *\n * The best practice is to call alias() when a unique ID is first created for a user\n * (e.g., when a user first registers for an account and provides an email address).\n * alias() should never be called more than once for a given user, except to\n * chain a newer ID to a previously new ID, as described above.\n *\n * @param {String} alias A unique identifier that you want to use for this user in the future.\n * @param {String} [original] The current identifier being used for this user.\n */\n\n }, {\n key: \"alias\",\n value: function alias(_alias, original) {\n // If the $people_distinct_id key exists in persistence, there has been a previous\n // posthog.people.identify() call made for this user. It is VERY BAD to make an alias with\n // this ID, as it will duplicate users.\n if (_alias === this.get_property(PEOPLE_DISTINCT_ID_KEY)) {\n logger.critical('Attempting to create alias for existing People user - aborting.');\n return -2;\n }\n\n if (_isUndefined(original)) {\n original = this.get_distinct_id();\n }\n\n if (_alias !== original) {\n this._register_single(ALIAS_ID_KEY, _alias);\n\n return this.capture('$create_alias', {\n alias: _alias,\n distinct_id: original\n });\n } else {\n console.error('alias matches current distinct_id - skipping api call.');\n this.identify(_alias);\n return -1;\n }\n }\n /**\n * Update the configuration of a posthog library instance.\n *\n * The default config is:\n *\n * {\n * // Posthog host\n * api_host: 'https://app.posthog.com',\n *\n * // HTTP method for capturing requests\n * api_method: 'POST'\n *\n * // Automatically capture clicks, form submissions and change events\n * autocapture: true\n *\n * // Capture rage clicks (beta) - useful for session recording\n * rageclick: false\n *\n * // transport for sending requests ('XHR' or 'sendBeacon')\n * // NB: sendBeacon should only be used for scenarios such as\n * // page unload where a \"best-effort\" attempt to send is\n * // acceptable; the sendBeacon API does not support callbacks\n * // or any way to know the result of the request. PostHog\n * // capturing via sendBeacon will not support any event-\n * // batching or retry mechanisms.\n * api_transport: 'XHR'\n *\n * // super properties cookie expiration (in days)\n * cookie_expiration: 365\n *\n * // super properties span subdomains\n * cross_subdomain_cookie: true\n *\n * // debug mode\n * debug: false\n *\n * // if this is true, the posthog cookie or localStorage entry\n * // will be deleted, and no user persistence will take place\n * disable_persistence: false\n *\n * // if this is true, PostHog will automatically determine\n * // City, Region and Country data using the IP address of\n * //the client\n * ip: true\n *\n * // opt users out of capturing by this PostHog instance by default\n * opt_out_capturing_by_default: false\n *\n * // opt users out of browser data storage by this PostHog instance by default\n * opt_out_persistence_by_default: false\n *\n * // persistence mechanism used by opt-in/opt-out methods - cookie\n * // or localStorage - falls back to cookie if localStorage is unavailable\n * opt_out_capturing_persistence_type: 'localStorage'\n *\n * // customize the name of cookie/localStorage set by opt-in/opt-out methods\n * opt_out_capturing_cookie_prefix: null\n *\n * // type of persistent store for super properties (cookie/\n * // localStorage) if set to 'localStorage', any existing\n * // posthog cookie value with the same persistence_name\n * // will be transferred to localStorage and deleted\n * persistence: 'cookie'\n *\n * // name for super properties persistent store\n * persistence_name: ''\n *\n * // names of properties/superproperties which should never\n * // be sent with capture() calls\n * property_blacklist: []\n *\n * // if this is true, posthog cookies will be marked as\n * // secure, meaning they will only be transmitted over https\n * secure_cookie: false\n *\n * // should we capture a page view on page load\n * capture_pageview: true\n *\n * // if you set upgrade to be true, the library will check for\n * // a cookie from our old js library and import super\n * // properties from it, then the old cookie is deleted\n * // The upgrade config option only works in the initialization,\n * // so make sure you set it when you create the library.\n * upgrade: false\n *\n * // if this is true, session recording is always disabled.\n * disable_session_recording: false,\n *\n * // extra HTTP request headers to set for each API request, in\n * // the format {'Header-Name': value}\n * xhr_headers: {}\n *\n * // protocol for fetching in-app message resources, e.g.\n * // 'https://' or 'http://'; defaults to '//' (which defers to the\n * // current page's protocol)\n * inapp_protocol: '//'\n *\n * // whether to open in-app message link in new tab/window\n * inapp_link_new_window: false\n *\n * // a set of rrweb config options that PostHog users can configure\n * // see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n * session_recording: {\n * blockClass: 'ph-no-capture',\n * blockSelector: null,\n * ignoreClass: 'ph-ignore-input',\n * maskAllInputs: true,\n * maskInputOptions: {},\n * maskInputFn: null,\n * slimDOMOptions: {},\n * collectFonts: false\n * }\n *\n * // prevent autocapture from capturing any attribute names on elements\n * mask_all_element_attributes: false\n *\n * // prevent autocapture from capturing textContent on all elements\n * mask_all_text: false\n *\n * // Anonymous users get a random UUID as their device by default.\n * // This option allows overriding that option.\n * get_device_id: (uuid) => uuid\n * }\n *\n *\n * @param {Object} config A dictionary of new configuration values to update\n */\n\n }, {\n key: \"set_config\",\n value: function set_config(config) {\n var oldConfig = _objectSpread2({}, this.config);\n\n if (_isObject(config)) {\n _extend(this.config, config);\n\n if (!this.get_config('persistence_name')) {\n this.config.persistence_name = this.config.cookie_name;\n }\n\n if (!this.get_config('disable_persistence')) {\n this.config.disable_persistence = this.config.disable_cookie;\n }\n\n if (this.persistence) {\n this.persistence.update_config(this.config);\n }\n\n if (localStore.is_supported() && localStore.get('ph_debug') === 'true') {\n this.config.debug = true;\n }\n\n if (this.get_config('debug')) {\n Config.DEBUG = true;\n }\n\n if (this.sessionRecording && typeof config.disable_session_recording !== 'undefined') {\n if (oldConfig.disable_session_recording !== config.disable_session_recording) {\n if (config.disable_session_recording) {\n this.sessionRecording.stopRecording();\n } else {\n this.sessionRecording.startRecordingIfEnabled();\n }\n }\n }\n }\n }\n /**\n * turns session recording on, and updates the config option\n * disable_session_recording to false\n */\n\n }, {\n key: \"startSessionRecording\",\n value: function startSessionRecording() {\n this.set_config({\n disable_session_recording: false\n });\n }\n /**\n * turns session recording off, and updates the config option\n * disable_session_recording to true\n */\n\n }, {\n key: \"stopSessionRecording\",\n value: function stopSessionRecording() {\n this.set_config({\n disable_session_recording: true\n });\n }\n /**\n * returns a boolean indicating whether session recording\n * is currently running\n */\n\n }, {\n key: \"sessionRecordingStarted\",\n value: function sessionRecordingStarted() {\n var _this$sessionRecordin;\n\n return !!((_this$sessionRecordin = this.sessionRecording) !== null && _this$sessionRecordin !== void 0 && _this$sessionRecordin.started());\n }\n /**\n * returns the current config object for the library.\n */\n\n }, {\n key: \"get_config\",\n value: function get_config(prop_name) {\n var _this$config;\n\n return (_this$config = this.config) === null || _this$config === void 0 ? void 0 : _this$config[prop_name];\n }\n /**\n * Returns the value of the super property named property_name. If no such\n * property is set, get_property() will return the undefined value.\n *\n * ### Notes:\n *\n * get_property() can only be called after the PostHog library has finished loading.\n * init() has a loaded function available to handle this automatically. For example:\n *\n * // grab value for 'user_id' after the posthog library has loaded\n * posthog.init('YOUR PROJECT TOKEN', {\n * loaded: function(posthog) {\n * user_id = posthog.get_property('user_id');\n * }\n * });\n *\n * @param {String} property_name The name of the super property you want to retrieve\n */\n\n }, {\n key: \"get_property\",\n value: function get_property(property_name) {\n return this.persistence['props'][property_name];\n }\n }, {\n key: \"toString\",\n value: function toString() {\n var _this$get_config;\n\n var name = (_this$get_config = this.get_config('name')) !== null && _this$get_config !== void 0 ? _this$get_config : PRIMARY_INSTANCE_NAME;\n\n if (name !== PRIMARY_INSTANCE_NAME) {\n name = PRIMARY_INSTANCE_NAME + '.' + name;\n }\n\n return name;\n } // perform some housekeeping around GDPR opt-in/out state\n\n }, {\n key: \"_gdpr_init\",\n value: function _gdpr_init() {\n var is_localStorage_requested = this.get_config('opt_out_capturing_persistence_type') === 'localStorage'; // try to convert opt-in/out cookies to localStorage if possible\n\n if (is_localStorage_requested && localStore.is_supported()) {\n if (!this.has_opted_in_capturing() && this.has_opted_in_capturing({\n persistence_type: 'cookie'\n })) {\n this.opt_in_capturing({\n enable_persistence: false\n });\n }\n\n if (!this.has_opted_out_capturing() && this.has_opted_out_capturing({\n persistence_type: 'cookie'\n })) {\n this.opt_out_capturing({\n clear_persistence: false\n });\n }\n\n this.clear_opt_in_out_capturing({\n persistence_type: 'cookie',\n enable_persistence: false\n });\n } // check whether the user has already opted out - if so, clear & disable persistence\n\n\n if (this.has_opted_out_capturing()) {\n this._gdpr_update_persistence({\n clear_persistence: true\n }); // check whether we should opt out by default\n // note: we don't clear persistence here by default since opt-out default state is often\n // used as an initial state while GDPR information is being collected\n\n } else if (!this.has_opted_in_capturing() && (this.get_config('opt_out_capturing_by_default') || cookieStore.get('ph_optout'))) {\n cookieStore.remove('ph_optout');\n this.opt_out_capturing({\n clear_persistence: this.get_config('opt_out_persistence_by_default')\n });\n }\n }\n /**\n * Enable or disable persistence based on options\n * only enable/disable if persistence is not already in this state\n * @param {boolean} [options.clear_persistence] If true, will delete all data stored by the sdk in persistence and disable it\n * @param {boolean} [options.enable_persistence] If true, will re-enable sdk persistence\n */\n\n }, {\n key: \"_gdpr_update_persistence\",\n value: function _gdpr_update_persistence(options) {\n var disabled;\n\n if (options && options['clear_persistence']) {\n disabled = true;\n } else if (options && options['enable_persistence']) {\n disabled = false;\n } else {\n return;\n }\n\n if (!this.get_config('disable_persistence') && this.persistence.disabled !== disabled) {\n this.persistence.set_disabled(disabled);\n }\n } // call a base gdpr function after constructing the appropriate token and options args\n\n }, {\n key: \"_gdpr_call_func\",\n value: function _gdpr_call_func(func, options) {\n options = _extend({\n capture: this.capture.bind(this),\n persistence_type: this.get_config('opt_out_capturing_persistence_type'),\n cookie_prefix: this.get_config('opt_out_capturing_cookie_prefix'),\n cookie_expiration: this.get_config('cookie_expiration'),\n cross_subdomain_cookie: this.get_config('cross_subdomain_cookie'),\n secure_cookie: this.get_config('secure_cookie')\n }, options || {}); // check if localStorage can be used for recording opt out status, fall back to cookie if not\n\n if (!localStore.is_supported() && options['persistence_type'] === 'localStorage') {\n options['persistence_type'] = 'cookie';\n }\n\n return func(this.get_config('token'), {\n capture: options['capture'],\n captureEventName: options['capture_event_name'],\n captureProperties: options['capture_properties'],\n persistenceType: options['persistence_type'],\n persistencePrefix: options['cookie_prefix'],\n cookieExpiration: options['cookie_expiration'],\n crossSubdomainCookie: options['cross_subdomain_cookie'],\n secureCookie: options['secure_cookie']\n });\n }\n /**\n * Opt the user in to data capturing and cookies/localstorage for this PostHog instance\n *\n * ### Usage\n *\n * // opt user in\n * posthog.opt_in_capturing();\n *\n * // opt user in with specific event name, properties, cookie configuration\n * posthog.opt_in_capturing({\n * capture_event_name: 'User opted in',\n * capture_event_properties: {\n * 'Email': 'jdoe@example.com'\n * },\n * cookie_expiration: 30,\n * secure_cookie: true\n * });\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {function} [options.capture] Function used for capturing a PostHog event to record the opt-in action (default is this PostHog instance's capture method)\n * @param {string} [options.capture_event_name=$opt_in] Event name to be used for capturing the opt-in action\n * @param {Object} [options.capture_properties] Set of properties to be captured along with the opt-in action\n * @param {boolean} [options.enable_persistence=true] If true, will re-enable sdk persistence\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__ph_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this PostHog instance's config)\n * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this PostHog instance's config)\n * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this PostHog instance's config)\n */\n\n }, {\n key: \"opt_in_capturing\",\n value: function opt_in_capturing(options) {\n options = _extend({\n enable_persistence: true\n }, options || {});\n\n this._gdpr_call_func(optIn, options);\n\n this._gdpr_update_persistence(options);\n }\n /**\n * Opt the user out of data capturing and cookies/localstorage for this PostHog instance\n *\n * ### Usage\n *\n * // opt user out\n * posthog.opt_out_capturing();\n *\n * // opt user out with different cookie configuration from PostHog instance\n * posthog.opt_out_capturing({\n * cookie_expiration: 30,\n * secure_cookie: true\n * });\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {boolean} [options.clear_persistence=true] If true, will delete all data stored by the sdk in persistence\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__ph_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this PostHog instance's config)\n * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this PostHog instance's config)\n * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this PostHog instance's config)\n */\n\n }, {\n key: \"opt_out_capturing\",\n value: function opt_out_capturing(options) {\n var _options = _extend({\n clear_persistence: true\n }, options || {});\n\n this._gdpr_call_func(optOut, _options);\n\n this._gdpr_update_persistence(_options);\n }\n /**\n * Check whether the user has opted in to data capturing and cookies/localstorage for this PostHog instance\n *\n * ### Usage\n *\n * const has_opted_in = posthog.has_opted_in_capturing();\n * // use has_opted_in value\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__ph_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} current opt-in status\n */\n\n }, {\n key: \"has_opted_in_capturing\",\n value: function has_opted_in_capturing(options) {\n return this._gdpr_call_func(hasOptedIn, options);\n }\n /**\n * Check whether the user has opted out of data capturing and cookies/localstorage for this PostHog instance\n *\n * ### Usage\n *\n * const has_opted_out = posthog.has_opted_out_capturing();\n * // use has_opted_out value\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__ph_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} current opt-out status\n */\n\n }, {\n key: \"has_opted_out_capturing\",\n value: function has_opted_out_capturing(options) {\n return this._gdpr_call_func(hasOptedOut, options);\n }\n /**\n * Clear the user's opt in/out status of data capturing and cookies/localstorage for this PostHog instance\n *\n * ### Usage\n *\n * // clear user's opt-in/out status\n * posthog.clear_opt_in_out_capturing();\n *\n * // clear user's opt-in/out status with specific cookie configuration - should match\n * // configuration used when opt_in_capturing/opt_out_capturing methods were called.\n * posthog.clear_opt_in_out_capturing({\n * cookie_expiration: 30,\n * secure_cookie: true\n * });\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {boolean} [options.enable_persistence=true] If true, will re-enable sdk persistence\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__ph_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this PostHog instance's config)\n * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this PostHog instance's config)\n * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this PostHog instance's config)\n */\n\n }, {\n key: \"clear_opt_in_out_capturing\",\n value: function clear_opt_in_out_capturing(options) {\n var _options = _extend({\n enable_persistence: true\n }, options !== null && options !== void 0 ? options : {});\n\n this._gdpr_call_func(clearOptInOut, _options);\n\n this._gdpr_update_persistence(_options);\n }\n }, {\n key: \"debug\",\n value: function debug(_debug) {\n if (_debug === false) {\n win.console.log(\"You've disabled debug mode.\");\n localStorage && localStorage.removeItem('ph_debug');\n this.set_config({\n debug: false\n });\n } else {\n win.console.log(\"You're now in debug mode. All calls to PostHog will be logged in your console.\\nYou can disable this with `posthog.debug(false)`.\");\n localStorage && localStorage.setItem('ph_debug', 'true');\n this.set_config({\n debug: true\n });\n }\n }\n }, {\n key: \"decodeLZ64\",\n value: function decodeLZ64(input) {\n return LZString.decompressFromBase64(input || null);\n }\n }]);\n\n return PostHog;\n}();\n\n_safewrap_class(PostHog, ['identify']);\n\nvar instances = {};\n\nvar extend_mp = function extend_mp() {\n // add all the sub posthog instances\n _each(instances, function (instance, name) {\n if (name !== PRIMARY_INSTANCE_NAME) {\n posthog_master[name] = instance;\n }\n });\n};\n\nvar override_ph_init_func = function override_ph_init_func() {\n // we override the snippets init function to handle the case where a\n // user initializes the posthog library after the script loads & runs\n posthog_master['init'] = function (token, config, name) {\n if (name) {\n // initialize a sub library\n if (!posthog_master[name]) {\n posthog_master[name] = instances[name] = create_mplib(token || '', config || {}, name);\n\n posthog_master[name]._loaded();\n }\n\n return posthog_master[name];\n } else {\n var instance = posthog_master;\n\n if (instances[PRIMARY_INSTANCE_NAME]) {\n // main posthog lib already initialized\n instance = instances[PRIMARY_INSTANCE_NAME];\n } else if (token) {\n // intialize the main posthog lib\n instance = create_mplib(token, config || {}, PRIMARY_INSTANCE_NAME);\n\n instance._loaded();\n\n instances[PRIMARY_INSTANCE_NAME] = instance;\n }\n posthog_master = instance;\n\n if (init_type === InitType.INIT_SNIPPET) {\n win[PRIMARY_INSTANCE_NAME] = posthog_master;\n }\n\n extend_mp();\n return instance;\n }\n };\n};\n\nvar add_dom_loaded_handler = function add_dom_loaded_handler() {\n // Cross browser DOM Loaded support\n function dom_loaded_handler() {\n // function flag since we only want to execute this once\n if (dom_loaded_handler.done) {\n return;\n }\n dom_loaded_handler.done = true;\n ENQUEUE_REQUESTS = false;\n\n _each(instances, function (inst) {\n inst._dom_loaded();\n });\n }\n\n if (document$1.addEventListener) {\n if (document$1.readyState === 'complete') {\n // safari 4 can fire the DOMContentLoaded event before loading all\n // external JS (including this file). you will see some copypasta\n // on the internet that checks for 'complete' and 'loaded', but\n // 'loaded' is an IE thing\n dom_loaded_handler();\n } else {\n document$1.addEventListener('DOMContentLoaded', dom_loaded_handler, false);\n }\n } // fallback handler, always will work\n\n\n _register_event(win, 'load', dom_loaded_handler, true);\n};\nfunction init_as_module() {\n init_type = InitType.INIT_MODULE;\n posthog_master = new PostHog();\n override_ph_init_func();\n posthog_master['init']();\n add_dom_loaded_handler();\n return posthog_master;\n}\n\nvar posthog = init_as_module();\n\nexport { Compression, PostHog, posthog as default, posthog };\n","import { Injectable, NgZone } from '@angular/core';\nimport { BrowserStorage } from '@common';\nimport { AuthUser } from '@common/models';\nimport { LocalStorageService } from '@common/services';\nimport { ConfigurationService } from '@common/services/configuration.service';\nimport { environment } from '@env/environment';\nimport posthog from 'posthog-js';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PosthogService {\n constructor(private ngZone: NgZone, private storageService: LocalStorageService, private config: ConfigurationService) {}\n\n public initialize(user: AuthUser) {\n if (this.needDeclinePostHog() || !this.storageService.get(BrowserStorage.Token)) return;\n\n this.ngZone.runOutsideAngular(() => {\n posthog.init(environment.posthog.prod.key, {\n disable_session_recording: true,\n api_host: environment.posthog.prod.serverUrl,\n loaded: () => {\n posthog.identify(user.Id, {\n Email: user.Email,\n DomainId: user.DomainId,\n DomainName: user.DomainName,\n Id: user.Id,\n Name: user.Name,\n Provider: user.Provider,\n RestoreEnable: user.RestoreEnable,\n SignInEnable: user.SignInEnable\n });\n }\n });\n });\n }\n\n public needDeclinePostHog(): boolean {\n return !this.isAcceptedHost(location.host);\n }\n\n public isAcceptedHost(host: string): boolean {\n const acceptedHosts: string[] = this.config.get('posthog')?.acceptedHosts || [];\n const declinedHosts: string[] = this.config.get('posthog')?.declinedHosts || [];\n\n if (declinedHosts.some((mask) => this.isMatchWithMask(host, mask))) {\n return false;\n }\n\n if (acceptedHosts.some((mask) => this.isMatchWithMask(host, mask))) {\n return true;\n }\n\n return false;\n }\n\n private isMatchWithMask(value: string, mask: string): boolean {\n const lValue = value.toLowerCase();\n const lMask = mask.toLowerCase();\n\n if (lMask.startsWith('*')) {\n return lValue.endsWith(lMask.slice(1));\n }\n\n if (lMask.endsWith('*')) {\n return lValue.startsWith(lMask.slice(0, -1));\n }\n\n return lValue === lMask;\n }\n}\n","import { isString, isRegExp } from './is.js';\n\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string (0 = unlimited)\n * @returns string Encoded\n */\nfunction truncate(str, max = 0) {\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : `${str.slice(0, max)}...`;\n}\n\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nfunction snipLine(line, colno) {\n let newLine = line;\n const lineLength = newLine.length;\n if (lineLength <= 150) {\n return newLine;\n }\n if (colno > lineLength) {\n // eslint-disable-next-line no-param-reassign\n colno = lineLength;\n }\n\n let start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n\n let end = Math.min(start + 140, lineLength);\n if (end > lineLength - 5) {\n end = lineLength;\n }\n if (end === lineLength) {\n start = Math.max(end - 140, 0);\n }\n\n newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = `'{snip} ${newLine}`;\n }\n if (end < lineLength) {\n newLine += ' {snip}';\n }\n\n return newLine;\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction safeJoin(input, delimiter) {\n if (!Array.isArray(input)) {\n return '';\n }\n\n const output = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < input.length; i++) {\n const value = input[i];\n try {\n output.push(String(value));\n } catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n/**\n * Checks if the given value matches a regex or string\n *\n * @param value The string to test\n * @param pattern Either a regex or a string against which `value` will be matched\n * @param requireExactStringMatch If true, `value` must match `pattern` exactly. If false, `value` will match\n * `pattern` if it contains `pattern`. Only applies to string-type patterns.\n */\nfunction isMatchingPattern(\n value,\n pattern,\n requireExactStringMatch = false,\n) {\n if (!isString(value)) {\n return false;\n }\n\n if (isRegExp(pattern)) {\n return pattern.test(value);\n }\n if (isString(pattern)) {\n return requireExactStringMatch ? value === pattern : value.includes(pattern);\n }\n\n return false;\n}\n\n/**\n * Test the given string against an array of strings and regexes. By default, string matching is done on a\n * substring-inclusion basis rather than a strict equality basis\n *\n * @param testString The string to test\n * @param patterns The patterns against which to test the string\n * @param requireExactStringMatch If true, `testString` must match one of the given string patterns exactly in order to\n * count. If false, `testString` will match a string pattern if it contains that pattern.\n * @returns\n */\nfunction stringMatchesSomePattern(\n testString,\n patterns = [],\n requireExactStringMatch = false,\n) {\n return patterns.some(pattern => isMatchingPattern(testString, pattern, requireExactStringMatch));\n}\n\nexport { isMatchingPattern, safeJoin, snipLine, stringMatchesSomePattern, truncate };\n","import { logger, getEventDescription, stringMatchesSomePattern } from '@sentry/utils';\n\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nconst DEFAULT_IGNORE_ERRORS = [/^Script error\\.?$/, /^Javascript error: Script error\\.? on line 0$/];\n\nconst DEFAULT_IGNORE_TRANSACTIONS = [\n /^.*healthcheck.*$/,\n /^.*healthy.*$/,\n /^.*live.*$/,\n /^.*ready.*$/,\n /^.*heartbeat.*$/,\n /^.*\\/health$/,\n /^.*\\/healthz$/,\n];\n\n/** Options for the InboundFilters integration */\n\n/** Inbound filters configurable by the user */\nclass InboundFilters {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'InboundFilters';}\n\n /**\n * @inheritDoc\n */\n\n constructor(options = {}) {\n this.name = InboundFilters.id;\n this._options = options;\n }\n\n /**\n * @inheritDoc\n */\n setupOnce(addGlobalEventProcessor, getCurrentHub) {\n const eventProcess = (event) => {\n const hub = getCurrentHub();\n if (hub) {\n const self = hub.getIntegration(InboundFilters);\n if (self) {\n const client = hub.getClient();\n const clientOptions = client ? client.getOptions() : {};\n const options = _mergeOptions(self._options, clientOptions);\n return _shouldDropEvent(event, options) ? null : event;\n }\n }\n return event;\n };\n\n eventProcess.id = this.name;\n addGlobalEventProcessor(eventProcess);\n }\n} InboundFilters.__initStatic();\n\n/** JSDoc */\nfunction _mergeOptions(\n internalOptions = {},\n clientOptions = {},\n) {\n return {\n allowUrls: [...(internalOptions.allowUrls || []), ...(clientOptions.allowUrls || [])],\n denyUrls: [...(internalOptions.denyUrls || []), ...(clientOptions.denyUrls || [])],\n ignoreErrors: [\n ...(internalOptions.ignoreErrors || []),\n ...(clientOptions.ignoreErrors || []),\n ...(internalOptions.disableErrorDefaults ? [] : DEFAULT_IGNORE_ERRORS),\n ],\n ignoreTransactions: [\n ...(internalOptions.ignoreTransactions || []),\n ...(clientOptions.ignoreTransactions || []),\n ...(internalOptions.disableTransactionDefaults ? [] : DEFAULT_IGNORE_TRANSACTIONS),\n ],\n ignoreInternal: internalOptions.ignoreInternal !== undefined ? internalOptions.ignoreInternal : true,\n };\n}\n\n/** JSDoc */\nfunction _shouldDropEvent(event, options) {\n if (options.ignoreInternal && _isSentryError(event)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(`Event dropped due to being internal Sentry Error.\\nEvent: ${getEventDescription(event)}`);\n return true;\n }\n if (_isIgnoredError(event, options.ignoreErrors)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (_isIgnoredTransaction(event, options.ignoreTransactions)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `Event dropped due to being matched by \\`ignoreTransactions\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (_isDeniedUrl(event, options.denyUrls)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `Event dropped due to being matched by \\`denyUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n if (!_isAllowedUrl(event, options.allowUrls)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `Event dropped due to not being matched by \\`allowUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n return false;\n}\n\nfunction _isIgnoredError(event, ignoreErrors) {\n // If event.type, this is not an error\n if (event.type || !ignoreErrors || !ignoreErrors.length) {\n return false;\n }\n\n return _getPossibleEventMessages(event).some(message => stringMatchesSomePattern(message, ignoreErrors));\n}\n\nfunction _isIgnoredTransaction(event, ignoreTransactions) {\n if (event.type !== 'transaction' || !ignoreTransactions || !ignoreTransactions.length) {\n return false;\n }\n\n const name = event.transaction;\n return name ? stringMatchesSomePattern(name, ignoreTransactions) : false;\n}\n\nfunction _isDeniedUrl(event, denyUrls) {\n // TODO: Use Glob instead?\n if (!denyUrls || !denyUrls.length) {\n return false;\n }\n const url = _getEventFilterUrl(event);\n return !url ? false : stringMatchesSomePattern(url, denyUrls);\n}\n\nfunction _isAllowedUrl(event, allowUrls) {\n // TODO: Use Glob instead?\n if (!allowUrls || !allowUrls.length) {\n return true;\n }\n const url = _getEventFilterUrl(event);\n return !url ? true : stringMatchesSomePattern(url, allowUrls);\n}\n\nfunction _getPossibleEventMessages(event) {\n if (event.message) {\n return [event.message];\n }\n if (event.exception) {\n const { values } = event.exception;\n try {\n const { type = '', value = '' } = (values && values[values.length - 1]) || {};\n return [`${value}`, `${type}: ${value}`];\n } catch (oO) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error(`Cannot extract message for event ${getEventDescription(event)}`);\n return [];\n }\n }\n return [];\n}\n\nfunction _isSentryError(event) {\n try {\n // @ts-ignore can't be a sentry error if undefined\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return event.exception.values[0].type === 'SentryError';\n } catch (e) {\n // ignore\n }\n return false;\n}\n\nfunction _getLastValidUrl(frames = []) {\n for (let i = frames.length - 1; i >= 0; i--) {\n const frame = frames[i];\n\n if (frame && frame.filename !== '' && frame.filename !== '[native code]') {\n return frame.filename || null;\n }\n }\n\n return null;\n}\n\nfunction _getEventFilterUrl(event) {\n try {\n let frames;\n try {\n // @ts-ignore we only care about frames if the whole thing here is defined\n frames = event.exception.values[0].stacktrace.frames;\n } catch (e) {\n // ignore\n }\n return frames ? _getLastValidUrl(frames) : null;\n } catch (oO) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error(`Cannot extract url for event ${getEventDescription(event)}`);\n return null;\n }\n}\n\nexport { InboundFilters, _mergeOptions, _shouldDropEvent };\n","import { getOriginalFunction } from '@sentry/utils';\n\nlet originalFunctionToString;\n\n/** Patch toString calls to return proper name for wrapped functions */\nclass FunctionToString {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'FunctionToString';}\n\n /**\n * @inheritDoc\n */\n\n constructor() {\n this.name = FunctionToString.id;\n }\n\n /**\n * @inheritDoc\n */\n setupOnce() {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n originalFunctionToString = Function.prototype.toString;\n\n // intrinsics (like Function.prototype) might be immutable in some environments\n // e.g. Node with --frozen-intrinsics, XS (an embedded JavaScript engine) or SES (a JavaScript proposal)\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Function.prototype.toString = function ( ...args) {\n const context = getOriginalFunction(this) || this;\n return originalFunctionToString.apply(context, args);\n };\n } catch (e) {\n // ignore errors here, just don't patch this\n }\n }\n} FunctionToString.__initStatic();\n\nexport { FunctionToString };\n","import { arrayify, logger } from '@sentry/utils';\nimport { getCurrentHub } from './hub.js';\nimport { addGlobalEventProcessor } from './scope.js';\n\nconst installedIntegrations = [];\n\n/** Map of integrations assigned to a client */\n\n/**\n * Remove duplicates from the given array, preferring the last instance of any duplicate. Not guaranteed to\n * preseve the order of integrations in the array.\n *\n * @private\n */\nfunction filterDuplicates(integrations) {\n const integrationsByName = {};\n\n integrations.forEach(currentInstance => {\n const { name } = currentInstance;\n\n const existingInstance = integrationsByName[name];\n\n // We want integrations later in the array to overwrite earlier ones of the same type, except that we never want a\n // default instance to overwrite an existing user instance\n if (existingInstance && !existingInstance.isDefaultInstance && currentInstance.isDefaultInstance) {\n return;\n }\n\n integrationsByName[name] = currentInstance;\n });\n\n return Object.keys(integrationsByName).map(k => integrationsByName[k]);\n}\n\n/** Gets integrations to install */\nfunction getIntegrationsToSetup(options) {\n const defaultIntegrations = options.defaultIntegrations || [];\n const userIntegrations = options.integrations;\n\n // We flag default instances, so that later we can tell them apart from any user-created instances of the same class\n defaultIntegrations.forEach(integration => {\n integration.isDefaultInstance = true;\n });\n\n let integrations;\n\n if (Array.isArray(userIntegrations)) {\n integrations = [...defaultIntegrations, ...userIntegrations];\n } else if (typeof userIntegrations === 'function') {\n integrations = arrayify(userIntegrations(defaultIntegrations));\n } else {\n integrations = defaultIntegrations;\n }\n\n const finalIntegrations = filterDuplicates(integrations);\n\n // The `Debug` integration prints copies of the `event` and `hint` which will be passed to `beforeSend` or\n // `beforeSendTransaction`. It therefore has to run after all other integrations, so that the changes of all event\n // processors will be reflected in the printed values. For lack of a more elegant way to guarantee that, we therefore\n // locate it and, assuming it exists, pop it out of its current spot and shove it onto the end of the array.\n const debugIndex = findIndex(finalIntegrations, integration => integration.name === 'Debug');\n if (debugIndex !== -1) {\n const [debugInstance] = finalIntegrations.splice(debugIndex, 1);\n finalIntegrations.push(debugInstance);\n }\n\n return finalIntegrations;\n}\n\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nfunction setupIntegrations(integrations) {\n const integrationIndex = {};\n\n integrations.forEach(integration => {\n // guard against empty provided integrations\n if (integration) {\n setupIntegration(integration, integrationIndex);\n }\n });\n\n return integrationIndex;\n}\n\n/** Setup a single integration. */\nfunction setupIntegration(integration, integrationIndex) {\n integrationIndex[integration.name] = integration;\n\n if (installedIntegrations.indexOf(integration.name) === -1) {\n integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n installedIntegrations.push(integration.name);\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Integration installed: ${integration.name}`);\n }\n}\n\n// Polyfill for Array.findIndex(), which is not supported in ES5\nfunction findIndex(arr, callback) {\n for (let i = 0; i < arr.length; i++) {\n if (callback(arr[i]) === true) {\n return i;\n }\n }\n\n return -1;\n}\n\nexport { getIntegrationsToSetup, installedIntegrations, setupIntegration, setupIntegrations };\n","import { node } from './node-stack-trace.js';\n\nconst STACKTRACE_FRAME_LIMIT = 50;\n// Used to sanitize webpack (error: *) wrapped stack errors\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\nconst STRIP_FRAME_REGEXP = /captureMessage|captureException/;\n\n/**\n * Creates a stack parser with the supplied line parsers\n *\n * StackFrames are returned in the correct order for Sentry Exception\n * frames and with Sentry SDK internal frames removed from the top and bottom\n *\n */\nfunction createStackParser(...parsers) {\n const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n return (stack, skipFirst = 0) => {\n const frames = [];\n const lines = stack.split('\\n');\n\n for (let i = skipFirst; i < lines.length; i++) {\n const line = lines[i];\n // Ignore lines over 1kb as they are unlikely to be stack frames.\n // Many of the regular expressions use backtracking which results in run time that increases exponentially with\n // input size. Huge strings can result in hangs/Denial of Service:\n // https://github.com/getsentry/sentry-javascript/issues/2286\n if (line.length > 1024) {\n continue;\n }\n\n // https://github.com/getsentry/sentry-javascript/issues/5459\n // Remove webpack (error: *) wrappers\n const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line;\n\n // https://github.com/getsentry/sentry-javascript/issues/7813\n // Skip Error: lines\n if (cleanedLine.match(/\\S*Error: /)) {\n continue;\n }\n\n for (const parser of sortedParsers) {\n const frame = parser(cleanedLine);\n\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n\n if (frames.length >= STACKTRACE_FRAME_LIMIT) {\n break;\n }\n }\n\n return stripSentryFramesAndReverse(frames);\n };\n}\n\n/**\n * Gets a stack parser implementation from Options.stackParser\n * @see Options\n *\n * If options contains an array of line parsers, it is converted into a parser\n */\nfunction stackParserFromStackParserOptions(stackParser) {\n if (Array.isArray(stackParser)) {\n return createStackParser(...stackParser);\n }\n return stackParser;\n}\n\n/**\n * Removes Sentry frames from the top and bottom of the stack if present and enforces a limit of max number of frames.\n * Assumes stack input is ordered from top to bottom and returns the reverse representation so call site of the\n * function that caused the crash is the last frame in the array.\n * @hidden\n */\nfunction stripSentryFramesAndReverse(stack) {\n if (!stack.length) {\n return [];\n }\n\n const localStack = Array.from(stack);\n\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (/sentryWrapped/.test(localStack[localStack.length - 1].function || '')) {\n localStack.pop();\n }\n\n // Reversing in the middle of the procedure allows us to just pop the values off the stack\n localStack.reverse();\n\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (STRIP_FRAME_REGEXP.test(localStack[localStack.length - 1].function || '')) {\n localStack.pop();\n\n // When using synthetic events, we will have a 2 levels deep stack, as `new Error('Sentry syntheticException')`\n // is produced within the hub itself, making it:\n //\n // Sentry.captureException()\n // getCurrentHub().captureException()\n //\n // instead of just the top `Sentry` call itself.\n // This forces us to possibly strip an additional frame in the exact same was as above.\n if (STRIP_FRAME_REGEXP.test(localStack[localStack.length - 1].function || '')) {\n localStack.pop();\n }\n }\n\n return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map(frame => ({\n ...frame,\n filename: frame.filename || localStack[localStack.length - 1].filename,\n function: frame.function || '?',\n }));\n}\n\nconst defaultFunctionName = '';\n\n/**\n * Safely extract function name from itself\n */\nfunction getFunctionName(fn) {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return defaultFunctionName;\n }\n}\n\n/**\n * Node.js stack line parser\n *\n * This is in @sentry/utils so it can be used from the Electron SDK in the browser for when `nodeIntegration == true`.\n * This allows it to be used without referencing or importing any node specific code which causes bundlers to complain\n */\nfunction nodeStackLineParser(getModule) {\n return [90, node(getModule)];\n}\n\nexport { createStackParser, getFunctionName, nodeStackLineParser, stackParserFromStackParserOptions, stripSentryFramesAndReverse };\n","import { getGlobalSingleton, GLOBAL_OBJ } from './worldwide.js';\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\nconst CONSOLE_LEVELS = ['debug', 'info', 'warn', 'error', 'log', 'assert', 'trace'] ;\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nfunction consoleSandbox(callback) {\n if (!('console' in GLOBAL_OBJ)) {\n return callback();\n }\n\n const originalConsole = GLOBAL_OBJ.console ;\n const wrappedLevels = {};\n\n // Restore all wrapped console methods\n CONSOLE_LEVELS.forEach(level => {\n // TODO(v7): Remove this check as it's only needed for Node 6\n const originalWrappedFunc =\n originalConsole[level] && (originalConsole[level] ).__sentry_original__;\n if (level in originalConsole && originalWrappedFunc) {\n wrappedLevels[level] = originalConsole[level] ;\n originalConsole[level] = originalWrappedFunc ;\n }\n });\n\n try {\n return callback();\n } finally {\n // Revert restoration to wrapped state\n Object.keys(wrappedLevels).forEach(level => {\n originalConsole[level] = wrappedLevels[level ];\n });\n }\n}\n\nfunction makeLogger() {\n let enabled = false;\n const logger = {\n enable: () => {\n enabled = true;\n },\n disable: () => {\n enabled = false;\n },\n };\n\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n CONSOLE_LEVELS.forEach(name => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n logger[name] = (...args) => {\n if (enabled) {\n consoleSandbox(() => {\n GLOBAL_OBJ.console[name](`${PREFIX}[${name}]:`, ...args);\n });\n }\n };\n });\n } else {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = () => undefined;\n });\n }\n\n return logger ;\n}\n\n// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\nlet logger;\nif ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n logger = getGlobalSingleton('logger', makeLogger);\n} else {\n logger = makeLogger();\n}\n\nexport { CONSOLE_LEVELS, consoleSandbox, logger };\n","import { logger } from './logger.js';\nimport { getGlobalObject } from './worldwide.js';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsErrorEvent() {\n try {\n new ErrorEvent('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsDOMError() {\n try {\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-ignore It really needs 1 argument, not 0.\n new DOMError('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsDOMException() {\n try {\n new DOMException('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsFetch() {\n if (!('fetch' in WINDOW)) {\n return false;\n }\n\n try {\n new Headers();\n new Request('http://www.example.com');\n new Response();\n return true;\n } catch (e) {\n return false;\n }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isNativeFetch(func) {\n return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nfunction supportsNativeFetch() {\n if (!supportsFetch()) {\n return false;\n }\n\n // Fast path to avoid DOM I/O\n // eslint-disable-next-line @typescript-eslint/unbound-method\n if (isNativeFetch(WINDOW.fetch)) {\n return true;\n }\n\n // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n // so create a \"pure\" iframe to see if that has native fetch\n let result = false;\n const doc = WINDOW.document;\n // eslint-disable-next-line deprecation/deprecation\n if (doc && typeof (doc.createElement ) === 'function') {\n try {\n const sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n result = isNativeFetch(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n } catch (err) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n\n return result;\n}\n\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsReportingObserver() {\n return 'ReportingObserver' in WINDOW;\n}\n\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsReferrerPolicy() {\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default'\n // (see https://caniuse.com/#feat=referrer-policy),\n // it doesn't. And it throws an exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n\n if (!supportsFetch()) {\n return false;\n }\n\n try {\n new Request('_', {\n referrerPolicy: 'origin' ,\n });\n return true;\n } catch (e) {\n return false;\n }\n}\n\nexport { isNativeFetch, supportsDOMError, supportsDOMException, supportsErrorEvent, supportsFetch, supportsNativeFetch, supportsReferrerPolicy, supportsReportingObserver };\n","// eslint-disable-next-line @typescript-eslint/unbound-method\nconst objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isError(wat) {\n switch (objectToString.call(wat)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n/**\n * Checks whether given value is an instance of the given built-in class.\n *\n * @param wat The value to be checked\n * @param className\n * @returns A boolean representing the result.\n */\nfunction isBuiltin(wat, className) {\n return objectToString.call(wat) === `[object ${className}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isErrorEvent(wat) {\n return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isDOMError(wat) {\n return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isDOMException(wat) {\n return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isString(wat) {\n return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isPrimitive(wat) {\n return wat === null || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isPlainObject(wat) {\n return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isEvent(wat) {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isElement(wat) {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isRegExp(wat) {\n return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nfunction isThenable(wat) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isSyntheticEvent(wat) {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n\n/**\n * Checks whether given value is NaN\n * {@link isNaN}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isNaN(wat) {\n return typeof wat === 'number' && wat !== wat;\n}\n\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nfunction isInstanceOf(wat, base) {\n try {\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n\nexport { isDOMError, isDOMException, isElement, isError, isErrorEvent, isEvent, isInstanceOf, isNaN, isPlainObject, isPrimitive, isRegExp, isString, isSyntheticEvent, isThenable };\n","import { isString } from './is.js';\nimport { getGlobalObject } from './worldwide.js';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\nconst DEFAULT_MAX_STRING_LENGTH = 80;\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction htmlTreeAsString(\n elem,\n options = {},\n) {\n\n // try/catch both:\n // - accessing event.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // - can throw an exception in some circumstances.\n try {\n let currentElem = elem ;\n const MAX_TRAVERSE_HEIGHT = 5;\n const out = [];\n let height = 0;\n let len = 0;\n const separator = ' > ';\n const sepLength = separator.length;\n let nextStr;\n const keyAttrs = Array.isArray(options) ? options : options.keyAttrs;\n const maxStringLength = (!Array.isArray(options) && options.maxStringLength) || DEFAULT_MAX_STRING_LENGTH;\n\n while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = _htmlElementAsString(currentElem, keyAttrs);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds maxStringLength\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= maxStringLength)) {\n break;\n }\n\n out.push(nextStr);\n\n len += nextStr.length;\n currentElem = currentElem.parentNode;\n }\n\n return out.reverse().join(separator);\n } catch (_oO) {\n return '';\n }\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el, keyAttrs) {\n const elem = el\n\n;\n\n const out = [];\n let className;\n let classes;\n let key;\n let attr;\n let i;\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n out.push(elem.tagName.toLowerCase());\n\n // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n const keyAttrPairs =\n keyAttrs && keyAttrs.length\n ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n : null;\n\n if (keyAttrPairs && keyAttrPairs.length) {\n keyAttrPairs.forEach(keyAttrPair => {\n out.push(`[${keyAttrPair[0]}=\"${keyAttrPair[1]}\"]`);\n });\n } else {\n if (elem.id) {\n out.push(`#${elem.id}`);\n }\n\n // eslint-disable-next-line prefer-const\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push(`.${classes[i]}`);\n }\n }\n }\n const allowedAttrs = ['aria-label', 'type', 'name', 'title', 'alt'];\n for (i = 0; i < allowedAttrs.length; i++) {\n key = allowedAttrs[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push(`[${key}=\"${attr}\"]`);\n }\n }\n return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nfunction getLocationHref() {\n try {\n return WINDOW.document.location.href;\n } catch (oO) {\n return '';\n }\n}\n\n/**\n * Gets a DOM element by using document.querySelector.\n *\n * This wrapper will first check for the existance of the function before\n * actually calling it so that we don't have to take care of this check,\n * every time we want to access the DOM.\n *\n * Reason: DOM/querySelector is not available in all environments.\n *\n * We have to cast to any because utils can be consumed by a variety of environments,\n * and we don't want to break TS users. If you know what element will be selected by\n * `document.querySelector`, specify it as part of the generic call. For example,\n * `const element = getDomElement('selector');`\n *\n * @param selector the selector string passed on to document.querySelector\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getDomElement(selector) {\n if (WINDOW.document && WINDOW.document.querySelector) {\n return WINDOW.document.querySelector(selector) ;\n }\n return null;\n}\n\nexport { getDomElement, getLocationHref, htmlTreeAsString };\n","import { htmlTreeAsString } from './browser.js';\nimport { isError, isEvent, isInstanceOf, isElement, isPlainObject, isPrimitive } from './is.js';\nimport { truncate } from './string.js';\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, )` or `origMethod.apply(this, [])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nfunction fill(source, name, replacementFactory) {\n if (!(name in source)) {\n return;\n }\n\n const original = source[name] ;\n const wrapped = replacementFactory(original) ;\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (typeof wrapped === 'function') {\n try {\n markFunctionWrapped(wrapped, original);\n } catch (_Oo) {\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n }\n\n source[name] = wrapped;\n}\n\n/**\n * Defines a non-enumerable property on the given object.\n *\n * @param obj The object on which to set the property\n * @param name The name of the property to be set\n * @param value The value to which to set the property\n */\nfunction addNonEnumerableProperty(obj, name, value) {\n Object.defineProperty(obj, name, {\n // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n value: value,\n writable: true,\n configurable: true,\n });\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nfunction markFunctionWrapped(wrapped, original) {\n const proto = original.prototype || {};\n wrapped.prototype = original.prototype = proto;\n addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n}\n\n/**\n * This extracts the original function if available. See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\nfunction getOriginalFunction(func) {\n return func.__sentry_original__;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nfunction urlEncode(object) {\n return Object.keys(object)\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n .join('&');\n}\n\n/**\n * Transforms any `Error` or `Event` into a plain object with all of their enumerable properties, and some of their\n * non-enumerable properties attached.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n * @returns An Event or Error turned into an object - or the value argurment itself, when value is neither an Event nor\n * an Error.\n */\nfunction convertToPlainObject(value)\n\n {\n if (isError(value)) {\n return {\n message: value.message,\n name: value.name,\n stack: value.stack,\n ...getOwnProperties(value),\n };\n } else if (isEvent(value)) {\n const newObj\n\n = {\n type: value.type,\n target: serializeEventTarget(value.target),\n currentTarget: serializeEventTarget(value.currentTarget),\n ...getOwnProperties(value),\n };\n\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n newObj.detail = value.detail;\n }\n\n return newObj;\n } else {\n return value;\n }\n}\n\n/** Creates a string representation of the target of an `Event` object */\nfunction serializeEventTarget(target) {\n try {\n return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n } catch (_oO) {\n return '';\n }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj) {\n if (typeof obj === 'object' && obj !== null) {\n const extractedProps = {};\n for (const property in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n extractedProps[property] = (obj )[property];\n }\n }\n return extractedProps;\n } else {\n return {};\n }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nfunction extractExceptionKeysForMessage(exception, maxLength = 40) {\n const keys = Object.keys(convertToPlainObject(exception));\n keys.sort();\n\n if (!keys.length) {\n return '[object has no keys]';\n }\n\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n\n for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n const serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n\n return '';\n}\n\n/**\n * Given any object, return a new object having removed all fields whose value was `undefined`.\n * Works recursively on objects and arrays.\n *\n * Attention: This function keeps circular references in the returned object.\n */\nfunction dropUndefinedKeys(inputValue) {\n // This map keeps track of what already visited nodes map to.\n // Our Set - based memoBuilder doesn't work here because we want to the output object to have the same circular\n // references as the input object.\n const memoizationMap = new Map();\n\n // This function just proxies `_dropUndefinedKeys` to keep the `memoBuilder` out of this function's API\n return _dropUndefinedKeys(inputValue, memoizationMap);\n}\n\nfunction _dropUndefinedKeys(inputValue, memoizationMap) {\n if (isPlainObject(inputValue)) {\n // If this node has already been visited due to a circular reference, return the object it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal ;\n }\n\n const returnValue = {};\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n for (const key of Object.keys(inputValue)) {\n if (typeof inputValue[key] !== 'undefined') {\n returnValue[key] = _dropUndefinedKeys(inputValue[key], memoizationMap);\n }\n }\n\n return returnValue ;\n }\n\n if (Array.isArray(inputValue)) {\n // If this node has already been visited due to a circular reference, return the array it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal ;\n }\n\n const returnValue = [];\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n inputValue.forEach((item) => {\n returnValue.push(_dropUndefinedKeys(item, memoizationMap));\n });\n\n return returnValue ;\n }\n\n return inputValue;\n}\n\n/**\n * Ensure that something is an object.\n *\n * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper\n * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives.\n *\n * @param wat The subject of the objectification\n * @returns A version of `wat` which can safely be used with `Object` class methods\n */\nfunction objectify(wat) {\n let objectified;\n switch (true) {\n case wat === undefined || wat === null:\n objectified = new String(wat);\n break;\n\n // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n // an object in order to wrap it.\n case typeof wat === 'symbol' || typeof wat === 'bigint':\n objectified = Object(wat);\n break;\n\n // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n case isPrimitive(wat):\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n objectified = new (wat ).constructor(wat);\n break;\n\n // by process of elimination, at this point we know that `wat` must already be an object\n default:\n objectified = wat;\n break;\n }\n return objectified;\n}\n\nexport { addNonEnumerableProperty, convertToPlainObject, dropUndefinedKeys, extractExceptionKeysForMessage, fill, getOriginalFunction, markFunctionWrapped, objectify, urlEncode };\n","import { getGlobalObject } from '../worldwide.js';\n\n// Based on https://github.com/angular/angular.js/pull/13945/files\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsHistory() {\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const chrome = (WINDOW ).chrome;\n const isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n const hasHistoryApi = 'history' in WINDOW && !!WINDOW.history.pushState && !!WINDOW.history.replaceState;\n\n return !isChromePackagedApp && hasHistoryApi;\n}\n\nexport { supportsHistory };\n","import { isString } from './is.js';\nimport { logger, CONSOLE_LEVELS } from './logger.js';\nimport { fill } from './object.js';\nimport { getFunctionName } from './stacktrace.js';\nimport { supportsNativeFetch } from './supports.js';\nimport { getGlobalObject } from './worldwide.js';\nimport { supportsHistory } from './vendor/supportsHistory.js';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\nconst SENTRY_XHR_DATA_KEY = '__sentry_xhr_v2__';\n\n/**\n * Instrument native APIs to call handlers that can be used to create breadcrumbs, APM spans etc.\n * - Console API\n * - Fetch API\n * - XHR API\n * - History API\n * - DOM API (click/typing)\n * - Error API\n * - UnhandledRejection API\n */\n\nconst handlers = {};\nconst instrumented = {};\n\n/** Instruments given API */\nfunction instrument(type) {\n if (instrumented[type]) {\n return;\n }\n\n instrumented[type] = true;\n\n switch (type) {\n case 'console':\n instrumentConsole();\n break;\n case 'dom':\n instrumentDOM();\n break;\n case 'xhr':\n instrumentXHR();\n break;\n case 'fetch':\n instrumentFetch();\n break;\n case 'history':\n instrumentHistory();\n break;\n case 'error':\n instrumentError();\n break;\n case 'unhandledrejection':\n instrumentUnhandledRejection();\n break;\n default:\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('unknown instrumentation type:', type);\n return;\n }\n}\n\n/**\n * Add handler that will be called when given type of instrumentation triggers.\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addInstrumentationHandler(type, callback) {\n handlers[type] = handlers[type] || [];\n (handlers[type] ).push(callback);\n instrument(type);\n}\n\n/** JSDoc */\nfunction triggerHandlers(type, data) {\n if (!type || !handlers[type]) {\n return;\n }\n\n for (const handler of handlers[type] || []) {\n try {\n handler(data);\n } catch (e) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n e,\n );\n }\n }\n}\n\n/** JSDoc */\nfunction instrumentConsole() {\n if (!('console' in WINDOW)) {\n return;\n }\n\n CONSOLE_LEVELS.forEach(function (level) {\n if (!(level in WINDOW.console)) {\n return;\n }\n\n fill(WINDOW.console, level, function (originalConsoleMethod) {\n return function (...args) {\n triggerHandlers('console', { args, level });\n\n // this fails for some browsers. :(\n if (originalConsoleMethod) {\n originalConsoleMethod.apply(WINDOW.console, args);\n }\n };\n });\n });\n}\n\n/** JSDoc */\nfunction instrumentFetch() {\n if (!supportsNativeFetch()) {\n return;\n }\n\n fill(WINDOW, 'fetch', function (originalFetch) {\n return function (...args) {\n const { method, url } = parseFetchArgs(args);\n\n const handlerData = {\n args,\n fetchData: {\n method,\n url,\n },\n startTimestamp: Date.now(),\n };\n\n triggerHandlers('fetch', {\n ...handlerData,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return originalFetch.apply(WINDOW, args).then(\n (response) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n response,\n });\n return response;\n },\n (error) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n error,\n });\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the sentry.javascript SDK caught an error invoking your application code.\n // This is expected behavior and NOT indicative of a bug with sentry.javascript.\n throw error;\n },\n );\n };\n });\n}\n\nfunction hasProp(obj, prop) {\n return !!obj && typeof obj === 'object' && !!(obj )[prop];\n}\n\nfunction getUrlFromResource(resource) {\n if (typeof resource === 'string') {\n return resource;\n }\n\n if (!resource) {\n return '';\n }\n\n if (hasProp(resource, 'url')) {\n return resource.url;\n }\n\n if (resource.toString) {\n return resource.toString();\n }\n\n return '';\n}\n\n/**\n * Parses the fetch arguments to find the used Http method and the url of the request\n */\nfunction parseFetchArgs(fetchArgs) {\n if (fetchArgs.length === 0) {\n return { method: 'GET', url: '' };\n }\n\n if (fetchArgs.length === 2) {\n const [url, options] = fetchArgs ;\n\n return {\n url: getUrlFromResource(url),\n method: hasProp(options, 'method') ? String(options.method).toUpperCase() : 'GET',\n };\n }\n\n const arg = fetchArgs[0];\n return {\n url: getUrlFromResource(arg ),\n method: hasProp(arg, 'method') ? String(arg.method).toUpperCase() : 'GET',\n };\n}\n\n/** JSDoc */\nfunction instrumentXHR() {\n if (!('XMLHttpRequest' in WINDOW)) {\n return;\n }\n\n const xhrproto = XMLHttpRequest.prototype;\n\n fill(xhrproto, 'open', function (originalOpen) {\n return function ( ...args) {\n const url = args[1];\n const xhrInfo = (this[SENTRY_XHR_DATA_KEY] = {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n method: isString(args[0]) ? args[0].toUpperCase() : args[0],\n url: args[1],\n request_headers: {},\n });\n\n // if Sentry key appears in URL, don't capture it as a request\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (isString(url) && xhrInfo.method === 'POST' && url.match(/sentry_key/)) {\n this.__sentry_own_request__ = true;\n }\n\n const onreadystatechangeHandler = () => {\n // For whatever reason, this is not the same instance here as from the outer method\n const xhrInfo = this[SENTRY_XHR_DATA_KEY];\n\n if (!xhrInfo) {\n return;\n }\n\n if (this.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n xhrInfo.status_code = this.status;\n } catch (e) {\n /* do nothing */\n }\n\n triggerHandlers('xhr', {\n args: args ,\n endTimestamp: Date.now(),\n startTimestamp: Date.now(),\n xhr: this,\n } );\n }\n };\n\n if ('onreadystatechange' in this && typeof this.onreadystatechange === 'function') {\n fill(this, 'onreadystatechange', function (original) {\n return function ( ...readyStateArgs) {\n onreadystatechangeHandler();\n return original.apply(this, readyStateArgs);\n };\n });\n } else {\n this.addEventListener('readystatechange', onreadystatechangeHandler);\n }\n\n // Intercepting `setRequestHeader` to access the request headers of XHR instance.\n // This will only work for user/library defined headers, not for the default/browser-assigned headers.\n // Request cookies are also unavailable for XHR, as `Cookie` header can't be defined by `setRequestHeader`.\n fill(this, 'setRequestHeader', function (original) {\n return function ( ...setRequestHeaderArgs) {\n const [header, value] = setRequestHeaderArgs ;\n\n const xhrInfo = this[SENTRY_XHR_DATA_KEY];\n\n if (xhrInfo) {\n xhrInfo.request_headers[header.toLowerCase()] = value;\n }\n\n return original.apply(this, setRequestHeaderArgs);\n };\n });\n\n return originalOpen.apply(this, args);\n };\n });\n\n fill(xhrproto, 'send', function (originalSend) {\n return function ( ...args) {\n const sentryXhrData = this[SENTRY_XHR_DATA_KEY];\n if (sentryXhrData && args[0] !== undefined) {\n sentryXhrData.body = args[0];\n }\n\n triggerHandlers('xhr', {\n args,\n startTimestamp: Date.now(),\n xhr: this,\n });\n\n return originalSend.apply(this, args);\n };\n });\n}\n\nlet lastHref;\n\n/** JSDoc */\nfunction instrumentHistory() {\n if (!supportsHistory()) {\n return;\n }\n\n const oldOnPopState = WINDOW.onpopstate;\n WINDOW.onpopstate = function ( ...args) {\n const to = WINDOW.location.href;\n // keep track of the current URL state, as we always receive only the updated state\n const from = lastHref;\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n if (oldOnPopState) {\n // Apparently this can throw in Firefox when incorrectly implemented plugin is installed.\n // https://github.com/getsentry/sentry-javascript/issues/3344\n // https://github.com/bugsnag/bugsnag-js/issues/469\n try {\n return oldOnPopState.apply(this, args);\n } catch (_oO) {\n // no-empty\n }\n }\n };\n\n /** @hidden */\n function historyReplacementFunction(originalHistoryFunction) {\n return function ( ...args) {\n const url = args.length > 2 ? args[2] : undefined;\n if (url) {\n // coerce to string (this is what pushState does)\n const from = lastHref;\n const to = String(url);\n // keep track of the current URL state, as we always receive only the updated state\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n\n fill(WINDOW.history, 'pushState', historyReplacementFunction);\n fill(WINDOW.history, 'replaceState', historyReplacementFunction);\n}\n\nconst debounceDuration = 1000;\nlet debounceTimerID;\nlet lastCapturedEvent;\n\n/**\n * Decide whether the current event should finish the debounce of previously captured one.\n * @param previous previously captured event\n * @param current event to be captured\n */\nfunction shouldShortcircuitPreviousDebounce(previous, current) {\n // If there was no previous event, it should always be swapped for the new one.\n if (!previous) {\n return true;\n }\n\n // If both events have different type, then user definitely performed two separate actions. e.g. click + keypress.\n if (previous.type !== current.type) {\n return true;\n }\n\n try {\n // If both events have the same type, it's still possible that actions were performed on different targets.\n // e.g. 2 clicks on different buttons.\n if (previous.target !== current.target) {\n return true;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n // If both events have the same type _and_ same `target` (an element which triggered an event, _not necessarily_\n // to which an event listener was attached), we treat them as the same action, as we want to capture\n // only one breadcrumb. e.g. multiple clicks on the same button, or typing inside a user input box.\n return false;\n}\n\n/**\n * Decide whether an event should be captured.\n * @param event event to be captured\n */\nfunction shouldSkipDOMEvent(event) {\n // We are only interested in filtering `keypress` events for now.\n if (event.type !== 'keypress') {\n return false;\n }\n\n try {\n const target = event.target ;\n\n if (!target || !target.tagName) {\n return true;\n }\n\n // Only consider keypress events on actual input elements. This will disregard keypresses targeting body\n // e.g.tabbing through elements, hotkeys, etc.\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return false;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n return true;\n}\n\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param handler function that will be triggered\n * @param globalListener indicates whether event was captured by the global event listener\n * @returns wrapped breadcrumb events handler\n * @hidden\n */\nfunction makeDOMEventHandler(handler, globalListener = false) {\n return (event) => {\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors).\n // Ignore if we've already captured that event.\n if (!event || lastCapturedEvent === event) {\n return;\n }\n\n // We always want to skip _some_ events.\n if (shouldSkipDOMEvent(event)) {\n return;\n }\n\n const name = event.type === 'keypress' ? 'input' : event.type;\n\n // If there is no debounce timer, it means that we can safely capture the new event and store it for future comparisons.\n if (debounceTimerID === undefined) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n // If there is a debounce awaiting, see if the new event is different enough to treat it as a unique one.\n // If that's the case, emit the previous event and store locally the newly-captured DOM event.\n else if (shouldShortcircuitPreviousDebounce(lastCapturedEvent, event)) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n\n // Start a new debounce timer that will prevent us from capturing multiple events that should be grouped together.\n clearTimeout(debounceTimerID);\n debounceTimerID = WINDOW.setTimeout(() => {\n debounceTimerID = undefined;\n }, debounceDuration);\n };\n}\n\n/** JSDoc */\nfunction instrumentDOM() {\n if (!('document' in WINDOW)) {\n return;\n }\n\n // Make it so that any click or keypress that is unhandled / bubbled up all the way to the document triggers our dom\n // handlers. (Normally we have only one, which captures a breadcrumb for each click or keypress.) Do this before\n // we instrument `addEventListener` so that we don't end up attaching this handler twice.\n const triggerDOMHandler = triggerHandlers.bind(null, 'dom');\n const globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true);\n WINDOW.document.addEventListener('click', globalDOMEventHandler, false);\n WINDOW.document.addEventListener('keypress', globalDOMEventHandler, false);\n\n // After hooking into click and keypress events bubbled up to `document`, we also hook into user-handled\n // clicks & keypresses, by adding an event listener of our own to any element to which they add a listener. That\n // way, whenever one of their handlers is triggered, ours will be, too. (This is needed because their handler\n // could potentially prevent the event from bubbling up to our global listeners. This way, our handler are still\n // guaranteed to fire at least once.)\n ['EventTarget', 'Node'].forEach((target) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const proto = (WINDOW )[target] && (WINDOW )[target].prototype;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (originalAddEventListener) {\n return function (\n\n type,\n listener,\n options,\n ) {\n if (type === 'click' || type == 'keypress') {\n try {\n const el = this ;\n const handlers = (el.__sentry_instrumentation_handlers__ = el.__sentry_instrumentation_handlers__ || {});\n const handlerForType = (handlers[type] = handlers[type] || { refCount: 0 });\n\n if (!handlerForType.handler) {\n const handler = makeDOMEventHandler(triggerDOMHandler);\n handlerForType.handler = handler;\n originalAddEventListener.call(this, type, handler, options);\n }\n\n handlerForType.refCount++;\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalAddEventListener.call(this, type, listener, options);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (originalRemoveEventListener) {\n return function (\n\n type,\n listener,\n options,\n ) {\n if (type === 'click' || type == 'keypress') {\n try {\n const el = this ;\n const handlers = el.__sentry_instrumentation_handlers__ || {};\n const handlerForType = handlers[type];\n\n if (handlerForType) {\n handlerForType.refCount--;\n // If there are no longer any custom handlers of the current type on this element, we can remove ours, too.\n if (handlerForType.refCount <= 0) {\n originalRemoveEventListener.call(this, type, handlerForType.handler, options);\n handlerForType.handler = undefined;\n delete handlers[type]; // eslint-disable-line @typescript-eslint/no-dynamic-delete\n }\n\n // If there are no longer any custom handlers of any type on this element, cleanup everything.\n if (Object.keys(handlers).length === 0) {\n delete el.__sentry_instrumentation_handlers__;\n }\n }\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalRemoveEventListener.call(this, type, listener, options);\n };\n },\n );\n });\n}\n\nlet _oldOnErrorHandler = null;\n/** JSDoc */\nfunction instrumentError() {\n _oldOnErrorHandler = WINDOW.onerror;\n\n WINDOW.onerror = function (msg, url, line, column, error) {\n triggerHandlers('error', {\n column,\n error,\n line,\n msg,\n url,\n });\n\n if (_oldOnErrorHandler && !_oldOnErrorHandler.__SENTRY_LOADER__) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnErrorHandler.apply(this, arguments);\n }\n\n return false;\n };\n\n WINDOW.onerror.__SENTRY_INSTRUMENTED__ = true;\n}\n\nlet _oldOnUnhandledRejectionHandler = null;\n/** JSDoc */\nfunction instrumentUnhandledRejection() {\n _oldOnUnhandledRejectionHandler = WINDOW.onunhandledrejection;\n\n WINDOW.onunhandledrejection = function (e) {\n triggerHandlers('unhandledrejection', e);\n\n if (_oldOnUnhandledRejectionHandler && !_oldOnUnhandledRejectionHandler.__SENTRY_LOADER__) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n\n return true;\n };\n\n WINDOW.onunhandledrejection.__SENTRY_INSTRUMENTED__ = true;\n}\n\nexport { SENTRY_XHR_DATA_KEY, addInstrumentationHandler, parseFetchArgs };\n","import { logger } from './logger.js';\n\n/** Regular expression used to parse a Dsn. */\nconst DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+)?)?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;\n\nfunction isValidProtocol(protocol) {\n return protocol === 'http' || protocol === 'https';\n}\n\n/**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\nfunction dsnToString(dsn, withPassword = false) {\n const { host, path, pass, port, projectId, protocol, publicKey } = dsn;\n return (\n `${protocol}://${publicKey}${withPassword && pass ? `:${pass}` : ''}` +\n `@${host}${port ? `:${port}` : ''}/${path ? `${path}/` : path}${projectId}`\n );\n}\n\n/**\n * Parses a Dsn from a given string.\n *\n * @param str A Dsn as string\n * @returns Dsn as DsnComponents or undefined if @param str is not a valid DSN string\n */\nfunction dsnFromString(str) {\n const match = DSN_REGEX.exec(str);\n\n if (!match) {\n // This should be logged to the console\n // eslint-disable-next-line no-console\n console.error(`Invalid Sentry Dsn: ${str}`);\n return undefined;\n }\n\n const [protocol, publicKey, pass = '', host, port = '', lastPath] = match.slice(1);\n let path = '';\n let projectId = lastPath;\n\n const split = projectId.split('/');\n if (split.length > 1) {\n path = split.slice(0, -1).join('/');\n projectId = split.pop() ;\n }\n\n if (projectId) {\n const projectMatch = projectId.match(/^\\d+/);\n if (projectMatch) {\n projectId = projectMatch[0];\n }\n }\n\n return dsnFromComponents({ host, pass, path, projectId, port, protocol: protocol , publicKey });\n}\n\nfunction dsnFromComponents(components) {\n return {\n protocol: components.protocol,\n publicKey: components.publicKey || '',\n pass: components.pass || '',\n host: components.host,\n port: components.port || '',\n path: components.path || '',\n projectId: components.projectId,\n };\n}\n\nfunction validateDsn(dsn) {\n if (!(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n return true;\n }\n\n const { port, projectId, protocol } = dsn;\n\n const requiredComponents = ['protocol', 'publicKey', 'host', 'projectId'];\n const hasMissingRequiredComponent = requiredComponents.find(component => {\n if (!dsn[component]) {\n logger.error(`Invalid Sentry Dsn: ${component} missing`);\n return true;\n }\n return false;\n });\n\n if (hasMissingRequiredComponent) {\n return false;\n }\n\n if (!projectId.match(/^\\d+$/)) {\n logger.error(`Invalid Sentry Dsn: Invalid projectId ${projectId}`);\n return false;\n }\n\n if (!isValidProtocol(protocol)) {\n logger.error(`Invalid Sentry Dsn: Invalid protocol ${protocol}`);\n return false;\n }\n\n if (port && isNaN(parseInt(port, 10))) {\n logger.error(`Invalid Sentry Dsn: Invalid port ${port}`);\n return false;\n }\n\n return true;\n}\n\n/**\n * Creates a valid Sentry Dsn object, identifying a Sentry instance and project.\n * @returns a valid DsnComponents object or `undefined` if @param from is an invalid DSN source\n */\nfunction makeDsn(from) {\n const components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n if (!components || !validateDsn(components)) {\n return undefined;\n }\n return components;\n}\n\nexport { dsnFromString, dsnToString, makeDsn };\n","import { isNaN, isSyntheticEvent } from './is.js';\nimport { memoBuilder } from './memo.js';\nimport { convertToPlainObject } from './object.js';\nimport { getFunctionName } from './stacktrace.js';\n\n/**\n * Recursively normalizes the given object.\n *\n * - Creates a copy to prevent original input mutation\n * - Skips non-enumerable properties\n * - When stringifying, calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializable values (`undefined`/`NaN`/functions) to serializable format\n * - Translates known global objects/classes to a string representations\n * - Takes care of `Error` object serialization\n * - Optionally limits depth of final output\n * - Optionally limits number of properties/elements included in any single object/array\n *\n * @param input The object to be normalized.\n * @param depth The max depth to which to normalize the object. (Anything deeper stringified whole.)\n * @param maxProperties The max number of elements or properties to be included in any single array or\n * object in the normallized output.\n * @returns A normalized version of the object, or `\"**non-serializable**\"` if any errors are thrown during normalization.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction normalize(input, depth = 100, maxProperties = +Infinity) {\n try {\n // since we're at the outermost level, we don't provide a key\n return visit('', input, depth, maxProperties);\n } catch (err) {\n return { ERROR: `**non-serializable** (${err})` };\n }\n}\n\n/** JSDoc */\nfunction normalizeToSize(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n object,\n // Default Node.js REPL depth\n depth = 3,\n // 100kB, as 200kB is max payload size, so half sounds reasonable\n maxSize = 100 * 1024,\n) {\n const normalized = normalize(object, depth);\n\n if (jsonSize(normalized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n\n return normalized ;\n}\n\n/**\n * Visits a node to perform normalization on it\n *\n * @param key The key corresponding to the given node\n * @param value The node to be visited\n * @param depth Optional number indicating the maximum recursion depth\n * @param maxProperties Optional maximum number of properties/elements included in any single object/array\n * @param memo Optional Memo class handling decycling\n */\nfunction visit(\n key,\n value,\n depth = +Infinity,\n maxProperties = +Infinity,\n memo = memoBuilder(),\n) {\n const [memoize, unmemoize] = memo;\n\n // Get the simple cases out of the way first\n if (\n value == null || // this matches null and undefined -> eqeq not eqeqeq\n (['number', 'boolean', 'string'].includes(typeof value) && !isNaN(value))\n ) {\n return value ;\n }\n\n const stringified = stringifyValue(key, value);\n\n // Anything we could potentially dig into more (objects or arrays) will have come back as `\"[object XXXX]\"`.\n // Everything else will have already been serialized, so if we don't see that pattern, we're done.\n if (!stringified.startsWith('[object ')) {\n return stringified;\n }\n\n // From here on, we can assert that `value` is either an object or an array.\n\n // Do not normalize objects that we know have already been normalized. As a general rule, the\n // \"__sentry_skip_normalization__\" property should only be used sparingly and only should only be set on objects that\n // have already been normalized.\n if ((value )['__sentry_skip_normalization__']) {\n return value ;\n }\n\n // We can set `__sentry_override_normalization_depth__` on an object to ensure that from there\n // We keep a certain amount of depth.\n // This should be used sparingly, e.g. we use it for the redux integration to ensure we get a certain amount of state.\n const remainingDepth =\n typeof (value )['__sentry_override_normalization_depth__'] === 'number'\n ? ((value )['__sentry_override_normalization_depth__'] )\n : depth;\n\n // We're also done if we've reached the max depth\n if (remainingDepth === 0) {\n // At this point we know `serialized` is a string of the form `\"[object XXXX]\"`. Clean it up so it's just `\"[XXXX]\"`.\n return stringified.replace('object ', '');\n }\n\n // If we've already visited this branch, bail out, as it's circular reference. If not, note that we're seeing it now.\n if (memoize(value)) {\n return '[Circular ~]';\n }\n\n // If the value has a `toJSON` method, we call it to extract more information\n const valueWithToJSON = value ;\n if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') {\n try {\n const jsonValue = valueWithToJSON.toJSON();\n // We need to normalize the return value of `.toJSON()` in case it has circular references\n return visit('', jsonValue, remainingDepth - 1, maxProperties, memo);\n } catch (err) {\n // pass (The built-in `toJSON` failed, but we can still try to do it ourselves)\n }\n }\n\n // At this point we know we either have an object or an array, we haven't seen it before, and we're going to recurse\n // because we haven't yet reached the max depth. Create an accumulator to hold the results of visiting each\n // property/entry, and keep track of the number of items we add to it.\n const normalized = (Array.isArray(value) ? [] : {}) ;\n let numAdded = 0;\n\n // Before we begin, convert`Error` and`Event` instances into plain objects, since some of each of their relevant\n // properties are non-enumerable and otherwise would get missed.\n const visitable = convertToPlainObject(value );\n\n for (const visitKey in visitable) {\n // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) {\n continue;\n }\n\n if (numAdded >= maxProperties) {\n normalized[visitKey] = '[MaxProperties ~]';\n break;\n }\n\n // Recursively visit all the child nodes\n const visitValue = visitable[visitKey];\n normalized[visitKey] = visit(visitKey, visitValue, remainingDepth - 1, maxProperties, memo);\n\n numAdded++;\n }\n\n // Once we've visited all the branches, remove the parent from memo storage\n unmemoize(value);\n\n // Return accumulated values\n return normalized;\n}\n\n/* eslint-disable complexity */\n/**\n * Stringify the given value. Handles various known special values and types.\n *\n * Not meant to be used on simple primitives which already have a string representation, as it will, for example, turn\n * the number 1231 into \"[Object Number]\", nor on `null`, as it will throw.\n *\n * @param value The value to stringify\n * @returns A stringified representation of the given value\n */\nfunction stringifyValue(\n key,\n // this type is a tiny bit of a cheat, since this function does handle NaN (which is technically a number), but for\n // our internal use, it'll do\n value,\n) {\n try {\n if (key === 'domain' && value && typeof value === 'object' && (value )._events) {\n return '[Domain]';\n }\n\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\n }\n\n // It's safe to use `global`, `window`, and `document` here in this manner, as we are asserting using `typeof` first\n // which won't throw if they are not present.\n\n if (typeof global !== 'undefined' && value === global) {\n return '[Global]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof window !== 'undefined' && value === window) {\n return '[Window]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof document !== 'undefined' && value === document) {\n return '[Document]';\n }\n\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n\n if (typeof value === 'number' && value !== value) {\n return '[NaN]';\n }\n\n if (typeof value === 'function') {\n return `[Function: ${getFunctionName(value)}]`;\n }\n\n if (typeof value === 'symbol') {\n return `[${String(value)}]`;\n }\n\n // stringified BigInts are indistinguishable from regular numbers, so we need to label them to avoid confusion\n if (typeof value === 'bigint') {\n return `[BigInt: ${String(value)}]`;\n }\n\n // Now that we've knocked out all the special cases and the primitives, all we have left are objects. Simply casting\n // them to strings means that instances of classes which haven't defined their `toStringTag` will just come out as\n // `\"[object Object]\"`. If we instead look at the constructor's name (which is the same as the name of the class),\n // we can make sure that only plain objects come out that way.\n const objName = getConstructorName(value);\n\n // Handle HTML Elements\n if (/^HTML(\\w*)Element$/.test(objName)) {\n return `[HTMLElement: ${objName}]`;\n }\n\n return `[object ${objName}]`;\n } catch (err) {\n return `**non-serializable** (${err})`;\n }\n}\n/* eslint-enable complexity */\n\nfunction getConstructorName(value) {\n const prototype = Object.getPrototypeOf(value);\n\n return prototype ? prototype.constructor.name : 'null prototype';\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value) {\n // eslint-disable-next-line no-bitwise\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction jsonSize(value) {\n return utf8Length(JSON.stringify(value));\n}\n\nexport { normalize, normalizeToSize, visit as walk };\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * Helper to decycle json objects\n */\nfunction memoBuilder() {\n const hasWeakSet = typeof WeakSet === 'function';\n const inner = hasWeakSet ? new WeakSet() : [];\n function memoize(obj) {\n if (hasWeakSet) {\n if (inner.has(obj)) {\n return true;\n }\n inner.add(obj);\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < inner.length; i++) {\n const value = inner[i];\n if (value === obj) {\n return true;\n }\n }\n inner.push(obj);\n return false;\n }\n\n function unmemoize(obj) {\n if (hasWeakSet) {\n inner.delete(obj);\n } else {\n for (let i = 0; i < inner.length; i++) {\n if (inner[i] === obj) {\n inner.splice(i, 1);\n break;\n }\n }\n }\n }\n return [memoize, unmemoize];\n}\n\nexport { memoBuilder };\n","import { dsnToString } from './dsn.js';\nimport { normalize } from './normalize.js';\nimport { dropUndefinedKeys } from './object.js';\n\n/**\n * Creates an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nfunction createEnvelope(headers, items = []) {\n return [headers, items] ;\n}\n\n/**\n * Add an item to an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nfunction addItemToEnvelope(envelope, newItem) {\n const [headers, items] = envelope;\n return [headers, [...items, newItem]] ;\n}\n\n/**\n * Convenience function to loop through the items and item types of an envelope.\n * (This function was mostly created because working with envelope types is painful at the moment)\n *\n * If the callback returns true, the rest of the items will be skipped.\n */\nfunction forEachEnvelopeItem(\n envelope,\n callback,\n) {\n const envelopeItems = envelope[1];\n\n for (const envelopeItem of envelopeItems) {\n const envelopeItemType = envelopeItem[0].type;\n const result = callback(envelopeItem, envelopeItemType);\n\n if (result) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Returns true if the envelope contains any of the given envelope item types\n */\nfunction envelopeContainsItemType(envelope, types) {\n return forEachEnvelopeItem(envelope, (_, type) => types.includes(type));\n}\n\n/**\n * Encode a string to UTF8.\n */\nfunction encodeUTF8(input, textEncoder) {\n const utf8 = textEncoder || new TextEncoder();\n return utf8.encode(input);\n}\n\n/**\n * Serializes an envelope.\n */\nfunction serializeEnvelope(envelope, textEncoder) {\n const [envHeaders, items] = envelope;\n\n // Initially we construct our envelope as a string and only convert to binary chunks if we encounter binary data\n let parts = JSON.stringify(envHeaders);\n\n function append(next) {\n if (typeof parts === 'string') {\n parts = typeof next === 'string' ? parts + next : [encodeUTF8(parts, textEncoder), next];\n } else {\n parts.push(typeof next === 'string' ? encodeUTF8(next, textEncoder) : next);\n }\n }\n\n for (const item of items) {\n const [itemHeaders, payload] = item;\n\n append(`\\n${JSON.stringify(itemHeaders)}\\n`);\n\n if (typeof payload === 'string' || payload instanceof Uint8Array) {\n append(payload);\n } else {\n let stringifiedPayload;\n try {\n stringifiedPayload = JSON.stringify(payload);\n } catch (e) {\n // In case, despite all our efforts to keep `payload` circular-dependency-free, `JSON.strinify()` still\n // fails, we try again after normalizing it again with infinite normalization depth. This of course has a\n // performance impact but in this case a performance hit is better than throwing.\n stringifiedPayload = JSON.stringify(normalize(payload));\n }\n append(stringifiedPayload);\n }\n }\n\n return typeof parts === 'string' ? parts : concatBuffers(parts);\n}\n\nfunction concatBuffers(buffers) {\n const totalLength = buffers.reduce((acc, buf) => acc + buf.length, 0);\n\n const merged = new Uint8Array(totalLength);\n let offset = 0;\n for (const buffer of buffers) {\n merged.set(buffer, offset);\n offset += buffer.length;\n }\n\n return merged;\n}\n\n/**\n * Parses an envelope\n */\nfunction parseEnvelope(\n env,\n textEncoder,\n textDecoder,\n) {\n let buffer = typeof env === 'string' ? textEncoder.encode(env) : env;\n\n function readBinary(length) {\n const bin = buffer.subarray(0, length);\n // Replace the buffer with the remaining data excluding trailing newline\n buffer = buffer.subarray(length + 1);\n return bin;\n }\n\n function readJson() {\n let i = buffer.indexOf(0xa);\n // If we couldn't find a newline, we must have found the end of the buffer\n if (i < 0) {\n i = buffer.length;\n }\n\n return JSON.parse(textDecoder.decode(readBinary(i))) ;\n }\n\n const envelopeHeader = readJson();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const items = [];\n\n while (buffer.length) {\n const itemHeader = readJson();\n const binaryLength = typeof itemHeader.length === 'number' ? itemHeader.length : undefined;\n\n items.push([itemHeader, binaryLength ? readBinary(binaryLength) : readJson()]);\n }\n\n return [envelopeHeader, items];\n}\n\n/**\n * Creates attachment envelope items\n */\nfunction createAttachmentEnvelopeItem(\n attachment,\n textEncoder,\n) {\n const buffer = typeof attachment.data === 'string' ? encodeUTF8(attachment.data, textEncoder) : attachment.data;\n\n return [\n dropUndefinedKeys({\n type: 'attachment',\n length: buffer.length,\n filename: attachment.filename,\n content_type: attachment.contentType,\n attachment_type: attachment.attachmentType,\n }),\n buffer,\n ];\n}\n\nconst ITEM_TYPE_TO_DATA_CATEGORY_MAP = {\n session: 'session',\n sessions: 'session',\n attachment: 'attachment',\n transaction: 'transaction',\n event: 'error',\n client_report: 'internal',\n user_report: 'default',\n profile: 'profile',\n replay_event: 'replay',\n replay_recording: 'replay',\n check_in: 'monitor',\n};\n\n/**\n * Maps the type of an envelope item to a data category.\n */\nfunction envelopeItemTypeToDataCategory(type) {\n return ITEM_TYPE_TO_DATA_CATEGORY_MAP[type];\n}\n\n/** Extracts the minimal SDK info from from the metadata or an events */\nfunction getSdkMetadataForEnvelopeHeader(metadataOrEvent) {\n if (!metadataOrEvent || !metadataOrEvent.sdk) {\n return;\n }\n const { name, version } = metadataOrEvent.sdk;\n return { name, version };\n}\n\n/**\n * Creates event envelope headers, based on event, sdk info and tunnel\n * Note: This function was extracted from the core package to make it available in Replay\n */\nfunction createEventEnvelopeHeaders(\n event,\n sdkInfo,\n tunnel,\n dsn,\n) {\n const dynamicSamplingContext = event.sdkProcessingMetadata && event.sdkProcessingMetadata.dynamicSamplingContext;\n return {\n event_id: event.event_id ,\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!tunnel && { dsn: dsnToString(dsn) }),\n ...(dynamicSamplingContext && {\n trace: dropUndefinedKeys({ ...dynamicSamplingContext }),\n }),\n };\n}\n\nexport { addItemToEnvelope, createAttachmentEnvelopeItem, createEnvelope, createEventEnvelopeHeaders, envelopeContainsItemType, envelopeItemTypeToDataCategory, forEachEnvelopeItem, getSdkMetadataForEnvelopeHeader, parseEnvelope, serializeEnvelope };\n","/** An error emitted by Sentry SDKs and related utilities. */\nclass SentryError extends Error {\n /** Display name of this error instance. */\n\n constructor( message, logLevel = 'warn') {\n super(message);this.message = message;\n this.name = new.target.prototype.constructor.name;\n // This sets the prototype to be `Error`, not `SentryError`. It's unclear why we do this, but commenting this line\n // out causes various (seemingly totally unrelated) playwright tests consistently time out. FYI, this makes\n // instances of `SentryError` fail `obj instanceof SentryError` checks.\n Object.setPrototypeOf(this, new.target.prototype);\n this.logLevel = logLevel;\n }\n}\n\nexport { SentryError };\n","import { uuid4, dateTimestampInSeconds, resolvedSyncPromise, truncate, GLOBAL_OBJ, normalize } from '@sentry/utils';\nimport { DEFAULT_ENVIRONMENT } from '../constants.js';\nimport { Scope } from '../scope.js';\n\n/**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * Note: This also triggers callbacks for `addGlobalEventProcessor`, but not `beforeSend`.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n * @hidden\n */\nfunction prepareEvent(\n options,\n event,\n hint,\n scope,\n) {\n const { normalizeDepth = 3, normalizeMaxBreadth = 1000 } = options;\n const prepared = {\n ...event,\n event_id: event.event_id || hint.event_id || uuid4(),\n timestamp: event.timestamp || dateTimestampInSeconds(),\n };\n const integrations = hint.integrations || options.integrations.map(i => i.name);\n\n applyClientOptions(prepared, options);\n applyIntegrationsMetadata(prepared, integrations);\n\n // Only put debug IDs onto frames for error events.\n if (event.type === undefined) {\n applyDebugIds(prepared, options.stackParser);\n }\n\n // If we have scope given to us, use it as the base for further modifications.\n // This allows us to prevent unnecessary copying of data if `captureContext` is not provided.\n let finalScope = scope;\n if (hint.captureContext) {\n finalScope = Scope.clone(finalScope).update(hint.captureContext);\n }\n\n // We prepare the result here with a resolved Event.\n let result = resolvedSyncPromise(prepared);\n\n // This should be the last thing called, since we want that\n // {@link Hub.addEventProcessor} gets the finished prepared event.\n //\n // We need to check for the existence of `finalScope.getAttachments`\n // because `getAttachments` can be undefined if users are using an older version\n // of `@sentry/core` that does not have the `getAttachments` method.\n // See: https://github.com/getsentry/sentry-javascript/issues/5229\n if (finalScope) {\n // Collect attachments from the hint and scope\n if (finalScope.getAttachments) {\n const attachments = [...(hint.attachments || []), ...finalScope.getAttachments()];\n\n if (attachments.length) {\n hint.attachments = attachments;\n }\n }\n\n // In case we have a hub we reassign it.\n result = finalScope.applyToEvent(prepared, hint);\n }\n\n return result.then(evt => {\n if (evt) {\n // We apply the debug_meta field only after all event processors have ran, so that if any event processors modified\n // file names (e.g.the RewriteFrames integration) the filename -> debug ID relationship isn't destroyed.\n // This should not cause any PII issues, since we're only moving data that is already on the event and not adding\n // any new data\n applyDebugMeta(evt);\n }\n\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n }\n return evt;\n });\n}\n\n/**\n * Enhances event using the client configuration.\n * It takes care of all \"static\" values like environment, release and `dist`,\n * as well as truncating overly long values.\n * @param event event instance to be enhanced\n */\nfunction applyClientOptions(event, options) {\n const { environment, release, dist, maxValueLength = 250 } = options;\n\n if (!('environment' in event)) {\n event.environment = 'environment' in options ? environment : DEFAULT_ENVIRONMENT;\n }\n\n if (event.release === undefined && release !== undefined) {\n event.release = release;\n }\n\n if (event.dist === undefined && dist !== undefined) {\n event.dist = dist;\n }\n\n if (event.message) {\n event.message = truncate(event.message, maxValueLength);\n }\n\n const exception = event.exception && event.exception.values && event.exception.values[0];\n if (exception && exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n\n const request = event.request;\n if (request && request.url) {\n request.url = truncate(request.url, maxValueLength);\n }\n}\n\nconst debugIdStackParserCache = new WeakMap();\n\n/**\n * Puts debug IDs into the stack frames of an error event.\n */\nfunction applyDebugIds(event, stackParser) {\n const debugIdMap = GLOBAL_OBJ._sentryDebugIds;\n\n if (!debugIdMap) {\n return;\n }\n\n let debugIdStackFramesCache;\n const cachedDebugIdStackFrameCache = debugIdStackParserCache.get(stackParser);\n if (cachedDebugIdStackFrameCache) {\n debugIdStackFramesCache = cachedDebugIdStackFrameCache;\n } else {\n debugIdStackFramesCache = new Map();\n debugIdStackParserCache.set(stackParser, debugIdStackFramesCache);\n }\n\n // Build a map of filename -> debug_id\n const filenameDebugIdMap = Object.keys(debugIdMap).reduce((acc, debugIdStackTrace) => {\n let parsedStack;\n const cachedParsedStack = debugIdStackFramesCache.get(debugIdStackTrace);\n if (cachedParsedStack) {\n parsedStack = cachedParsedStack;\n } else {\n parsedStack = stackParser(debugIdStackTrace);\n debugIdStackFramesCache.set(debugIdStackTrace, parsedStack);\n }\n\n for (let i = parsedStack.length - 1; i >= 0; i--) {\n const stackFrame = parsedStack[i];\n if (stackFrame.filename) {\n acc[stackFrame.filename] = debugIdMap[debugIdStackTrace];\n break;\n }\n }\n return acc;\n }, {});\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception.values.forEach(exception => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n exception.stacktrace.frames.forEach(frame => {\n if (frame.filename) {\n frame.debug_id = filenameDebugIdMap[frame.filename];\n }\n });\n });\n } catch (e) {\n // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n }\n}\n\n/**\n * Moves debug IDs from the stack frames of an error event into the debug_meta field.\n */\nfunction applyDebugMeta(event) {\n // Extract debug IDs and filenames from the stack frames on the event.\n const filenameDebugIdMap = {};\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception.values.forEach(exception => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n exception.stacktrace.frames.forEach(frame => {\n if (frame.debug_id) {\n if (frame.abs_path) {\n filenameDebugIdMap[frame.abs_path] = frame.debug_id;\n } else if (frame.filename) {\n filenameDebugIdMap[frame.filename] = frame.debug_id;\n }\n delete frame.debug_id;\n }\n });\n });\n } catch (e) {\n // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n }\n\n if (Object.keys(filenameDebugIdMap).length === 0) {\n return;\n }\n\n // Fill debug_meta information\n event.debug_meta = event.debug_meta || {};\n event.debug_meta.images = event.debug_meta.images || [];\n const images = event.debug_meta.images;\n Object.keys(filenameDebugIdMap).forEach(filename => {\n images.push({\n type: 'sourcemap',\n code_file: filename,\n debug_id: filenameDebugIdMap[filename],\n });\n });\n}\n\n/**\n * This function adds all used integrations to the SDK info in the event.\n * @param event The event that will be filled with all integrations.\n */\nfunction applyIntegrationsMetadata(event, integrationNames) {\n if (integrationNames.length > 0) {\n event.sdk = event.sdk || {};\n event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationNames];\n }\n}\n\n/**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\nfunction normalizeEvent(event, depth, maxBreadth) {\n if (!event) {\n return null;\n }\n\n const normalized = {\n ...event,\n ...(event.breadcrumbs && {\n breadcrumbs: event.breadcrumbs.map(b => ({\n ...b,\n ...(b.data && {\n data: normalize(b.data, depth, maxBreadth),\n }),\n })),\n }),\n ...(event.user && {\n user: normalize(event.user, depth, maxBreadth),\n }),\n ...(event.contexts && {\n contexts: normalize(event.contexts, depth, maxBreadth),\n }),\n ...(event.extra && {\n extra: normalize(event.extra, depth, maxBreadth),\n }),\n };\n\n // event.contexts.trace stores information about a Transaction. Similarly,\n // event.spans[] stores information about child Spans. Given that a\n // Transaction is conceptually a Span, normalization should apply to both\n // Transactions and Spans consistently.\n // For now the decision is to skip normalization of Transactions and Spans,\n // so this block overwrites the normalized event to add back the original\n // Transaction information prior to normalization.\n if (event.contexts && event.contexts.trace && normalized.contexts) {\n normalized.contexts.trace = event.contexts.trace;\n\n // event.contexts.trace.data may contain circular/dangerous data so we need to normalize it\n if (event.contexts.trace.data) {\n normalized.contexts.trace.data = normalize(event.contexts.trace.data, depth, maxBreadth);\n }\n }\n\n // event.spans[].data may contain circular/dangerous data so we need to normalize it\n if (event.spans) {\n normalized.spans = event.spans.map(span => {\n // We cannot use the spread operator here because `toJSON` on `span` is non-enumerable\n if (span.data) {\n span.data = normalize(span.data, depth, maxBreadth);\n }\n return span;\n });\n }\n\n return normalized;\n}\n\nexport { applyDebugIds, applyDebugMeta, prepareEvent };\n","import { makeDsn, logger, checkOrSetAlreadyCaught, isPrimitive, resolvedSyncPromise, addItemToEnvelope, createAttachmentEnvelopeItem, SyncPromise, rejectedSyncPromise, SentryError, isThenable, isPlainObject } from '@sentry/utils';\nimport { getEnvelopeEndpointWithUrlEncodedAuth } from './api.js';\nimport { createEventEnvelope, createSessionEnvelope } from './envelope.js';\nimport { setupIntegrations, setupIntegration } from './integration.js';\nimport { updateSession } from './session.js';\nimport { getDynamicSamplingContextFromClient } from './tracing/dynamicSamplingContext.js';\nimport { prepareEvent } from './utils/prepareEvent.js';\n\nconst ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\n\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event, it is passed through\n * {@link BaseClient._prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient {\n * public constructor(options: NodeOptions) {\n * super(options);\n * }\n *\n * // ...\n * }\n */\nclass BaseClient {\n /** Options passed to the SDK. */\n\n /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n\n /** Array of set up integrations. */\n\n /** Indicates whether this client's integrations have been set up. */\n\n /** Number of calls being processed */\n\n /** Holds flushable */\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n\n /**\n * Initializes this client instance.\n *\n * @param options Options for the client.\n */\n constructor(options) {\n this._options = options;\n this._integrations = {};\n this._integrationsInitialized = false;\n this._numProcessing = 0;\n this._outcomes = {};\n this._hooks = {};\n\n if (options.dsn) {\n this._dsn = makeDsn(options.dsn);\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('No DSN provided, client will not do anything.');\n }\n\n if (this._dsn) {\n const url = getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, options);\n this._transport = options.transport({\n recordDroppedEvent: this.recordDroppedEvent.bind(this),\n ...options.transportOptions,\n url,\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n captureException(exception, hint, scope) {\n // ensure we haven't captured this very object before\n if (checkOrSetAlreadyCaught(exception)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId = hint && hint.event_id;\n\n this._process(\n this.eventFromException(exception, hint)\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureMessage(\n message,\n // eslint-disable-next-line deprecation/deprecation\n level,\n hint,\n scope,\n ) {\n let eventId = hint && hint.event_id;\n\n const promisedEvent = isPrimitive(message)\n ? this.eventFromMessage(String(message), level, hint)\n : this.eventFromException(message, hint);\n\n this._process(\n promisedEvent\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureEvent(event, hint, scope) {\n // ensure we haven't captured this very object before\n if (hint && hint.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId = hint && hint.event_id;\n\n this._process(\n this._captureEvent(event, hint, scope).then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureSession(session) {\n if (!this._isEnabled()) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('SDK not enabled, will not capture session.');\n return;\n }\n\n if (!(typeof session.release === 'string')) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Discarded session because of missing or non-string release');\n } else {\n this.sendSession(session);\n // After sending, we set init false to indicate it's not the first occurrence\n updateSession(session, { init: false });\n }\n }\n\n /**\n * @inheritDoc\n */\n getDsn() {\n return this._dsn;\n }\n\n /**\n * @inheritDoc\n */\n getOptions() {\n return this._options;\n }\n\n /**\n * @see SdkMetadata in @sentry/types\n *\n * @return The metadata of the SDK\n */\n getSdkMetadata() {\n return this._options._metadata;\n }\n\n /**\n * @inheritDoc\n */\n getTransport() {\n return this._transport;\n }\n\n /**\n * @inheritDoc\n */\n flush(timeout) {\n const transport = this._transport;\n if (transport) {\n return this._isClientDoneProcessing(timeout).then(clientFinished => {\n return transport.flush(timeout).then(transportFlushed => clientFinished && transportFlushed);\n });\n } else {\n return resolvedSyncPromise(true);\n }\n }\n\n /**\n * @inheritDoc\n */\n close(timeout) {\n return this.flush(timeout).then(result => {\n this.getOptions().enabled = false;\n return result;\n });\n }\n\n /**\n * Sets up the integrations\n */\n setupIntegrations() {\n if (this._isEnabled() && !this._integrationsInitialized) {\n this._integrations = setupIntegrations(this._options.integrations);\n this._integrationsInitialized = true;\n }\n }\n\n /**\n * Gets an installed integration by its `id`.\n *\n * @returns The installed integration or `undefined` if no integration with that `id` was installed.\n */\n getIntegrationById(integrationId) {\n return this._integrations[integrationId];\n }\n\n /**\n * @inheritDoc\n */\n getIntegration(integration) {\n try {\n return (this._integrations[integration.id] ) || null;\n } catch (_oO) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`Cannot retrieve integration ${integration.id} from the current Client`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n addIntegration(integration) {\n setupIntegration(integration, this._integrations);\n }\n\n /**\n * @inheritDoc\n */\n sendEvent(event, hint = {}) {\n if (this._dsn) {\n let env = createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel);\n\n for (const attachment of hint.attachments || []) {\n env = addItemToEnvelope(\n env,\n createAttachmentEnvelopeItem(\n attachment,\n this._options.transportOptions && this._options.transportOptions.textEncoder,\n ),\n );\n }\n\n const promise = this._sendEnvelope(env);\n if (promise) {\n promise.then(sendResponse => this.emit('afterSendEvent', event, sendResponse), null);\n }\n }\n }\n\n /**\n * @inheritDoc\n */\n sendSession(session) {\n if (this._dsn) {\n const env = createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel);\n void this._sendEnvelope(env);\n }\n }\n\n /**\n * @inheritDoc\n */\n recordDroppedEvent(reason, category, _event) {\n // Note: we use `event` in replay, where we overwrite this hook.\n\n if (this._options.sendClientReports) {\n // We want to track each category (error, transaction, session, replay_event) separately\n // but still keep the distinction between different type of outcomes.\n // We could use nested maps, but it's much easier to read and type this way.\n // A correct type for map-based implementation if we want to go that route\n // would be `Partial>>>`\n // With typescript 4.1 we could even use template literal types\n const key = `${reason}:${category}`;\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Adding outcome: \"${key}\"`);\n\n // The following works because undefined + 1 === NaN and NaN is falsy\n this._outcomes[key] = this._outcomes[key] + 1 || 1;\n }\n }\n\n // Keep on() & emit() signatures in sync with types' client.ts interface\n\n /** @inheritdoc */\n\n /** @inheritdoc */\n on(hook, callback) {\n if (!this._hooks[hook]) {\n this._hooks[hook] = [];\n }\n\n // @ts-ignore We assue the types are correct\n this._hooks[hook].push(callback);\n }\n\n /** @inheritdoc */\n\n /** @inheritdoc */\n emit(hook, ...rest) {\n if (this._hooks[hook]) {\n // @ts-ignore we cannot enforce the callback to match the hook\n this._hooks[hook].forEach(callback => callback(...rest));\n }\n }\n\n /** Updates existing session based on the provided event */\n _updateSessionFromEvent(session, event) {\n let crashed = false;\n let errored = false;\n const exceptions = event.exception && event.exception.values;\n\n if (exceptions) {\n errored = true;\n\n for (const ex of exceptions) {\n const mechanism = ex.mechanism;\n if (mechanism && mechanism.handled === false) {\n crashed = true;\n break;\n }\n }\n }\n\n // A session is updated and that session update is sent in only one of the two following scenarios:\n // 1. Session with non terminal status and 0 errors + an error occurred -> Will set error count to 1 and send update\n // 2. Session with non terminal status and 1 error + a crash occurred -> Will set status crashed and send update\n const sessionNonTerminal = session.status === 'ok';\n const shouldUpdateAndSend = (sessionNonTerminal && session.errors === 0) || (sessionNonTerminal && crashed);\n\n if (shouldUpdateAndSend) {\n updateSession(session, {\n ...(crashed && { status: 'crashed' }),\n errors: session.errors || Number(errored || crashed),\n });\n this.captureSession(session);\n }\n }\n\n /**\n * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying\n * \"no\" (resolving to `false`) in order to give the client a chance to potentially finish first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not\n * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and\n * `false` otherwise\n */\n _isClientDoneProcessing(timeout) {\n return new SyncPromise(resolve => {\n let ticked = 0;\n const tick = 1;\n\n const interval = setInterval(() => {\n if (this._numProcessing == 0) {\n clearInterval(interval);\n resolve(true);\n } else {\n ticked += tick;\n if (timeout && ticked >= timeout) {\n clearInterval(interval);\n resolve(false);\n }\n }\n }, tick);\n });\n }\n\n /** Determines whether this SDK is enabled and a valid Dsn is present. */\n _isEnabled() {\n return this.getOptions().enabled !== false && this._dsn !== undefined;\n }\n\n /**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n */\n _prepareEvent(event, hint, scope) {\n const options = this.getOptions();\n const integrations = Object.keys(this._integrations);\n if (!hint.integrations && integrations.length > 0) {\n hint.integrations = integrations;\n }\n return prepareEvent(options, event, hint, scope).then(evt => {\n if (evt === null) {\n return evt;\n }\n\n // If a trace context is not set on the event, we use the propagationContext set on the event to\n // generate a trace context. If the propagationContext does not have a dynamic sampling context, we\n // also generate one for it.\n const { propagationContext } = evt.sdkProcessingMetadata || {};\n const trace = evt.contexts && evt.contexts.trace;\n if (!trace && propagationContext) {\n const { traceId: trace_id, spanId, parentSpanId, dsc } = propagationContext ;\n evt.contexts = {\n trace: {\n trace_id,\n span_id: spanId,\n parent_span_id: parentSpanId,\n },\n ...evt.contexts,\n };\n\n const dynamicSamplingContext = dsc ? dsc : getDynamicSamplingContextFromClient(trace_id, this, scope);\n\n evt.sdkProcessingMetadata = {\n dynamicSamplingContext,\n ...evt.sdkProcessingMetadata,\n };\n }\n return evt;\n });\n }\n\n /**\n * Processes the event and logs an error in case of rejection\n * @param event\n * @param hint\n * @param scope\n */\n _captureEvent(event, hint = {}, scope) {\n return this._processEvent(event, hint, scope).then(\n finalEvent => {\n return finalEvent.event_id;\n },\n reason => {\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n // If something's gone wrong, log the error as a warning. If it's just us having used a `SentryError` for\n // control flow, log just the message (no stack) as a log-level log.\n const sentryError = reason ;\n if (sentryError.logLevel === 'log') {\n logger.log(sentryError.message);\n } else {\n logger.warn(sentryError);\n }\n }\n return undefined;\n },\n );\n }\n\n /**\n * Processes an event (either error or message) and sends it to Sentry.\n *\n * This also adds breadcrumbs and context information to the event. However,\n * platform specific meta data (such as the User's IP address) must be added\n * by the SDK implementor.\n *\n *\n * @param event The event to send to Sentry.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n */\n _processEvent(event, hint, scope) {\n const options = this.getOptions();\n const { sampleRate } = options;\n\n if (!this._isEnabled()) {\n return rejectedSyncPromise(new SentryError('SDK not enabled, will not capture event.', 'log'));\n }\n\n const isTransaction = isTransactionEvent(event);\n const isError = isErrorEvent(event);\n const eventType = event.type || 'error';\n const beforeSendLabel = `before send for type \\`${eventType}\\``;\n\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n // Sampling for transaction happens somewhere else\n if (isError && typeof sampleRate === 'number' && Math.random() > sampleRate) {\n this.recordDroppedEvent('sample_rate', 'error', event);\n return rejectedSyncPromise(\n new SentryError(\n `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n 'log',\n ),\n );\n }\n\n const dataCategory = eventType === 'replay_event' ? 'replay' : eventType;\n\n return this._prepareEvent(event, hint, scope)\n .then(prepared => {\n if (prepared === null) {\n this.recordDroppedEvent('event_processor', dataCategory, event);\n throw new SentryError('An event processor returned `null`, will not send event.', 'log');\n }\n\n const isInternalException = hint.data && (hint.data ).__sentry__ === true;\n if (isInternalException) {\n return prepared;\n }\n\n const result = processBeforeSend(options, prepared, hint);\n return _validateBeforeSendResult(result, beforeSendLabel);\n })\n .then(processedEvent => {\n if (processedEvent === null) {\n this.recordDroppedEvent('before_send', dataCategory, event);\n throw new SentryError(`${beforeSendLabel} returned \\`null\\`, will not send event.`, 'log');\n }\n\n const session = scope && scope.getSession();\n if (!isTransaction && session) {\n this._updateSessionFromEvent(session, processedEvent);\n }\n\n // None of the Sentry built event processor will update transaction name,\n // so if the transaction name has been changed by an event processor, we know\n // it has to come from custom event processor added by a user\n const transactionInfo = processedEvent.transaction_info;\n if (isTransaction && transactionInfo && processedEvent.transaction !== event.transaction) {\n const source = 'custom';\n processedEvent.transaction_info = {\n ...transactionInfo,\n source,\n };\n }\n\n this.sendEvent(processedEvent, hint);\n return processedEvent;\n })\n .then(null, reason => {\n if (reason instanceof SentryError) {\n throw reason;\n }\n\n this.captureException(reason, {\n data: {\n __sentry__: true,\n },\n originalException: reason,\n });\n throw new SentryError(\n `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: ${reason}`,\n );\n });\n }\n\n /**\n * Occupies the client with processing and event\n */\n _process(promise) {\n this._numProcessing++;\n void promise.then(\n value => {\n this._numProcessing--;\n return value;\n },\n reason => {\n this._numProcessing--;\n return reason;\n },\n );\n }\n\n /**\n * @inheritdoc\n */\n _sendEnvelope(envelope) {\n if (this._transport && this._dsn) {\n this.emit('beforeEnvelope', envelope);\n\n return this._transport.send(envelope).then(null, reason => {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Error while sending event:', reason);\n });\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Transport disabled');\n }\n }\n\n /**\n * Clears outcomes on this client and returns them.\n */\n _clearOutcomes() {\n const outcomes = this._outcomes;\n this._outcomes = {};\n return Object.keys(outcomes).map(key => {\n const [reason, category] = key.split(':') ;\n return {\n reason,\n category,\n quantity: outcomes[key],\n };\n });\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n\n}\n\n/**\n * Verifies that return value of configured `beforeSend` or `beforeSendTransaction` is of expected type, and returns the value if so.\n */\nfunction _validateBeforeSendResult(\n beforeSendResult,\n beforeSendLabel,\n) {\n const invalidValueError = `${beforeSendLabel} must return \\`null\\` or a valid event.`;\n if (isThenable(beforeSendResult)) {\n return beforeSendResult.then(\n event => {\n if (!isPlainObject(event) && event !== null) {\n throw new SentryError(invalidValueError);\n }\n return event;\n },\n e => {\n throw new SentryError(`${beforeSendLabel} rejected with ${e}`);\n },\n );\n } else if (!isPlainObject(beforeSendResult) && beforeSendResult !== null) {\n throw new SentryError(invalidValueError);\n }\n return beforeSendResult;\n}\n\n/**\n * Process the matching `beforeSendXXX` callback.\n */\nfunction processBeforeSend(\n options,\n event,\n hint,\n) {\n const { beforeSend, beforeSendTransaction } = options;\n\n if (isErrorEvent(event) && beforeSend) {\n return beforeSend(event, hint);\n }\n\n if (isTransactionEvent(event) && beforeSendTransaction) {\n return beforeSendTransaction(event, hint);\n }\n\n return event;\n}\n\nfunction isErrorEvent(event) {\n return event.type === undefined;\n}\n\nfunction isTransactionEvent(event) {\n return event.type === 'transaction';\n}\n\nexport { BaseClient };\n","import { makeDsn, dsnToString, urlEncode } from '@sentry/utils';\n\nconst SENTRY_API_VERSION = '7';\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn) {\n const protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n const port = dsn.port ? `:${dsn.port}` : '';\n return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : ''}/api/`;\n}\n\n/** Returns the ingest API endpoint for target. */\nfunction _getIngestEndpoint(dsn) {\n return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/envelope/`;\n}\n\n/** Returns a URL-encoded string with auth config suitable for a query string. */\nfunction _encodedAuth(dsn, sdkInfo) {\n return urlEncode({\n // We send only the minimum set of required information. See\n // https://github.com/getsentry/sentry-javascript/issues/2572.\n sentry_key: dsn.publicKey,\n sentry_version: SENTRY_API_VERSION,\n ...(sdkInfo && { sentry_client: `${sdkInfo.name}/${sdkInfo.version}` }),\n });\n}\n\n/**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nfunction getEnvelopeEndpointWithUrlEncodedAuth(\n dsn,\n // TODO (v8): Remove `tunnelOrOptions` in favor of `options`, and use the substitute code below\n // options: ClientOptions = {} as ClientOptions,\n tunnelOrOptions = {} ,\n) {\n // TODO (v8): Use this code instead\n // const { tunnel, _metadata = {} } = options;\n // return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, _metadata.sdk)}`;\n\n const tunnel = typeof tunnelOrOptions === 'string' ? tunnelOrOptions : tunnelOrOptions.tunnel;\n const sdkInfo =\n typeof tunnelOrOptions === 'string' || !tunnelOrOptions._metadata ? undefined : tunnelOrOptions._metadata.sdk;\n\n return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`;\n}\n\n/** Returns the url to the report dialog endpoint. */\nfunction getReportDialogEndpoint(\n dsnLike,\n dialogOptions\n\n,\n) {\n const dsn = makeDsn(dsnLike);\n if (!dsn) {\n return '';\n }\n\n const endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`;\n\n let encodedOptions = `dsn=${dsnToString(dsn)}`;\n for (const key in dialogOptions) {\n if (key === 'dsn') {\n continue;\n }\n\n if (key === 'user') {\n const user = dialogOptions.user;\n if (!user) {\n continue;\n }\n if (user.name) {\n encodedOptions += `&name=${encodeURIComponent(user.name)}`;\n }\n if (user.email) {\n encodedOptions += `&email=${encodeURIComponent(user.email)}`;\n }\n } else {\n encodedOptions += `&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] )}`;\n }\n }\n\n return `${endpoint}?${encodedOptions}`;\n}\n\nexport { getEnvelopeEndpointWithUrlEncodedAuth, getReportDialogEndpoint };\n","import { getSdkMetadataForEnvelopeHeader, dsnToString, createEnvelope, createEventEnvelopeHeaders } from '@sentry/utils';\n\n/**\n * Apply SdkInfo (name, version, packages, integrations) to the corresponding event key.\n * Merge with existing data if any.\n **/\nfunction enhanceEventWithSdkInfo(event, sdkInfo) {\n if (!sdkInfo) {\n return event;\n }\n event.sdk = event.sdk || {};\n event.sdk.name = event.sdk.name || sdkInfo.name;\n event.sdk.version = event.sdk.version || sdkInfo.version;\n event.sdk.integrations = [...(event.sdk.integrations || []), ...(sdkInfo.integrations || [])];\n event.sdk.packages = [...(event.sdk.packages || []), ...(sdkInfo.packages || [])];\n return event;\n}\n\n/** Creates an envelope from a Session */\nfunction createSessionEnvelope(\n session,\n dsn,\n metadata,\n tunnel,\n) {\n const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n const envelopeHeaders = {\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!tunnel && { dsn: dsnToString(dsn) }),\n };\n\n const envelopeItem =\n 'aggregates' in session ? [{ type: 'sessions' }, session] : [{ type: 'session' }, session.toJSON()];\n\n return createEnvelope(envelopeHeaders, [envelopeItem]);\n}\n\n/**\n * Create an Envelope from an event.\n */\nfunction createEventEnvelope(\n event,\n dsn,\n metadata,\n tunnel,\n) {\n const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n\n /*\n Note: Due to TS, event.type may be `replay_event`, theoretically.\n In practice, we never call `createEventEnvelope` with `replay_event` type,\n and we'd have to adjut a looot of types to make this work properly.\n We want to avoid casting this around, as that could lead to bugs (e.g. when we add another type)\n So the safe choice is to really guard against the replay_event type here.\n */\n const eventType = event.type && event.type !== 'replay_event' ? event.type : 'event';\n\n enhanceEventWithSdkInfo(event, metadata && metadata.sdk);\n\n const envelopeHeaders = createEventEnvelopeHeaders(event, sdkInfo, tunnel, dsn);\n\n // Prevent this data (which, if it exists, was used in earlier steps in the processing pipeline) from being sent to\n // sentry. (Note: Our use of this property comes and goes with whatever we might be debugging, whatever hacks we may\n // have temporarily added, etc. Even if we don't happen to be using it at some point in the future, let's not get rid\n // of this `delete`, lest we miss putting it back in the next time the property is in use.)\n delete event.sdkProcessingMetadata;\n\n const eventItem = [{ type: eventType }, event];\n return createEnvelope(envelopeHeaders, [eventItem]);\n}\n\nexport { createEventEnvelope, createSessionEnvelope };\n","import { isThenable } from './is.js';\n\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\n\n/** SyncPromise internal states */\nvar States; (function (States) {\n /** Pending */\n const PENDING = 0; States[States[\"PENDING\"] = PENDING] = \"PENDING\";\n /** Resolved / OK */\n const RESOLVED = 1; States[States[\"RESOLVED\"] = RESOLVED] = \"RESOLVED\";\n /** Rejected / Error */\n const REJECTED = 2; States[States[\"REJECTED\"] = REJECTED] = \"REJECTED\";\n})(States || (States = {}));\n\n// Overloads so we can call resolvedSyncPromise without arguments and generic argument\n\n/**\n * Creates a resolved sync promise.\n *\n * @param value the value to resolve the promise with\n * @returns the resolved sync promise\n */\nfunction resolvedSyncPromise(value) {\n return new SyncPromise(resolve => {\n resolve(value);\n });\n}\n\n/**\n * Creates a rejected sync promise.\n *\n * @param value the value to reject the promise with\n * @returns the rejected sync promise\n */\nfunction rejectedSyncPromise(reason) {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise {\n\n constructor(\n executor,\n ) {SyncPromise.prototype.__init.call(this);SyncPromise.prototype.__init2.call(this);SyncPromise.prototype.__init3.call(this);SyncPromise.prototype.__init4.call(this);\n this._state = States.PENDING;\n this._handlers = [];\n\n try {\n executor(this._resolve, this._reject);\n } catch (e) {\n this._reject(e);\n }\n }\n\n /** JSDoc */\n then(\n onfulfilled,\n onrejected,\n ) {\n return new SyncPromise((resolve, reject) => {\n this._handlers.push([\n false,\n result => {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result );\n } else {\n try {\n resolve(onfulfilled(result));\n } catch (e) {\n reject(e);\n }\n }\n },\n reason => {\n if (!onrejected) {\n reject(reason);\n } else {\n try {\n resolve(onrejected(reason));\n } catch (e) {\n reject(e);\n }\n }\n },\n ]);\n this._executeHandlers();\n });\n }\n\n /** JSDoc */\n catch(\n onrejected,\n ) {\n return this.then(val => val, onrejected);\n }\n\n /** JSDoc */\n finally(onfinally) {\n return new SyncPromise((resolve, reject) => {\n let val;\n let isRejected;\n\n return this.then(\n value => {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n },\n reason => {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n },\n ).then(() => {\n if (isRejected) {\n reject(val);\n return;\n }\n\n resolve(val );\n });\n });\n }\n\n /** JSDoc */\n __init() {this._resolve = (value) => {\n this._setResult(States.RESOLVED, value);\n };}\n\n /** JSDoc */\n __init2() {this._reject = (reason) => {\n this._setResult(States.REJECTED, reason);\n };}\n\n /** JSDoc */\n __init3() {this._setResult = (state, value) => {\n if (this._state !== States.PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n void (value ).then(this._resolve, this._reject);\n return;\n }\n\n this._state = state;\n this._value = value;\n\n this._executeHandlers();\n };}\n\n /** JSDoc */\n __init4() {this._executeHandlers = () => {\n if (this._state === States.PENDING) {\n return;\n }\n\n const cachedHandlers = this._handlers.slice();\n this._handlers = [];\n\n cachedHandlers.forEach(handler => {\n if (handler[0]) {\n return;\n }\n\n if (this._state === States.RESOLVED) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handler[1](this._value );\n }\n\n if (this._state === States.REJECTED) {\n handler[2](this._value);\n }\n\n handler[0] = true;\n });\n };}\n}\n\nexport { SyncPromise, rejectedSyncPromise, resolvedSyncPromise };\n","import { addNonEnumerableProperty } from './object.js';\nimport { snipLine } from './string.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nfunction uuid4() {\n const gbl = GLOBAL_OBJ ;\n const crypto = gbl.crypto || gbl.msCrypto;\n\n if (crypto && crypto.randomUUID) {\n return crypto.randomUUID().replace(/-/g, '');\n }\n\n const getRandomByte =\n crypto && crypto.getRandomValues ? () => crypto.getRandomValues(new Uint8Array(1))[0] : () => Math.random() * 16;\n\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n // Concatenating the following numbers as strings results in '10000000100040008000100000000000'\n return (([1e7] ) + 1e3 + 4e3 + 8e3 + 1e11).replace(/[018]/g, c =>\n // eslint-disable-next-line no-bitwise\n ((c ) ^ ((getRandomByte() & 15) >> ((c ) / 4))).toString(16),\n );\n}\n\nfunction getFirstException(event) {\n return event.exception && event.exception.values ? event.exception.values[0] : undefined;\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nfunction getEventDescription(event) {\n const { message, event_id: eventId } = event;\n if (message) {\n return message;\n }\n\n const firstException = getFirstException(event);\n if (firstException) {\n if (firstException.type && firstException.value) {\n return `${firstException.type}: ${firstException.value}`;\n }\n return firstException.type || firstException.value || eventId || '';\n }\n return eventId || '';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nfunction addExceptionTypeValue(event, value, type) {\n const exception = (event.exception = event.exception || {});\n const values = (exception.values = exception.values || []);\n const firstException = (values[0] = values[0] || {});\n if (!firstException.value) {\n firstException.value = value || '';\n }\n if (!firstException.type) {\n firstException.type = type || 'Error';\n }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nfunction addExceptionMechanism(event, newMechanism) {\n const firstException = getFirstException(event);\n if (!firstException) {\n return;\n }\n\n const defaultMechanism = { type: 'generic', handled: true };\n const currentMechanism = firstException.mechanism;\n firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n if (newMechanism && 'data' in newMechanism) {\n const mergedData = { ...(currentMechanism && currentMechanism.data), ...newMechanism.data };\n firstException.mechanism.data = mergedData;\n }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP =\n /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nfunction parseSemver(input) {\n const match = input.match(SEMVER_REGEXP) || [];\n const major = parseInt(match[1], 10);\n const minor = parseInt(match[2], 10);\n const patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nfunction addContextToFrame(lines, frame, linesOfContext = 5) {\n // When there is no line number in the frame, attaching context is nonsensical and will even break grouping\n if (frame.lineno === undefined) {\n return;\n }\n\n const maxLines = lines.length;\n const sourceLine = Math.max(Math.min(maxLines - 1, frame.lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line) => snipLine(line, 0));\n\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line) => snipLine(line, 0));\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nfunction checkOrSetAlreadyCaught(exception) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (exception && (exception ).__sentry_captured__) {\n return true;\n }\n\n try {\n // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n // `ExtraErrorData` integration\n addNonEnumerableProperty(exception , '__sentry_captured__', true);\n } catch (err) {\n // `exception` is a primitive, so we can't mark it seen\n }\n\n return false;\n}\n\n/**\n * Checks whether the given input is already an array, and if it isn't, wraps it in one.\n *\n * @param maybeArray Input to turn into an array, if necessary\n * @returns The input, if already an array, or an array with the input as the only element, if not\n */\nfunction arrayify(maybeArray) {\n return Array.isArray(maybeArray) ? maybeArray : [maybeArray];\n}\n\nexport { addContextToFrame, addExceptionMechanism, addExceptionTypeValue, arrayify, checkOrSetAlreadyCaught, getEventDescription, parseSemver, uuid4 };\n","import { getCurrentHub } from '@sentry/core';\nimport { addExceptionMechanism, resolvedSyncPromise, isErrorEvent, isDOMError, isDOMException, addExceptionTypeValue, isError, isPlainObject, isEvent, normalizeToSize, extractExceptionKeysForMessage } from '@sentry/utils';\n\n/**\n * This function creates an exception from a JavaScript Error\n */\nfunction exceptionFromError(stackParser, ex) {\n // Get the frames first since Opera can lose the stack if we touch anything else first\n const frames = parseStackFrames(stackParser, ex);\n\n const exception = {\n type: ex && ex.name,\n value: extractMessage(ex),\n };\n\n if (frames.length) {\n exception.stacktrace = { frames };\n }\n\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n\n return exception;\n}\n\n/**\n * @hidden\n */\nfunction eventFromPlainObject(\n stackParser,\n exception,\n syntheticException,\n isUnhandledRejection,\n) {\n const hub = getCurrentHub();\n const client = hub.getClient();\n const normalizeDepth = client && client.getOptions().normalizeDepth;\n\n const event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',\n value: getNonErrorObjectExceptionValue(exception, { isUnhandledRejection }),\n },\n ],\n },\n extra: {\n __serialized__: normalizeToSize(exception, normalizeDepth),\n },\n };\n\n if (syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n // event.exception.values[0] has been set above\n (event.exception ).values[0].stacktrace = { frames };\n }\n }\n\n return event;\n}\n\n/**\n * @hidden\n */\nfunction eventFromError(stackParser, ex) {\n return {\n exception: {\n values: [exceptionFromError(stackParser, ex)],\n },\n };\n}\n\n/** Parses stack frames from an error */\nfunction parseStackFrames(\n stackParser,\n ex,\n) {\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n const stacktrace = ex.stacktrace || ex.stack || '';\n\n const popSize = getPopSize(ex);\n\n try {\n return stackParser(stacktrace, popSize);\n } catch (e) {\n // no-empty\n }\n\n return [];\n}\n\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nconst reactMinifiedRegexp = /Minified React error #\\d+;/i;\n\nfunction getPopSize(ex) {\n if (ex) {\n if (typeof ex.framesToPop === 'number') {\n return ex.framesToPop;\n }\n\n if (reactMinifiedRegexp.test(ex.message)) {\n return 1;\n }\n }\n\n return 0;\n}\n\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\nfunction extractMessage(ex) {\n const message = ex && ex.message;\n if (!message) {\n return 'No error message';\n }\n if (message.error && typeof message.error.message === 'string') {\n return message.error.message;\n }\n return message;\n}\n\n/**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n * @hidden\n */\nfunction eventFromException(\n stackParser,\n exception,\n hint,\n attachStacktrace,\n) {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace);\n addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n event.level = 'error';\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nfunction eventFromMessage(\n stackParser,\n message,\n // eslint-disable-next-line deprecation/deprecation\n level = 'info',\n hint,\n attachStacktrace,\n) {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * @hidden\n */\nfunction eventFromUnknownInput(\n stackParser,\n exception,\n syntheticException,\n attachStacktrace,\n isUnhandledRejection,\n) {\n let event;\n\n if (isErrorEvent(exception ) && (exception ).error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n const errorEvent = exception ;\n return eventFromError(stackParser, errorEvent.error );\n }\n\n // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name\n // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be\n // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n if (isDOMError(exception) || isDOMException(exception )) {\n const domException = exception ;\n\n if ('stack' in (exception )) {\n event = eventFromError(stackParser, exception );\n } else {\n const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n const message = domException.message ? `${name}: ${domException.message}` : name;\n event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, message);\n }\n if ('code' in domException) {\n // eslint-disable-next-line deprecation/deprecation\n event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };\n }\n\n return event;\n }\n if (isError(exception)) {\n // we have a real Error object, do nothing\n return eventFromError(stackParser, exception);\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n // group on any key/value change.\n const objectException = exception ;\n event = eventFromPlainObject(stackParser, objectException, syntheticException, isUnhandledRejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(stackParser, exception , syntheticException, attachStacktrace);\n addExceptionTypeValue(event, `${exception}`, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n\n return event;\n}\n\n/**\n * @hidden\n */\nfunction eventFromString(\n stackParser,\n input,\n syntheticException,\n attachStacktrace,\n) {\n const event = {\n message: input,\n };\n\n if (attachStacktrace && syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n event.exception = {\n values: [{ value: input, stacktrace: { frames } }],\n };\n }\n }\n\n return event;\n}\n\nfunction getNonErrorObjectExceptionValue(\n exception,\n { isUnhandledRejection },\n) {\n const keys = extractExceptionKeysForMessage(exception);\n const captureType = isUnhandledRejection ? 'promise rejection' : 'exception';\n\n // Some ErrorEvent instances do not have an `error` property, which is why they are not handled before\n // We still want to try to get a decent message for these cases\n if (isErrorEvent(exception)) {\n return `Event \\`ErrorEvent\\` captured as ${captureType} with message \\`${exception.message}\\``;\n }\n\n if (isEvent(exception)) {\n const className = getObjectClassName(exception);\n return `Event \\`${className}\\` (type=${exception.type}) captured as ${captureType}`;\n }\n\n return `Object captured as ${captureType} with keys: ${keys}`;\n}\n\nfunction getObjectClassName(obj) {\n try {\n const prototype = Object.getPrototypeOf(obj);\n return prototype ? prototype.constructor.name : undefined;\n } catch (e) {\n // ignore errors here\n }\n}\n\nexport { eventFromError, eventFromException, eventFromMessage, eventFromPlainObject, eventFromString, eventFromUnknownInput, exceptionFromError, parseStackFrames };\n","import { withScope, captureException } from '@sentry/core';\nimport { GLOBAL_OBJ, getOriginalFunction, markFunctionWrapped, addNonEnumerableProperty, addExceptionTypeValue, addExceptionMechanism } from '@sentry/utils';\n\nconst WINDOW = GLOBAL_OBJ ;\n\nlet ignoreOnError = 0;\n\n/**\n * @hidden\n */\nfunction shouldIgnoreOnError() {\n return ignoreOnError > 0;\n}\n\n/**\n * @hidden\n */\nfunction ignoreNextOnError() {\n // onerror should trigger before setTimeout\n ignoreOnError++;\n setTimeout(() => {\n ignoreOnError--;\n });\n}\n\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap. It is generally safe to pass an unbound function, because the returned wrapper always\n * has a correct `this` context.\n * @returns The wrapped function.\n * @hidden\n */\nfunction wrap(\n fn,\n options\n\n = {},\n before,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n) {\n // for future readers what this does is wrap a function and then create\n // a bi-directional wrapping between them.\n //\n // example: wrapped = wrap(original);\n // original.__sentry_wrapped__ -> wrapped\n // wrapped.__sentry_original__ -> original\n\n if (typeof fn !== 'function') {\n return fn;\n }\n\n try {\n // if we're dealing with a function that was previously wrapped, return\n // the original wrapper.\n const wrapper = fn.__sentry_wrapped__;\n if (wrapper) {\n return wrapper;\n }\n\n // We don't wanna wrap it twice\n if (getOriginalFunction(fn)) {\n return fn;\n }\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return fn;\n }\n\n /* eslint-disable prefer-rest-params */\n // It is important that `sentryWrapped` is not an arrow function to preserve the context of `this`\n const sentryWrapped = function () {\n const args = Array.prototype.slice.call(arguments);\n\n try {\n if (before && typeof before === 'function') {\n before.apply(this, arguments);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n const wrappedArguments = args.map((arg) => wrap(arg, options));\n\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.apply(this, wrappedArguments);\n } catch (ex) {\n ignoreNextOnError();\n\n withScope((scope) => {\n scope.addEventProcessor((event) => {\n if (options.mechanism) {\n addExceptionTypeValue(event, undefined, undefined);\n addExceptionMechanism(event, options.mechanism);\n }\n\n event.extra = {\n ...event.extra,\n arguments: args,\n };\n\n return event;\n });\n\n captureException(ex);\n });\n\n throw ex;\n }\n };\n /* eslint-enable prefer-rest-params */\n\n // Accessing some objects may throw\n // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n try {\n for (const property in fn) {\n if (Object.prototype.hasOwnProperty.call(fn, property)) {\n sentryWrapped[property] = fn[property];\n }\n }\n } catch (_oO) {} // eslint-disable-line no-empty\n\n // Signal that this function has been wrapped/filled already\n // for both debugging and to prevent it to being wrapped/filled twice\n markFunctionWrapped(sentryWrapped, fn);\n\n addNonEnumerableProperty(fn, '__sentry_wrapped__', sentryWrapped);\n\n // Restore original function name (not all browsers allow that)\n try {\n const descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name') ;\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get() {\n return fn.name;\n },\n });\n }\n // eslint-disable-next-line no-empty\n } catch (_oO) {}\n\n return sentryWrapped;\n}\n\n/**\n * All properties the report dialog supports\n */\n\nexport { WINDOW, ignoreNextOnError, shouldIgnoreOnError, wrap };\n","// Note: Ideally the `SeverityLevel` type would be derived from `validSeverityLevels`, but that would mean either\n//\n// a) moving `validSeverityLevels` to `@sentry/types`,\n// b) moving the`SeverityLevel` type here, or\n// c) importing `validSeverityLevels` from here into `@sentry/types`.\n//\n// Option A would make `@sentry/types` a runtime dependency of `@sentry/utils` (not good), and options B and C would\n// create a circular dependency between `@sentry/types` and `@sentry/utils` (also not good). So a TODO accompanying the\n// type, reminding anyone who changes it to change this list also, will have to do.\n\nconst validSeverityLevels = ['fatal', 'error', 'warning', 'log', 'info', 'debug'];\n\n/**\n * Converts a string-based level into a member of the deprecated {@link Severity} enum.\n *\n * @deprecated `severityFromString` is deprecated. Please use `severityLevelFromString` instead.\n *\n * @param level String representation of Severity\n * @returns Severity\n */\nfunction severityFromString(level) {\n return severityLevelFromString(level) ;\n}\n\n/**\n * Converts a string-based level into a `SeverityLevel`, normalizing it along the way.\n *\n * @param level String representation of desired `SeverityLevel`.\n * @returns The `SeverityLevel` corresponding to the given string, or 'log' if the string isn't a valid level.\n */\nfunction severityLevelFromString(level) {\n return (level === 'warn' ? 'warning' : validSeverityLevels.includes(level) ? level : 'log') ;\n}\n\nexport { severityFromString, severityLevelFromString, validSeverityLevels };\n","/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nfunction parseUrl(url) {\n if (!url) {\n return {};\n }\n\n const match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n if (!match) {\n return {};\n }\n\n // coerce to undefined values to empty string so we don't get 'undefined'\n const query = match[6] || '';\n const fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n search: query,\n hash: fragment,\n relative: match[5] + query + fragment, // everything minus origin\n };\n}\n\n/**\n * Strip the query string and fragment off of a given URL or path (if present)\n *\n * @param urlPath Full URL or path, including possible query string and/or fragment\n * @returns URL or path without query string or fragment\n */\nfunction stripUrlQueryAndFragment(urlPath) {\n // eslint-disable-next-line no-useless-escape\n return urlPath.split(/[\\?#]/, 1)[0];\n}\n\n/**\n * Returns number of URL segments of a passed string URL.\n */\nfunction getNumberOfUrlSegments(url) {\n // split at '/' or at '\\/' to split regex urls correctly\n return url.split(/\\\\?\\//).filter(s => s.length > 0 && s !== ',').length;\n}\n\n/**\n * Takes a URL object and returns a sanitized string which is safe to use as span description\n * see: https://develop.sentry.dev/sdk/data-handling/#structuring-data\n */\nfunction getSanitizedUrlString(url) {\n const { protocol, host, path } = url;\n\n const filteredHost =\n (host &&\n host\n // Always filter out authority\n .replace(/^.*@/, '[filtered]:[filtered]@')\n // Don't show standard :80 (http) and :443 (https) ports to reduce the noise\n .replace(':80', '')\n .replace(':443', '')) ||\n '';\n\n return `${protocol ? `${protocol}://` : ''}${filteredHost}${path}`;\n}\n\nexport { getNumberOfUrlSegments, getSanitizedUrlString, parseUrl, stripUrlQueryAndFragment };\n","import { getCurrentHub } from '@sentry/core';\nimport { addInstrumentationHandler, getEventDescription, severityLevelFromString, safeJoin, SENTRY_XHR_DATA_KEY, parseUrl, logger, htmlTreeAsString } from '@sentry/utils';\nimport { WINDOW } from '../helpers.js';\n\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n\n/** maxStringLength gets capped to prevent 100 breadcrumbs exceeding 1MB event payload size */\nconst MAX_ALLOWED_STRING_LENGTH = 1024;\n\nconst BREADCRUMB_INTEGRATION_ID = 'Breadcrumbs';\n\n/**\n * Default Breadcrumbs instrumentations\n * TODO: Deprecated - with v6, this will be renamed to `Instrument`\n */\nclass Breadcrumbs {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = BREADCRUMB_INTEGRATION_ID;}\n\n /**\n * @inheritDoc\n */\n\n /**\n * Options of the breadcrumbs integration.\n */\n // This field is public, because we use it in the browser client to check if the `sentry` option is enabled.\n\n /**\n * @inheritDoc\n */\n constructor(options) {\n this.name = Breadcrumbs.id;\n this.options = {\n console: true,\n dom: true,\n fetch: true,\n history: true,\n sentry: true,\n xhr: true,\n ...options,\n };\n }\n\n /**\n * Instrument browser built-ins w/ breadcrumb capturing\n * - Console API\n * - DOM API (click/typing)\n * - XMLHttpRequest API\n * - Fetch API\n * - History API\n */\n setupOnce() {\n if (this.options.console) {\n addInstrumentationHandler('console', _consoleBreadcrumb);\n }\n if (this.options.dom) {\n addInstrumentationHandler('dom', _domBreadcrumb(this.options.dom));\n }\n if (this.options.xhr) {\n addInstrumentationHandler('xhr', _xhrBreadcrumb);\n }\n if (this.options.fetch) {\n addInstrumentationHandler('fetch', _fetchBreadcrumb);\n }\n if (this.options.history) {\n addInstrumentationHandler('history', _historyBreadcrumb);\n }\n }\n\n /**\n * Adds a breadcrumb for Sentry events or transactions if this option is enabled.\n */\n addSentryBreadcrumb(event) {\n if (this.options.sentry) {\n getCurrentHub().addBreadcrumb(\n {\n category: `sentry.${event.type === 'transaction' ? 'transaction' : 'event'}`,\n event_id: event.event_id,\n level: event.level,\n message: getEventDescription(event),\n },\n {\n event,\n },\n );\n }\n }\n} Breadcrumbs.__initStatic();\n\n/**\n * A HOC that creaes a function that creates breadcrumbs from DOM API calls.\n * This is a HOC so that we get access to dom options in the closure.\n */\nfunction _domBreadcrumb(dom) {\n function _innerDomBreadcrumb(handlerData) {\n let target;\n let keyAttrs = typeof dom === 'object' ? dom.serializeAttribute : undefined;\n\n let maxStringLength =\n typeof dom === 'object' && typeof dom.maxStringLength === 'number' ? dom.maxStringLength : undefined;\n if (maxStringLength && maxStringLength > MAX_ALLOWED_STRING_LENGTH) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `\\`dom.maxStringLength\\` cannot exceed ${MAX_ALLOWED_STRING_LENGTH}, but a value of ${maxStringLength} was configured. Sentry will use ${MAX_ALLOWED_STRING_LENGTH} instead.`,\n );\n maxStringLength = MAX_ALLOWED_STRING_LENGTH;\n }\n\n if (typeof keyAttrs === 'string') {\n keyAttrs = [keyAttrs];\n }\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n const event = handlerData.event ;\n target = _isEvent(event)\n ? htmlTreeAsString(event.target, { keyAttrs, maxStringLength })\n : htmlTreeAsString(event, { keyAttrs, maxStringLength });\n } catch (e) {\n target = '';\n }\n\n if (target.length === 0) {\n return;\n }\n\n getCurrentHub().addBreadcrumb(\n {\n category: `ui.${handlerData.name}`,\n message: target,\n },\n {\n event: handlerData.event,\n name: handlerData.name,\n global: handlerData.global,\n },\n );\n }\n\n return _innerDomBreadcrumb;\n}\n\n/**\n * Creates breadcrumbs from console API calls\n */\nfunction _consoleBreadcrumb(handlerData) {\n // This is a hack to fix a Vue3-specific bug that causes an infinite loop of\n // console warnings. This happens when a Vue template is rendered with\n // an undeclared variable, which we try to stringify, ultimately causing\n // Vue to issue another warning which repeats indefinitely.\n // see: https://github.com/getsentry/sentry-javascript/pull/6010\n // see: https://github.com/getsentry/sentry-javascript/issues/5916\n for (let i = 0; i < handlerData.args.length; i++) {\n if (handlerData.args[i] === 'ref=Ref<') {\n handlerData.args[i + 1] = 'viewRef';\n break;\n }\n }\n const breadcrumb = {\n category: 'console',\n data: {\n arguments: handlerData.args,\n logger: 'console',\n },\n level: severityLevelFromString(handlerData.level),\n message: safeJoin(handlerData.args, ' '),\n };\n\n if (handlerData.level === 'assert') {\n if (handlerData.args[0] === false) {\n breadcrumb.message = `Assertion failed: ${safeJoin(handlerData.args.slice(1), ' ') || 'console.assert'}`;\n breadcrumb.data.arguments = handlerData.args.slice(1);\n } else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n\n getCurrentHub().addBreadcrumb(breadcrumb, {\n input: handlerData.args,\n level: handlerData.level,\n });\n}\n\n/**\n * Creates breadcrumbs from XHR API calls\n */\nfunction _xhrBreadcrumb(handlerData) {\n const { startTimestamp, endTimestamp } = handlerData;\n\n const sentryXhrData = handlerData.xhr[SENTRY_XHR_DATA_KEY];\n\n // We only capture complete, non-sentry requests\n if (!startTimestamp || !endTimestamp || !sentryXhrData) {\n return;\n }\n\n const { method, url, status_code, body } = sentryXhrData;\n\n const data = {\n method,\n url,\n status_code,\n };\n\n const hint = {\n xhr: handlerData.xhr,\n input: body,\n startTimestamp,\n endTimestamp,\n };\n\n getCurrentHub().addBreadcrumb(\n {\n category: 'xhr',\n data,\n type: 'http',\n },\n hint,\n );\n}\n\n/**\n * Creates breadcrumbs from fetch API calls\n */\nfunction _fetchBreadcrumb(handlerData) {\n const { startTimestamp, endTimestamp } = handlerData;\n\n // We only capture complete fetch requests\n if (!endTimestamp) {\n return;\n }\n\n if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === 'POST') {\n // We will not create breadcrumbs for fetch requests that contain `sentry_key` (internal sentry requests)\n return;\n }\n\n if (handlerData.error) {\n const data = handlerData.fetchData;\n const hint = {\n data: handlerData.error,\n input: handlerData.args,\n startTimestamp,\n endTimestamp,\n };\n\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data,\n level: 'error',\n type: 'http',\n },\n hint,\n );\n } else {\n const data = {\n ...handlerData.fetchData,\n status_code: handlerData.response && handlerData.response.status,\n };\n const hint = {\n input: handlerData.args,\n response: handlerData.response,\n startTimestamp,\n endTimestamp,\n };\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data,\n type: 'http',\n },\n hint,\n );\n }\n}\n\n/**\n * Creates breadcrumbs from history API calls\n */\nfunction _historyBreadcrumb(handlerData) {\n let from = handlerData.from;\n let to = handlerData.to;\n const parsedLoc = parseUrl(WINDOW.location.href);\n let parsedFrom = parseUrl(from);\n const parsedTo = parseUrl(to);\n\n // Initial pushState doesn't provide `from` information\n if (!parsedFrom.path) {\n parsedFrom = parsedLoc;\n }\n\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n to = parsedTo.relative;\n }\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n from = parsedFrom.relative;\n }\n\n getCurrentHub().addBreadcrumb({\n category: 'navigation',\n data: {\n from,\n to,\n },\n });\n}\n\nfunction _isEvent(event) {\n return !!event && !!(event ).target;\n}\n\nexport { BREADCRUMB_INTEGRATION_ID, Breadcrumbs };\n","import { BaseClient, SDK_VERSION } from '@sentry/core';\nimport { getSDKSource, logger, createClientReportEnvelope, dsnToString } from '@sentry/utils';\nimport { eventFromException, eventFromMessage } from './eventbuilder.js';\nimport { WINDOW } from './helpers.js';\nimport { BREADCRUMB_INTEGRATION_ID } from './integrations/breadcrumbs.js';\nimport { createUserFeedbackEnvelope } from './userfeedback.js';\n\n/**\n * Configuration options for the Sentry Browser SDK.\n * @see @sentry/types Options for more information.\n */\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nclass BrowserClient extends BaseClient {\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n constructor(options) {\n const sdkSource = WINDOW.SENTRY_SDK_SOURCE || getSDKSource();\n\n options._metadata = options._metadata || {};\n options._metadata.sdk = options._metadata.sdk || {\n name: 'sentry.javascript.browser',\n packages: [\n {\n name: `${sdkSource}:@sentry/browser`,\n version: SDK_VERSION,\n },\n ],\n version: SDK_VERSION,\n };\n\n super(options);\n\n if (options.sendClientReports && WINDOW.document) {\n WINDOW.document.addEventListener('visibilitychange', () => {\n if (WINDOW.document.visibilityState === 'hidden') {\n this._flushOutcomes();\n }\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n eventFromException(exception, hint) {\n return eventFromException(this._options.stackParser, exception, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n eventFromMessage(\n message,\n // eslint-disable-next-line deprecation/deprecation\n level = 'info',\n hint,\n ) {\n return eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n sendEvent(event, hint) {\n // We only want to add the sentry event breadcrumb when the user has the breadcrumb integration installed and\n // activated its `sentry` option.\n // We also do not want to use the `Breadcrumbs` class here directly, because we do not want it to be included in\n // bundles, if it is not used by the SDK.\n // This all sadly is a bit ugly, but we currently don't have a \"pre-send\" hook on the integrations so we do it this\n // way for now.\n const breadcrumbIntegration = this.getIntegrationById(BREADCRUMB_INTEGRATION_ID) ;\n // We check for definedness of `addSentryBreadcrumb` in case users provided their own integration with id\n // \"Breadcrumbs\" that does not have this function.\n if (breadcrumbIntegration && breadcrumbIntegration.addSentryBreadcrumb) {\n breadcrumbIntegration.addSentryBreadcrumb(event);\n }\n\n super.sendEvent(event, hint);\n }\n\n /**\n * Sends user feedback to Sentry.\n */\n captureUserFeedback(feedback) {\n if (!this._isEnabled()) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('SDK not enabled, will not capture user feedback.');\n return;\n }\n\n const envelope = createUserFeedbackEnvelope(feedback, {\n metadata: this.getSdkMetadata(),\n dsn: this.getDsn(),\n tunnel: this.getOptions().tunnel,\n });\n void this._sendEnvelope(envelope);\n }\n\n /**\n * @inheritDoc\n */\n _prepareEvent(event, hint, scope) {\n event.platform = event.platform || 'javascript';\n return super._prepareEvent(event, hint, scope);\n }\n\n /**\n * Sends client reports as an envelope.\n */\n _flushOutcomes() {\n const outcomes = this._clearOutcomes();\n\n if (outcomes.length === 0) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('No outcomes to send');\n return;\n }\n\n if (!this._dsn) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('No dsn provided, will not send outcomes');\n return;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('Sending outcomes:', outcomes);\n\n const envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn));\n void this._sendEnvelope(envelope);\n }\n}\n\nexport { BrowserClient };\n","const SDK_VERSION = '7.64.0';\n\nexport { SDK_VERSION };\n","import { dsnToString, createEnvelope } from '@sentry/utils';\n\n/**\n * Creates an envelope from a user feedback.\n */\nfunction createUserFeedbackEnvelope(\n feedback,\n {\n metadata,\n tunnel,\n dsn,\n }\n\n,\n) {\n const headers = {\n event_id: feedback.event_id,\n sent_at: new Date().toISOString(),\n ...(metadata &&\n metadata.sdk && {\n sdk: {\n name: metadata.sdk.name,\n version: metadata.sdk.version,\n },\n }),\n ...(!!tunnel && !!dsn && { dsn: dsnToString(dsn) }),\n };\n const item = createUserFeedbackEnvelopeItem(feedback);\n\n return createEnvelope(headers, [item]);\n}\n\nfunction createUserFeedbackEnvelopeItem(feedback) {\n const feedbackHeaders = {\n type: 'user_report',\n };\n return [feedbackHeaders, feedback];\n}\n\nexport { createUserFeedbackEnvelope };\n","import { createEnvelope } from './envelope.js';\nimport { dateTimestampInSeconds } from './time.js';\n\n/**\n * Creates client report envelope\n * @param discarded_events An array of discard events\n * @param dsn A DSN that can be set on the header. Optional.\n */\nfunction createClientReportEnvelope(\n discarded_events,\n dsn,\n timestamp,\n) {\n const clientReportItem = [\n { type: 'client_report' },\n {\n timestamp: timestamp || dateTimestampInSeconds(),\n discarded_events,\n },\n ];\n return createEnvelope(dsn ? { dsn } : {}, [clientReportItem]);\n}\n\nexport { createClientReportEnvelope };\n","import { getCurrentHub } from '@sentry/core';\nimport { addInstrumentationHandler, isString, isPrimitive, isErrorEvent, getLocationHref, logger, addExceptionMechanism } from '@sentry/utils';\nimport { eventFromUnknownInput } from '../eventbuilder.js';\nimport { shouldIgnoreOnError } from '../helpers.js';\n\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n\n/** Global handlers */\nclass GlobalHandlers {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'GlobalHandlers';}\n\n /**\n * @inheritDoc\n */\n\n /** JSDoc */\n\n /**\n * Stores references functions to installing handlers. Will set to undefined\n * after they have been run so that they are not used twice.\n */\n\n /** JSDoc */\n constructor(options) {\n this.name = GlobalHandlers.id;\n this._options = {\n onerror: true,\n onunhandledrejection: true,\n ...options,\n };\n\n this._installFunc = {\n onerror: _installGlobalOnErrorHandler,\n onunhandledrejection: _installGlobalOnUnhandledRejectionHandler,\n };\n }\n /**\n * @inheritDoc\n */\n setupOnce() {\n Error.stackTraceLimit = 50;\n const options = this._options;\n\n // We can disable guard-for-in as we construct the options object above + do checks against\n // `this._installFunc` for the property.\n // eslint-disable-next-line guard-for-in\n for (const key in options) {\n const installFunc = this._installFunc[key ];\n if (installFunc && options[key ]) {\n globalHandlerLog(key);\n installFunc();\n this._installFunc[key ] = undefined;\n }\n }\n }\n} GlobalHandlers.__initStatic();\n\n/** JSDoc */\nfunction _installGlobalOnErrorHandler() {\n addInstrumentationHandler(\n 'error',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (data) => {\n const [hub, stackParser, attachStacktrace] = getHubAndOptions();\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n const { msg, url, line, column, error } = data;\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return;\n }\n\n const event =\n error === undefined && isString(msg)\n ? _eventFromIncompleteOnError(msg, url, line, column)\n : _enhanceEventWithInitialFrame(\n eventFromUnknownInput(stackParser, error || msg, undefined, attachStacktrace, false),\n url,\n line,\n column,\n );\n\n event.level = 'error';\n\n addMechanismAndCapture(hub, error, event, 'onerror');\n },\n );\n}\n\n/** JSDoc */\nfunction _installGlobalOnUnhandledRejectionHandler() {\n addInstrumentationHandler(\n 'unhandledrejection',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (e) => {\n const [hub, stackParser, attachStacktrace] = getHubAndOptions();\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n let error = e;\n\n // dig the object of the rejection out of known event types\n try {\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in e) {\n error = e.reason;\n }\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n else if ('detail' in e && 'reason' in e.detail) {\n error = e.detail.reason;\n }\n } catch (_oO) {\n // no-empty\n }\n\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return true;\n }\n\n const event = isPrimitive(error)\n ? _eventFromRejectionWithPrimitive(error)\n : eventFromUnknownInput(stackParser, error, undefined, attachStacktrace, true);\n\n event.level = 'error';\n\n addMechanismAndCapture(hub, error, event, 'onunhandledrejection');\n return;\n },\n );\n}\n\n/**\n * Create an event from a promise rejection where the `reason` is a primitive.\n *\n * @param reason: The `reason` property of the promise rejection\n * @returns An Event object with an appropriate `exception` value\n */\nfunction _eventFromRejectionWithPrimitive(reason) {\n return {\n exception: {\n values: [\n {\n type: 'UnhandledRejection',\n // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)\n value: `Non-Error promise rejection captured with value: ${String(reason)}`,\n },\n ],\n },\n };\n}\n\n/**\n * This function creates a stack from an old, error-less onerror handler.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _eventFromIncompleteOnError(msg, url, line, column) {\n const ERROR_TYPES_RE =\n /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n\n // If 'message' is ErrorEvent, get real message from inside\n let message = isErrorEvent(msg) ? msg.message : msg;\n let name = 'Error';\n\n const groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n\n const event = {\n exception: {\n values: [\n {\n type: name,\n value: message,\n },\n ],\n },\n };\n\n return _enhanceEventWithInitialFrame(event, url, line, column);\n}\n\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _enhanceEventWithInitialFrame(event, url, line, column) {\n // event.exception\n const e = (event.exception = event.exception || {});\n // event.exception.values\n const ev = (e.values = e.values || []);\n // event.exception.values[0]\n const ev0 = (ev[0] = ev[0] || {});\n // event.exception.values[0].stacktrace\n const ev0s = (ev0.stacktrace = ev0.stacktrace || {});\n // event.exception.values[0].stacktrace.frames\n const ev0sf = (ev0s.frames = ev0s.frames || []);\n\n const colno = isNaN(parseInt(column, 10)) ? undefined : column;\n const lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n const filename = isString(url) && url.length > 0 ? url : getLocationHref();\n\n // event.exception.values[0].stacktrace.frames\n if (ev0sf.length === 0) {\n ev0sf.push({\n colno,\n filename,\n function: '?',\n in_app: true,\n lineno,\n });\n }\n\n return event;\n}\n\nfunction globalHandlerLog(type) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Global Handler attached: ${type}`);\n}\n\nfunction addMechanismAndCapture(hub, error, event, type) {\n addExceptionMechanism(event, {\n handled: false,\n type,\n });\n hub.captureEvent(event, {\n originalException: error,\n });\n}\n\nfunction getHubAndOptions() {\n const hub = getCurrentHub();\n const client = hub.getClient();\n const options = (client && client.getOptions()) || {\n stackParser: () => [],\n attachStacktrace: false,\n };\n return [hub, options.stackParser, options.attachStacktrace];\n}\n\nexport { GlobalHandlers };\n","import { fill, getFunctionName, getOriginalFunction } from '@sentry/utils';\nimport { WINDOW, wrap } from '../helpers.js';\n\nconst DEFAULT_EVENT_TARGET = [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload',\n];\n\n/** Wrap timer functions and event targets to catch errors and provide better meta data */\nclass TryCatch {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'TryCatch';}\n\n /**\n * @inheritDoc\n */\n\n /** JSDoc */\n\n /**\n * @inheritDoc\n */\n constructor(options) {\n this.name = TryCatch.id;\n this._options = {\n XMLHttpRequest: true,\n eventTarget: true,\n requestAnimationFrame: true,\n setInterval: true,\n setTimeout: true,\n ...options,\n };\n }\n\n /**\n * Wrap timer functions and event targets to catch errors\n * and provide better metadata.\n */\n setupOnce() {\n if (this._options.setTimeout) {\n fill(WINDOW, 'setTimeout', _wrapTimeFunction);\n }\n\n if (this._options.setInterval) {\n fill(WINDOW, 'setInterval', _wrapTimeFunction);\n }\n\n if (this._options.requestAnimationFrame) {\n fill(WINDOW, 'requestAnimationFrame', _wrapRAF);\n }\n\n if (this._options.XMLHttpRequest && 'XMLHttpRequest' in WINDOW) {\n fill(XMLHttpRequest.prototype, 'send', _wrapXHR);\n }\n\n const eventTargetOption = this._options.eventTarget;\n if (eventTargetOption) {\n const eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET;\n eventTarget.forEach(_wrapEventTarget);\n }\n }\n} TryCatch.__initStatic();\n\n/** JSDoc */\nfunction _wrapTimeFunction(original) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function ( ...args) {\n const originalCallback = args[0];\n args[0] = wrap(originalCallback, {\n mechanism: {\n data: { function: getFunctionName(original) },\n handled: true,\n type: 'instrument',\n },\n });\n return original.apply(this, args);\n };\n}\n\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _wrapRAF(original) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function ( callback) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return original.apply(this, [\n wrap(callback, {\n mechanism: {\n data: {\n function: 'requestAnimationFrame',\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n }),\n ]);\n };\n}\n\n/** JSDoc */\nfunction _wrapXHR(originalSend) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function ( ...args) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr = this;\n const xmlHttpRequestProps = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n\n xmlHttpRequestProps.forEach(prop => {\n if (prop in xhr && typeof xhr[prop] === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fill(xhr, prop, function (original) {\n const wrapOptions = {\n mechanism: {\n data: {\n function: prop,\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n };\n\n // If Instrument integration has been called before TryCatch, get the name of original function\n const originalFunction = getOriginalFunction(original);\n if (originalFunction) {\n wrapOptions.mechanism.data.handler = getFunctionName(originalFunction);\n }\n\n // Otherwise wrap directly\n return wrap(original, wrapOptions);\n });\n }\n });\n\n return originalSend.apply(this, args);\n };\n}\n\n/** JSDoc */\nfunction _wrapEventTarget(target) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const globalObject = WINDOW ;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const proto = globalObject[target] && globalObject[target].prototype;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (original)\n\n {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n eventName,\n fn,\n options,\n ) {\n try {\n if (typeof fn.handleEvent === 'function') {\n // ESlint disable explanation:\n // First, it is generally safe to call `wrap` with an unbound function. Furthermore, using `.bind()` would\n // introduce a bug here, because bind returns a new function that doesn't have our\n // flags(like __sentry_original__) attached. `wrap` checks for those flags to avoid unnecessary wrapping.\n // Without those flags, every call to addEventListener wraps the function again, causing a memory leak.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n fn.handleEvent = wrap(fn.handleEvent, {\n mechanism: {\n data: {\n function: 'handleEvent',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n });\n }\n } catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n\n return original.apply(this, [\n eventName,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n wrap(fn , {\n mechanism: {\n data: {\n function: 'addEventListener',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n }),\n options,\n ]);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (\n originalRemoveEventListener,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ) {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n eventName,\n fn,\n options,\n ) {\n /**\n * There are 2 possible scenarios here:\n *\n * 1. Someone passes a callback, which was attached prior to Sentry initialization, or by using unmodified\n * method, eg. `document.addEventListener.call(el, name, handler). In this case, we treat this function\n * as a pass-through, and call original `removeEventListener` with it.\n *\n * 2. Someone passes a callback, which was attached after Sentry was initialized, which means that it was using\n * our wrapped version of `addEventListener`, which internally calls `wrap` helper.\n * This helper \"wraps\" whole callback inside a try/catch statement, and attached appropriate metadata to it,\n * in order for us to make a distinction between wrapped/non-wrapped functions possible.\n * If a function was wrapped, it has additional property of `__sentry_wrapped__`, holding the handler.\n *\n * When someone adds a handler prior to initialization, and then do it again, but after,\n * then we have to detach both of them. Otherwise, if we'd detach only wrapped one, it'd be impossible\n * to get rid of the initial handler and it'd stick there forever.\n */\n const wrappedEventHandler = fn ;\n try {\n const originalEventHandler = wrappedEventHandler && wrappedEventHandler.__sentry_wrapped__;\n if (originalEventHandler) {\n originalRemoveEventListener.call(this, eventName, originalEventHandler, options);\n }\n } catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return originalRemoveEventListener.call(this, eventName, wrappedEventHandler, options);\n };\n },\n );\n}\n\nexport { TryCatch };\n","import { isInstanceOf } from './is.js';\nimport { truncate } from './string.js';\n\n/**\n * Creates exceptions inside `event.exception.values` for errors that are nested on properties based on the `key` parameter.\n */\nfunction applyAggregateErrorsToEvent(\n exceptionFromErrorImplementation,\n parser,\n maxValueLimit = 250,\n key,\n limit,\n event,\n hint,\n) {\n if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return;\n }\n\n // Generally speaking the last item in `event.exception.values` is the exception originating from the original Error\n const originalException =\n event.exception.values.length > 0 ? event.exception.values[event.exception.values.length - 1] : undefined;\n\n // We only create exception grouping if there is an exception in the event.\n if (originalException) {\n event.exception.values = truncateAggregateExceptions(\n aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n hint.originalException ,\n key,\n event.exception.values,\n originalException,\n 0,\n ),\n maxValueLimit,\n );\n }\n}\n\nfunction aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n error,\n key,\n prevExceptions,\n exception,\n exceptionId,\n) {\n if (prevExceptions.length >= limit + 1) {\n return prevExceptions;\n }\n\n let newExceptions = [...prevExceptions];\n\n if (isInstanceOf(error[key], Error)) {\n applyExceptionGroupFieldsForParentException(exception, exceptionId);\n const newException = exceptionFromErrorImplementation(parser, error[key]);\n const newExceptionId = newExceptions.length;\n applyExceptionGroupFieldsForChildException(newException, key, newExceptionId, exceptionId);\n newExceptions = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n error[key],\n key,\n [newException, ...newExceptions],\n newException,\n newExceptionId,\n );\n }\n\n // This will create exception grouping for AggregateErrors\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError\n if (Array.isArray(error.errors)) {\n error.errors.forEach((childError, i) => {\n if (isInstanceOf(childError, Error)) {\n applyExceptionGroupFieldsForParentException(exception, exceptionId);\n const newException = exceptionFromErrorImplementation(parser, childError);\n const newExceptionId = newExceptions.length;\n applyExceptionGroupFieldsForChildException(newException, `errors[${i}]`, newExceptionId, exceptionId);\n newExceptions = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n childError,\n key,\n [newException, ...newExceptions],\n newException,\n newExceptionId,\n );\n }\n });\n }\n\n return newExceptions;\n}\n\nfunction applyExceptionGroupFieldsForParentException(exception, exceptionId) {\n // Don't know if this default makes sense. The protocol requires us to set these values so we pick *some* default.\n exception.mechanism = exception.mechanism || { type: 'generic', handled: true };\n\n exception.mechanism = {\n ...exception.mechanism,\n is_exception_group: true,\n exception_id: exceptionId,\n };\n}\n\nfunction applyExceptionGroupFieldsForChildException(\n exception,\n source,\n exceptionId,\n parentId,\n) {\n // Don't know if this default makes sense. The protocol requires us to set these values so we pick *some* default.\n exception.mechanism = exception.mechanism || { type: 'generic', handled: true };\n\n exception.mechanism = {\n ...exception.mechanism,\n type: 'chained',\n source,\n exception_id: exceptionId,\n parent_id: parentId,\n };\n}\n\n/**\n * Truncate the message (exception.value) of all exceptions in the event.\n * Because this event processor is ran after `applyClientOptions`,\n * we need to truncate the message of the added exceptions here.\n */\nfunction truncateAggregateExceptions(exceptions, maxValueLength) {\n return exceptions.map(exception => {\n if (exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n return exception;\n });\n}\n\nexport { applyAggregateErrorsToEvent };\n","import { applyAggregateErrorsToEvent } from '@sentry/utils';\nimport { exceptionFromError } from '../eventbuilder.js';\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\n/** Adds SDK info to an event. */\nclass LinkedErrors {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'LinkedErrors';}\n\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n constructor(options = {}) {\n this.name = LinkedErrors.id;\n this._key = options.key || DEFAULT_KEY;\n this._limit = options.limit || DEFAULT_LIMIT;\n }\n\n /**\n * @inheritDoc\n */\n setupOnce(addGlobalEventProcessor, getCurrentHub) {\n addGlobalEventProcessor((event, hint) => {\n const hub = getCurrentHub();\n const client = hub.getClient();\n const self = hub.getIntegration(LinkedErrors);\n\n if (!client || !self) {\n return event;\n }\n\n const options = client.getOptions();\n applyAggregateErrorsToEvent(\n exceptionFromError,\n options.stackParser,\n options.maxValueLength,\n self._key,\n self._limit,\n event,\n hint,\n );\n\n return event;\n });\n }\n} LinkedErrors.__initStatic();\n\nexport { LinkedErrors };\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { WINDOW } from '../helpers.js';\n\n/** HttpContext integration collects information about HTTP request headers */\nclass HttpContext {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'HttpContext';}\n\n /**\n * @inheritDoc\n */\n\n constructor() {\n this.name = HttpContext.id;\n }\n\n /**\n * @inheritDoc\n */\n setupOnce() {\n addGlobalEventProcessor((event) => {\n if (getCurrentHub().getIntegration(HttpContext)) {\n // if none of the information we want exists, don't bother\n if (!WINDOW.navigator && !WINDOW.location && !WINDOW.document) {\n return event;\n }\n\n // grab as much info as exists and add it to the event\n const url = (event.request && event.request.url) || (WINDOW.location && WINDOW.location.href);\n const { referrer } = WINDOW.document || {};\n const { userAgent } = WINDOW.navigator || {};\n\n const headers = {\n ...(event.request && event.request.headers),\n ...(referrer && { Referer: referrer }),\n ...(userAgent && { 'User-Agent': userAgent }),\n };\n const request = { ...event.request, ...(url && { url }), headers };\n\n return { ...event, request };\n }\n return event;\n });\n }\n} HttpContext.__initStatic();\n\nexport { HttpContext };\n","import { logger } from '@sentry/utils';\n\n/** Deduplication filter */\nclass Dedupe {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'Dedupe';}\n\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n\n constructor() {\n this.name = Dedupe.id;\n }\n\n /**\n * @inheritDoc\n */\n setupOnce(addGlobalEventProcessor, getCurrentHub) {\n const eventProcessor = currentEvent => {\n // We want to ignore any non-error type events, e.g. transactions or replays\n // These should never be deduped, and also not be compared against as _previousEvent.\n if (currentEvent.type) {\n return currentEvent;\n }\n\n const self = getCurrentHub().getIntegration(Dedupe);\n if (self) {\n // Juuust in case something goes wrong\n try {\n if (_shouldDropEvent(currentEvent, self._previousEvent)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Event dropped due to being a duplicate of previously captured event.');\n return null;\n }\n } catch (_oO) {\n return (self._previousEvent = currentEvent);\n }\n\n return (self._previousEvent = currentEvent);\n }\n return currentEvent;\n };\n\n eventProcessor.id = this.name;\n addGlobalEventProcessor(eventProcessor);\n }\n} Dedupe.__initStatic();\n\n/** JSDoc */\nfunction _shouldDropEvent(currentEvent, previousEvent) {\n if (!previousEvent) {\n return false;\n }\n\n if (_isSameMessageEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n return false;\n}\n\n/** JSDoc */\nfunction _isSameMessageEvent(currentEvent, previousEvent) {\n const currentMessage = currentEvent.message;\n const previousMessage = previousEvent.message;\n\n // If neither event has a message property, they were both exceptions, so bail out\n if (!currentMessage && !previousMessage) {\n return false;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n return false;\n }\n\n if (currentMessage !== previousMessage) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameExceptionEvent(currentEvent, previousEvent) {\n const previousException = _getExceptionFromEvent(previousEvent);\n const currentException = _getExceptionFromEvent(currentEvent);\n\n if (!previousException || !currentException) {\n return false;\n }\n\n if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameStacktrace(currentEvent, previousEvent) {\n let currentFrames = _getFramesFromEvent(currentEvent);\n let previousFrames = _getFramesFromEvent(previousEvent);\n\n // If neither event has a stacktrace, they are assumed to be the same\n if (!currentFrames && !previousFrames) {\n return true;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n return false;\n }\n\n currentFrames = currentFrames ;\n previousFrames = previousFrames ;\n\n // If number of frames differ, they are not the same\n if (previousFrames.length !== currentFrames.length) {\n return false;\n }\n\n // Otherwise, compare the two\n for (let i = 0; i < previousFrames.length; i++) {\n const frameA = previousFrames[i];\n const frameB = currentFrames[i];\n\n if (\n frameA.filename !== frameB.filename ||\n frameA.lineno !== frameB.lineno ||\n frameA.colno !== frameB.colno ||\n frameA.function !== frameB.function\n ) {\n return false;\n }\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameFingerprint(currentEvent, previousEvent) {\n let currentFingerprint = currentEvent.fingerprint;\n let previousFingerprint = previousEvent.fingerprint;\n\n // If neither event has a fingerprint, they are assumed to be the same\n if (!currentFingerprint && !previousFingerprint) {\n return true;\n }\n\n // If only one event has a fingerprint, but not the other one, they are not the same\n if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n return false;\n }\n\n currentFingerprint = currentFingerprint ;\n previousFingerprint = previousFingerprint ;\n\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n } catch (_oO) {\n return false;\n }\n}\n\n/** JSDoc */\nfunction _getExceptionFromEvent(event) {\n return event.exception && event.exception.values && event.exception.values[0];\n}\n\n/** JSDoc */\nfunction _getFramesFromEvent(event) {\n const exception = event.exception;\n\n if (exception) {\n try {\n // @ts-ignore Object could be undefined\n return exception.values[0].stacktrace.frames;\n } catch (_oO) {\n return undefined;\n }\n }\n return undefined;\n}\n\nexport { Dedupe };\n","import { createStackParser } from '@sentry/utils';\n\n// global reference to slice\nconst UNKNOWN_FUNCTION = '?';\n\nconst OPERA10_PRIORITY = 10;\nconst OPERA11_PRIORITY = 20;\nconst CHROME_PRIORITY = 30;\nconst WINJS_PRIORITY = 40;\nconst GECKO_PRIORITY = 50;\n\nfunction createFrame(filename, func, lineno, colno) {\n const frame = {\n filename,\n function: func,\n in_app: true, // All browser frames are considered in_app\n };\n\n if (lineno !== undefined) {\n frame.lineno = lineno;\n }\n\n if (colno !== undefined) {\n frame.colno = colno;\n }\n\n return frame;\n}\n\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nconst chromeRegex =\n /^\\s*at (?:(.+?\\)(?: \\[.+\\])?|.*?) ?\\((?:address at )?)?(?:async )?((?:|[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nconst chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\nconst chrome = line => {\n const parts = chromeRegex.exec(line);\n\n if (parts) {\n const isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n if (isEval) {\n const subMatch = chromeEvalRegex.exec(parts[2]);\n\n if (subMatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = subMatch[1]; // url\n parts[3] = subMatch[2]; // line\n parts[4] = subMatch[3]; // column\n }\n }\n\n // Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now\n // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)\n const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]);\n\n return createFrame(filename, func, parts[3] ? +parts[3] : undefined, parts[4] ? +parts[4] : undefined);\n }\n\n return;\n};\n\nconst chromeStackLineParser = [CHROME_PRIORITY, chrome];\n\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nconst geckoREgex =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:[-a-z]+)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nconst gecko = line => {\n const parts = geckoREgex.exec(line);\n\n if (parts) {\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval) {\n const subMatch = geckoEvalRegex.exec(parts[3]);\n\n if (subMatch) {\n // throw out eval line/column and use top-most line number\n parts[1] = parts[1] || 'eval';\n parts[3] = subMatch[1];\n parts[4] = subMatch[2];\n parts[5] = ''; // no column when eval\n }\n }\n\n let filename = parts[3];\n let func = parts[1] || UNKNOWN_FUNCTION;\n [func, filename] = extractSafariExtensionDetails(func, filename);\n\n return createFrame(filename, func, parts[4] ? +parts[4] : undefined, parts[5] ? +parts[5] : undefined);\n }\n\n return;\n};\n\nconst geckoStackLineParser = [GECKO_PRIORITY, gecko];\n\nconst winjsRegex = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:[-a-z]+):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nconst winjs = line => {\n const parts = winjsRegex.exec(line);\n\n return parts\n ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)\n : undefined;\n};\n\nconst winjsStackLineParser = [WINJS_PRIORITY, winjs];\n\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n\nconst opera10 = line => {\n const parts = opera10Regex.exec(line);\n return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined;\n};\n\nconst opera10StackLineParser = [OPERA10_PRIORITY, opera10];\n\nconst opera11Regex =\n / line (\\d+), column (\\d+)\\s*(?:in (?:]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\n\nconst opera11 = line => {\n const parts = opera11Regex.exec(line);\n return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined;\n};\n\nconst opera11StackLineParser = [OPERA11_PRIORITY, opera11];\n\nconst defaultStackLineParsers = [chromeStackLineParser, geckoStackLineParser, winjsStackLineParser];\n\nconst defaultStackParser = createStackParser(...defaultStackLineParsers);\n\n/**\n * Safari web extensions, starting version unknown, can produce \"frames-only\" stacktraces.\n * What it means, is that instead of format like:\n *\n * Error: wat\n * at function@url:row:col\n * at function@url:row:col\n * at function@url:row:col\n *\n * it produces something like:\n *\n * function@url:row:col\n * function@url:row:col\n * function@url:row:col\n *\n * Because of that, it won't be captured by `chrome` RegExp and will fall into `Gecko` branch.\n * This function is extracted so that we can use it in both places without duplicating the logic.\n * Unfortunately \"just\" changing RegExp is too complicated now and making it pass all tests\n * and fix this case seems like an impossible, or at least way too time-consuming task.\n */\nconst extractSafariExtensionDetails = (func, filename) => {\n const isSafariExtension = func.indexOf('safari-extension') !== -1;\n const isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;\n\n return isSafariExtension || isSafariWebExtension\n ? [\n func.indexOf('@') !== -1 ? func.split('@')[0] : UNKNOWN_FUNCTION,\n isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`,\n ]\n : [func, filename];\n};\n\nexport { chromeStackLineParser, defaultStackLineParsers, defaultStackParser, geckoStackLineParser, opera10StackLineParser, opera11StackLineParser, winjsStackLineParser };\n","// Intentionally keeping the key broad, as we don't know for sure what rate limit headers get returned from backend\n\nconst DEFAULT_RETRY_AFTER = 60 * 1000; // 60 seconds\n\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param header string representation of 'Retry-After' header\n * @param now current unix timestamp\n *\n */\nfunction parseRetryAfterHeader(header, now = Date.now()) {\n const headerDelay = parseInt(`${header}`, 10);\n if (!isNaN(headerDelay)) {\n return headerDelay * 1000;\n }\n\n const headerDate = Date.parse(`${header}`);\n if (!isNaN(headerDate)) {\n return headerDate - now;\n }\n\n return DEFAULT_RETRY_AFTER;\n}\n\n/**\n * Gets the time that the given category is disabled until for rate limiting.\n * In case no category-specific limit is set but a general rate limit across all categories is active,\n * that time is returned.\n *\n * @return the time in ms that the category is disabled until or 0 if there's no active rate limit.\n */\nfunction disabledUntil(limits, category) {\n return limits[category] || limits.all || 0;\n}\n\n/**\n * Checks if a category is rate limited\n */\nfunction isRateLimited(limits, category, now = Date.now()) {\n return disabledUntil(limits, category) > now;\n}\n\n/**\n * Update ratelimits from incoming headers.\n *\n * @return the updated RateLimits object.\n */\nfunction updateRateLimits(\n limits,\n { statusCode, headers },\n now = Date.now(),\n) {\n const updatedRateLimits = {\n ...limits,\n };\n\n // \"The name is case-insensitive.\"\n // https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n const rateLimitHeader = headers && headers['x-sentry-rate-limits'];\n const retryAfterHeader = headers && headers['retry-after'];\n\n if (rateLimitHeader) {\n /**\n * rate limit headers are of the form\n *
,
,..\n * where each
is of the form\n * : : : \n * where\n * is a delay in seconds\n * is the event type(s) (error, transaction, etc) being rate limited and is of the form\n * ;;...\n * is what's being limited (org, project, or key) - ignored by SDK\n * is an arbitrary string like \"org_quota\" - ignored by SDK\n */\n for (const limit of rateLimitHeader.trim().split(',')) {\n const [retryAfter, categories] = limit.split(':', 2);\n const headerDelay = parseInt(retryAfter, 10);\n const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n if (!categories) {\n updatedRateLimits.all = now + delay;\n } else {\n for (const category of categories.split(';')) {\n updatedRateLimits[category] = now + delay;\n }\n }\n }\n } else if (retryAfterHeader) {\n updatedRateLimits.all = now + parseRetryAfterHeader(retryAfterHeader, now);\n } else if (statusCode === 429) {\n updatedRateLimits.all = now + 60 * 1000;\n }\n\n return updatedRateLimits;\n}\n\nexport { DEFAULT_RETRY_AFTER, disabledUntil, isRateLimited, parseRetryAfterHeader, updateRateLimits };\n","import { makePromiseBuffer, forEachEnvelopeItem, envelopeItemTypeToDataCategory, isRateLimited, resolvedSyncPromise, createEnvelope, SentryError, logger, serializeEnvelope, updateRateLimits } from '@sentry/utils';\n\nconst DEFAULT_TRANSPORT_BUFFER_SIZE = 30;\n\n/**\n * Creates an instance of a Sentry `Transport`\n *\n * @param options\n * @param makeRequest\n */\nfunction createTransport(\n options,\n makeRequest,\n buffer = makePromiseBuffer(\n options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE,\n ),\n) {\n let rateLimits = {};\n const flush = (timeout) => buffer.drain(timeout);\n\n function send(envelope) {\n const filteredEnvelopeItems = [];\n\n // Drop rate limited items from envelope\n forEachEnvelopeItem(envelope, (item, type) => {\n const envelopeItemDataCategory = envelopeItemTypeToDataCategory(type);\n if (isRateLimited(rateLimits, envelopeItemDataCategory)) {\n const event = getEventForEnvelopeItem(item, type);\n options.recordDroppedEvent('ratelimit_backoff', envelopeItemDataCategory, event);\n } else {\n filteredEnvelopeItems.push(item);\n }\n });\n\n // Skip sending if envelope is empty after filtering out rate limited events\n if (filteredEnvelopeItems.length === 0) {\n return resolvedSyncPromise();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const filteredEnvelope = createEnvelope(envelope[0], filteredEnvelopeItems );\n\n // Creates client report for each item in an envelope\n const recordEnvelopeLoss = (reason) => {\n forEachEnvelopeItem(filteredEnvelope, (item, type) => {\n const event = getEventForEnvelopeItem(item, type);\n options.recordDroppedEvent(reason, envelopeItemTypeToDataCategory(type), event);\n });\n };\n\n const requestTask = () =>\n makeRequest({ body: serializeEnvelope(filteredEnvelope, options.textEncoder) }).then(\n response => {\n // We don't want to throw on NOK responses, but we want to at least log them\n if (response.statusCode !== undefined && (response.statusCode < 200 || response.statusCode >= 300)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`Sentry responded with status code ${response.statusCode} to sent event.`);\n }\n\n rateLimits = updateRateLimits(rateLimits, response);\n return response;\n },\n error => {\n recordEnvelopeLoss('network_error');\n throw error;\n },\n );\n\n return buffer.add(requestTask).then(\n result => result,\n error => {\n if (error instanceof SentryError) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Skipped sending event because buffer is full.');\n recordEnvelopeLoss('queue_overflow');\n return resolvedSyncPromise();\n } else {\n throw error;\n }\n },\n );\n }\n\n // We use this to identifify if the transport is the base transport\n // TODO (v8): Remove this again as we'll no longer need it\n send.__sentry__baseTransport__ = true;\n\n return {\n send,\n flush,\n };\n}\n\nfunction getEventForEnvelopeItem(item, type) {\n if (type !== 'event' && type !== 'transaction') {\n return undefined;\n }\n\n return Array.isArray(item) ? (item )[1] : undefined;\n}\n\nexport { DEFAULT_TRANSPORT_BUFFER_SIZE, createTransport };\n","import { SentryError } from './error.js';\nimport { rejectedSyncPromise, SyncPromise, resolvedSyncPromise } from './syncpromise.js';\n\n/**\n * Creates an new PromiseBuffer object with the specified limit\n * @param limit max number of promises that can be stored in the buffer\n */\nfunction makePromiseBuffer(limit) {\n const buffer = [];\n\n function isReady() {\n return limit === undefined || buffer.length < limit;\n }\n\n /**\n * Remove a promise from the queue.\n *\n * @param task Can be any PromiseLike\n * @returns Removed promise.\n */\n function remove(task) {\n return buffer.splice(buffer.indexOf(task), 1)[0];\n }\n\n /**\n * Add a promise (representing an in-flight action) to the queue, and set it to remove itself on fulfillment.\n *\n * @param taskProducer A function producing any PromiseLike; In previous versions this used to be `task:\n * PromiseLike`, but under that model, Promises were instantly created on the call-site and their executor\n * functions therefore ran immediately. Thus, even if the buffer was full, the action still happened. By\n * requiring the promise to be wrapped in a function, we can defer promise creation until after the buffer\n * limit check.\n * @returns The original promise.\n */\n function add(taskProducer) {\n if (!isReady()) {\n return rejectedSyncPromise(new SentryError('Not adding Promise because buffer limit was reached.'));\n }\n\n // start the task and add its promise to the queue\n const task = taskProducer();\n if (buffer.indexOf(task) === -1) {\n buffer.push(task);\n }\n void task\n .then(() => remove(task))\n // Use `then(null, rejectionHandler)` rather than `catch(rejectionHandler)` so that we can use `PromiseLike`\n // rather than `Promise`. `PromiseLike` doesn't have a `.catch` method, making its polyfill smaller. (ES5 didn't\n // have promises, so TS has to polyfill when down-compiling.)\n .then(null, () =>\n remove(task).then(null, () => {\n // We have to add another catch here because `remove()` starts a new promise chain.\n }),\n );\n return task;\n }\n\n /**\n * Wait for all promises in the queue to resolve or for timeout to expire, whichever comes first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the queue is still non-empty. Passing `0` (or\n * not passing anything) will make the promise wait as long as it takes for the queue to drain before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if the queue is already empty or drains before the timeout, and\n * `false` otherwise\n */\n function drain(timeout) {\n return new SyncPromise((resolve, reject) => {\n let counter = buffer.length;\n\n if (!counter) {\n return resolve(true);\n }\n\n // wait for `timeout` ms and then resolve to `false` (if not cancelled first)\n const capturedSetTimeout = setTimeout(() => {\n if (timeout && timeout > 0) {\n resolve(false);\n }\n }, timeout);\n\n // if all promises resolve in time, cancel the timer and resolve to `true`\n buffer.forEach(item => {\n void resolvedSyncPromise(item).then(() => {\n if (!--counter) {\n clearTimeout(capturedSetTimeout);\n resolve(true);\n }\n }, reject);\n });\n });\n }\n\n return {\n $: buffer,\n add,\n drain,\n };\n}\n\nexport { makePromiseBuffer };\n","import { isNativeFetch, logger } from '@sentry/utils';\nimport { WINDOW } from '../helpers.js';\n\nlet cachedFetchImpl = undefined;\n\n/**\n * A special usecase for incorrectly wrapped Fetch APIs in conjunction with ad-blockers.\n * Whenever someone wraps the Fetch API and returns the wrong promise chain,\n * this chain becomes orphaned and there is no possible way to capture it's rejections\n * other than allowing it bubble up to this very handler. eg.\n *\n * const f = window.fetch;\n * window.fetch = function () {\n * const p = f.apply(this, arguments);\n *\n * p.then(function() {\n * console.log('hi.');\n * });\n *\n * return p;\n * }\n *\n * `p.then(function () { ... })` is producing a completely separate promise chain,\n * however, what's returned is `p` - the result of original `fetch` call.\n *\n * This mean, that whenever we use the Fetch API to send our own requests, _and_\n * some ad-blocker blocks it, this orphaned chain will _always_ reject,\n * effectively causing another event to be captured.\n * This makes a whole process become an infinite loop, which we need to somehow\n * deal with, and break it in one way or another.\n *\n * To deal with this issue, we are making sure that we _always_ use the real\n * browser Fetch API, instead of relying on what `window.fetch` exposes.\n * The only downside to this would be missing our own requests as breadcrumbs,\n * but because we are already not doing this, it should be just fine.\n *\n * Possible failed fetch error messages per-browser:\n *\n * Chrome: Failed to fetch\n * Edge: Failed to Fetch\n * Firefox: NetworkError when attempting to fetch resource\n * Safari: resource blocked by content blocker\n */\nfunction getNativeFetchImplementation() {\n if (cachedFetchImpl) {\n return cachedFetchImpl;\n }\n\n /* eslint-disable @typescript-eslint/unbound-method */\n\n // Fast path to avoid DOM I/O\n if (isNativeFetch(WINDOW.fetch)) {\n return (cachedFetchImpl = WINDOW.fetch.bind(WINDOW));\n }\n\n const document = WINDOW.document;\n let fetchImpl = WINDOW.fetch;\n // eslint-disable-next-line deprecation/deprecation\n if (document && typeof document.createElement === 'function') {\n try {\n const sandbox = document.createElement('iframe');\n sandbox.hidden = true;\n document.head.appendChild(sandbox);\n const contentWindow = sandbox.contentWindow;\n if (contentWindow && contentWindow.fetch) {\n fetchImpl = contentWindow.fetch;\n }\n document.head.removeChild(sandbox);\n } catch (e) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', e);\n }\n }\n\n return (cachedFetchImpl = fetchImpl.bind(WINDOW));\n /* eslint-enable @typescript-eslint/unbound-method */\n}\n\n/** Clears cached fetch impl */\nfunction clearCachedFetchImplementation() {\n cachedFetchImpl = undefined;\n}\n\nexport { clearCachedFetchImplementation, getNativeFetchImplementation };\n","import { createTransport } from '@sentry/core';\nimport { rejectedSyncPromise } from '@sentry/utils';\nimport { getNativeFetchImplementation, clearCachedFetchImplementation } from './utils.js';\n\n/**\n * Creates a Transport that uses the Fetch API to send events to Sentry.\n */\nfunction makeFetchTransport(\n options,\n nativeFetch = getNativeFetchImplementation(),\n) {\n let pendingBodySize = 0;\n let pendingCount = 0;\n\n function makeRequest(request) {\n const requestSize = request.body.length;\n pendingBodySize += requestSize;\n pendingCount++;\n\n const requestOptions = {\n body: request.body,\n method: 'POST',\n referrerPolicy: 'origin',\n headers: options.headers,\n // Outgoing requests are usually cancelled when navigating to a different page, causing a \"TypeError: Failed to\n // fetch\" error and sending a \"network_error\" client-outcome - in Chrome, the request status shows \"(cancelled)\".\n // The `keepalive` flag keeps outgoing requests alive, even when switching pages. We want this since we're\n // frequently sending events right before the user is switching pages (eg. whenfinishing navigation transactions).\n // Gotchas:\n // - `keepalive` isn't supported by Firefox\n // - As per spec (https://fetch.spec.whatwg.org/#http-network-or-cache-fetch):\n // If the sum of contentLength and inflightKeepaliveBytes is greater than 64 kibibytes, then return a network error.\n // We will therefore only activate the flag when we're below that limit.\n // There is also a limit of requests that can be open at the same time, so we also limit this to 15\n // See https://github.com/getsentry/sentry-javascript/pull/7553 for details\n keepalive: pendingBodySize <= 60000 && pendingCount < 15,\n ...options.fetchOptions,\n };\n\n try {\n return nativeFetch(options.url, requestOptions).then(response => {\n pendingBodySize -= requestSize;\n pendingCount--;\n return {\n statusCode: response.status,\n headers: {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n },\n };\n });\n } catch (e) {\n clearCachedFetchImplementation();\n pendingBodySize -= requestSize;\n pendingCount--;\n return rejectedSyncPromise(e);\n }\n }\n\n return createTransport(options, makeRequest);\n}\n\nexport { makeFetchTransport };\n","import { createTransport } from '@sentry/core';\nimport { SyncPromise } from '@sentry/utils';\n\n/**\n * The DONE ready state for XmlHttpRequest\n *\n * Defining it here as a constant b/c XMLHttpRequest.DONE is not always defined\n * (e.g. during testing, it is `undefined`)\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState}\n */\nconst XHR_READYSTATE_DONE = 4;\n\n/**\n * Creates a Transport that uses the XMLHttpRequest API to send events to Sentry.\n */\nfunction makeXHRTransport(options) {\n function makeRequest(request) {\n return new SyncPromise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n\n xhr.onerror = reject;\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === XHR_READYSTATE_DONE) {\n resolve({\n statusCode: xhr.status,\n headers: {\n 'x-sentry-rate-limits': xhr.getResponseHeader('X-Sentry-Rate-Limits'),\n 'retry-after': xhr.getResponseHeader('Retry-After'),\n },\n });\n }\n };\n\n xhr.open('POST', options.url);\n\n for (const header in options.headers) {\n if (Object.prototype.hasOwnProperty.call(options.headers, header)) {\n xhr.setRequestHeader(header, options.headers[header]);\n }\n }\n\n xhr.send(request.body);\n });\n }\n\n return createTransport(options, makeRequest);\n}\n\nexport { makeXHRTransport };\n","import { Integrations, getIntegrationsToSetup, initAndBind, getReportDialogEndpoint, getCurrentHub } from '@sentry/core';\nimport { stackParserFromStackParserOptions, supportsFetch, logger, addInstrumentationHandler } from '@sentry/utils';\nimport { BrowserClient } from './client.js';\nimport { WINDOW, wrap as wrap$1 } from './helpers.js';\nimport { GlobalHandlers } from './integrations/globalhandlers.js';\nimport { TryCatch } from './integrations/trycatch.js';\nimport { Breadcrumbs } from './integrations/breadcrumbs.js';\nimport { LinkedErrors } from './integrations/linkederrors.js';\nimport { HttpContext } from './integrations/httpcontext.js';\nimport { Dedupe } from './integrations/dedupe.js';\nimport { defaultStackParser } from './stack-parsers.js';\nimport { makeFetchTransport } from './transports/fetch.js';\nimport { makeXHRTransport } from './transports/xhr.js';\n\nconst defaultIntegrations = [\n new Integrations.InboundFilters(),\n new Integrations.FunctionToString(),\n new TryCatch(),\n new Breadcrumbs(),\n new GlobalHandlers(),\n new LinkedErrors(),\n new Dedupe(),\n new HttpContext(),\n];\n\n/**\n * A magic string that build tooling can leverage in order to inject a release value into the SDK.\n */\n\n/**\n * The Sentry Browser SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * loading the web page. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n *\n * ```\n *\n * import { init } from '@sentry/browser';\n *\n * init({\n * dsn: '__DSN__',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { configureScope } from '@sentry/browser';\n * configureScope((scope: Scope) => {\n * scope.setExtra({ battery: 0.7 });\n * scope.setTag({ user_mode: 'admin' });\n * scope.setUser({ id: '4711' });\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { addBreadcrumb } from '@sentry/browser';\n * addBreadcrumb({\n * message: 'My Breadcrumb',\n * // ...\n * });\n * ```\n *\n * @example\n *\n * ```\n *\n * import * as Sentry from '@sentry/browser';\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n * message: 'Manual',\n * stacktrace: [\n * // ...\n * ],\n * });\n * ```\n *\n * @see {@link BrowserOptions} for documentation on configuration options.\n */\nfunction init(options = {}) {\n if (options.defaultIntegrations === undefined) {\n options.defaultIntegrations = defaultIntegrations;\n }\n if (options.release === undefined) {\n // This allows build tooling to find-and-replace __SENTRY_RELEASE__ to inject a release value\n if (typeof __SENTRY_RELEASE__ === 'string') {\n options.release = __SENTRY_RELEASE__;\n }\n\n // This supports the variable that sentry-webpack-plugin injects\n if (WINDOW.SENTRY_RELEASE && WINDOW.SENTRY_RELEASE.id) {\n options.release = WINDOW.SENTRY_RELEASE.id;\n }\n }\n if (options.autoSessionTracking === undefined) {\n options.autoSessionTracking = true;\n }\n if (options.sendClientReports === undefined) {\n options.sendClientReports = true;\n }\n\n const clientOptions = {\n ...options,\n stackParser: stackParserFromStackParserOptions(options.stackParser || defaultStackParser),\n integrations: getIntegrationsToSetup(options),\n transport: options.transport || (supportsFetch() ? makeFetchTransport : makeXHRTransport),\n };\n\n initAndBind(BrowserClient, clientOptions);\n\n if (options.autoSessionTracking) {\n startSessionTracking();\n }\n}\n\n/**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n */\nfunction showReportDialog(options = {}, hub = getCurrentHub()) {\n // doesn't work without a document (React Native)\n if (!WINDOW.document) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Global document not defined in showReportDialog call');\n return;\n }\n\n const { client, scope } = hub.getStackTop();\n const dsn = options.dsn || (client && client.getDsn());\n if (!dsn) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('DSN not configured for showReportDialog call');\n return;\n }\n\n if (scope) {\n options.user = {\n ...scope.getUser(),\n ...options.user,\n };\n }\n\n if (!options.eventId) {\n options.eventId = hub.lastEventId();\n }\n\n const script = WINDOW.document.createElement('script');\n script.async = true;\n script.crossOrigin = 'anonymous';\n script.src = getReportDialogEndpoint(dsn, options);\n\n if (options.onLoad) {\n script.onload = options.onLoad;\n }\n\n const injectionPoint = WINDOW.document.head || WINDOW.document.body;\n if (injectionPoint) {\n injectionPoint.appendChild(script);\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Not injecting report dialog. No injection point found in HTML');\n }\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nfunction forceLoad() {\n // Noop\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nfunction onLoad(callback) {\n callback();\n}\n\n/**\n * Wrap code within a try/catch block so the SDK is able to capture errors.\n *\n * @param fn A function to wrap.\n *\n * @returns The result of wrapped function call.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction wrap(fn) {\n return wrap$1(fn)();\n}\n\nfunction startSessionOnHub(hub) {\n hub.startSession({ ignoreDuration: true });\n hub.captureSession();\n}\n\n/**\n * Enable automatic Session Tracking for the initial page load.\n */\nfunction startSessionTracking() {\n if (typeof WINDOW.document === 'undefined') {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn('Session tracking in non-browser environment with @sentry/browser is not supported.');\n return;\n }\n\n const hub = getCurrentHub();\n\n // The only way for this to be false is for there to be a version mismatch between @sentry/browser (>= 6.0.0) and\n // @sentry/hub (< 5.27.0). In the simple case, there won't ever be such a mismatch, because the two packages are\n // pinned at the same version in package.json, but there are edge cases where it's possible. See\n // https://github.com/getsentry/sentry-javascript/issues/3207 and\n // https://github.com/getsentry/sentry-javascript/issues/3234 and\n // https://github.com/getsentry/sentry-javascript/issues/3278.\n if (!hub.captureSession) {\n return;\n }\n\n // The session duration for browser sessions does not track a meaningful\n // concept that can be used as a metric.\n // Automatically captured sessions are akin to page views, and thus we\n // discard their duration.\n startSessionOnHub(hub);\n\n // We want to create a session for every navigation as well\n addInstrumentationHandler('history', ({ from, to }) => {\n // Don't create an additional session for the initial route or if the location did not change\n if (!(from === undefined || from === to)) {\n startSessionOnHub(getCurrentHub());\n }\n });\n}\n\n/**\n * Captures user feedback and sends it to Sentry.\n */\nfunction captureUserFeedback(feedback) {\n const client = getCurrentHub().getClient();\n if (client) {\n client.captureUserFeedback(feedback);\n }\n}\n\nexport { captureUserFeedback, defaultIntegrations, forceLoad, init, onLoad, showReportDialog, wrap };\n","import { Integrations } from '@sentry/core';\nexport { FunctionToString, Hub, InboundFilters, ModuleMetadata, SDK_VERSION, Scope, addBreadcrumb, addGlobalEventProcessor, addTracingExtensions, captureEvent, captureException, captureMessage, close, configureScope, createTransport, extractTraceparentData, flush, getActiveTransaction, getCurrentHub, getHubFromCarrier, lastEventId, makeMain, makeMultiplexedTransport, setContext, setExtra, setExtras, setMeasurement, setTag, setTags, setUser, spanStatusfromHttpCode, startTransaction, trace, withScope } from '@sentry/core';\nimport { WINDOW } from './helpers.js';\nexport { WINDOW } from './helpers.js';\nexport { BrowserClient } from './client.js';\nexport { makeFetchTransport } from './transports/fetch.js';\nexport { makeXHRTransport } from './transports/xhr.js';\nexport { chromeStackLineParser, defaultStackLineParsers, defaultStackParser, geckoStackLineParser, opera10StackLineParser, opera11StackLineParser, winjsStackLineParser } from './stack-parsers.js';\nexport { eventFromException, eventFromMessage, exceptionFromError } from './eventbuilder.js';\nexport { createUserFeedbackEnvelope } from './userfeedback.js';\nexport { captureUserFeedback, defaultIntegrations, forceLoad, init, onLoad, showReportDialog, wrap } from './sdk.js';\nimport * as index from './integrations/index.js';\nexport { Replay } from '@sentry/replay';\nexport { BrowserTracing, defaultRequestInstrumentationOptions, instrumentOutgoingRequests } from '@sentry-internal/tracing';\nexport { makeBrowserOfflineTransport } from './transports/offline.js';\nexport { onProfilingStartRouteTransaction } from './profiling/hubextensions.js';\nexport { BrowserProfilingIntegration } from './profiling/integration.js';\nexport { GlobalHandlers } from './integrations/globalhandlers.js';\nexport { TryCatch } from './integrations/trycatch.js';\nexport { Breadcrumbs } from './integrations/breadcrumbs.js';\nexport { LinkedErrors } from './integrations/linkederrors.js';\nexport { HttpContext } from './integrations/httpcontext.js';\nexport { Dedupe } from './integrations/dedupe.js';\n\nlet windowIntegrations = {};\n\n// This block is needed to add compatibility with the integrations packages when used with a CDN\nif (WINDOW.Sentry && WINDOW.Sentry.Integrations) {\n windowIntegrations = WINDOW.Sentry.Integrations;\n}\n\nconst INTEGRATIONS = {\n ...windowIntegrations,\n ...Integrations,\n ...index,\n};\n\nexport { INTEGRATIONS as Integrations };\n","import { isString } from './is.js';\nimport { logger } from './logger.js';\n\nconst BAGGAGE_HEADER_NAME = 'baggage';\n\nconst SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';\n\nconst SENTRY_BAGGAGE_KEY_PREFIX_REGEX = /^sentry-/;\n\n/**\n * Max length of a serialized baggage string\n *\n * https://www.w3.org/TR/baggage/#limits\n */\nconst MAX_BAGGAGE_STRING_LENGTH = 8192;\n\n/**\n * Takes a baggage header and turns it into Dynamic Sampling Context, by extracting all the \"sentry-\" prefixed values\n * from it.\n *\n * @param baggageHeader A very bread definition of a baggage header as it might appear in various frameworks.\n * @returns The Dynamic Sampling Context that was found on `baggageHeader`, if there was any, `undefined` otherwise.\n */\nfunction baggageHeaderToDynamicSamplingContext(\n // Very liberal definition of what any incoming header might look like\n baggageHeader,\n) {\n if (!isString(baggageHeader) && !Array.isArray(baggageHeader)) {\n return undefined;\n }\n\n // Intermediary object to store baggage key value pairs of incoming baggage headers on.\n // It is later used to read Sentry-DSC-values from.\n let baggageObject = {};\n\n if (Array.isArray(baggageHeader)) {\n // Combine all baggage headers into one object containing the baggage values so we can later read the Sentry-DSC-values from it\n baggageObject = baggageHeader.reduce((acc, curr) => {\n const currBaggageObject = baggageHeaderToObject(curr);\n return {\n ...acc,\n ...currBaggageObject,\n };\n }, {});\n } else {\n // Return undefined if baggage header is an empty string (technically an empty baggage header is not spec conform but\n // this is how we choose to handle it)\n if (!baggageHeader) {\n return undefined;\n }\n\n baggageObject = baggageHeaderToObject(baggageHeader);\n }\n\n // Read all \"sentry-\" prefixed values out of the baggage object and put it onto a dynamic sampling context object.\n const dynamicSamplingContext = Object.entries(baggageObject).reduce((acc, [key, value]) => {\n if (key.match(SENTRY_BAGGAGE_KEY_PREFIX_REGEX)) {\n const nonPrefixedKey = key.slice(SENTRY_BAGGAGE_KEY_PREFIX.length);\n acc[nonPrefixedKey] = value;\n }\n return acc;\n }, {});\n\n // Only return a dynamic sampling context object if there are keys in it.\n // A keyless object means there were no sentry values on the header, which means that there is no DSC.\n if (Object.keys(dynamicSamplingContext).length > 0) {\n return dynamicSamplingContext ;\n } else {\n return undefined;\n }\n}\n\n/**\n * Turns a Dynamic Sampling Object into a baggage header by prefixing all the keys on the object with \"sentry-\".\n *\n * @param dynamicSamplingContext The Dynamic Sampling Context to turn into a header. For convenience and compatibility\n * with the `getDynamicSamplingContext` method on the Transaction class ,this argument can also be `undefined`. If it is\n * `undefined` the function will return `undefined`.\n * @returns a baggage header, created from `dynamicSamplingContext`, or `undefined` either if `dynamicSamplingContext`\n * was `undefined`, or if `dynamicSamplingContext` didn't contain any values.\n */\nfunction dynamicSamplingContextToSentryBaggageHeader(\n // this also takes undefined for convenience and bundle size in other places\n dynamicSamplingContext,\n) {\n if (!dynamicSamplingContext) {\n return undefined;\n }\n\n // Prefix all DSC keys with \"sentry-\" and put them into a new object\n const sentryPrefixedDSC = Object.entries(dynamicSamplingContext).reduce(\n (acc, [dscKey, dscValue]) => {\n if (dscValue) {\n acc[`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`] = dscValue;\n }\n return acc;\n },\n {},\n );\n\n return objectToBaggageHeader(sentryPrefixedDSC);\n}\n\n/**\n * Will parse a baggage header, which is a simple key-value map, into a flat object.\n *\n * @param baggageHeader The baggage header to parse.\n * @returns a flat object containing all the key-value pairs from `baggageHeader`.\n */\nfunction baggageHeaderToObject(baggageHeader) {\n return baggageHeader\n .split(',')\n .map(baggageEntry => baggageEntry.split('=').map(keyOrValue => decodeURIComponent(keyOrValue.trim())))\n .reduce((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }, {});\n}\n\n/**\n * Turns a flat object (key-value pairs) into a baggage header, which is also just key-value pairs.\n *\n * @param object The object to turn into a baggage header.\n * @returns a baggage header string, or `undefined` if the object didn't have any values, since an empty baggage header\n * is not spec compliant.\n */\nfunction objectToBaggageHeader(object) {\n if (Object.keys(object).length === 0) {\n // An empty baggage header is not spec compliant: We return undefined.\n return undefined;\n }\n\n return Object.entries(object).reduce((baggageHeader, [objectKey, objectValue], currentIndex) => {\n const baggageEntry = `${encodeURIComponent(objectKey)}=${encodeURIComponent(objectValue)}`;\n const newBaggageHeader = currentIndex === 0 ? baggageEntry : `${baggageHeader},${baggageEntry}`;\n if (newBaggageHeader.length > MAX_BAGGAGE_STRING_LENGTH) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `Not adding key: ${objectKey} with val: ${objectValue} to baggage header due to exceeding baggage size limits.`,\n );\n return baggageHeader;\n } else {\n return newBaggageHeader;\n }\n }, '');\n}\n\nexport { BAGGAGE_HEADER_NAME, MAX_BAGGAGE_STRING_LENGTH, SENTRY_BAGGAGE_KEY_PREFIX, SENTRY_BAGGAGE_KEY_PREFIX_REGEX, baggageHeaderToDynamicSamplingContext, dynamicSamplingContextToSentryBaggageHeader };\n","import { baggageHeaderToDynamicSamplingContext } from './baggage.js';\nimport { uuid4 } from './misc.js';\n\nconst TRACEPARENT_REGEXP = new RegExp(\n '^[ \\\\t]*' + // whitespace\n '([0-9a-f]{32})?' + // trace_id\n '-?([0-9a-f]{16})?' + // span_id\n '-?([01])?' + // sampled\n '[ \\\\t]*$', // whitespace\n);\n\n/**\n * Extract transaction context data from a `sentry-trace` header.\n *\n * @param traceparent Traceparent string\n *\n * @returns Object containing data from the header, or undefined if traceparent string is malformed\n */\nfunction extractTraceparentData(traceparent) {\n if (!traceparent) {\n return undefined;\n }\n\n const matches = traceparent.match(TRACEPARENT_REGEXP);\n if (!matches) {\n return undefined;\n }\n\n let parentSampled;\n if (matches[3] === '1') {\n parentSampled = true;\n } else if (matches[3] === '0') {\n parentSampled = false;\n }\n\n return {\n traceId: matches[1],\n parentSampled,\n parentSpanId: matches[2],\n };\n}\n\n/**\n * Create tracing context from incoming headers.\n */\nfunction tracingContextFromHeaders(\n sentryTrace,\n baggage,\n)\n\n {\n const traceparentData = extractTraceparentData(sentryTrace);\n const dynamicSamplingContext = baggageHeaderToDynamicSamplingContext(baggage);\n\n const { traceId, parentSpanId, parentSampled } = traceparentData || {};\n\n const propagationContext = {\n traceId: traceId || uuid4(),\n spanId: uuid4().substring(16),\n sampled: parentSampled === undefined ? false : parentSampled,\n };\n\n if (parentSpanId) {\n propagationContext.parentSpanId = parentSpanId;\n }\n\n if (dynamicSamplingContext) {\n propagationContext.dsc = dynamicSamplingContext ;\n }\n\n return {\n traceparentData,\n dynamicSamplingContext,\n propagationContext,\n };\n}\n\n/**\n * Create sentry-trace header from span context values.\n */\nfunction generateSentryTraceHeader(\n traceId = uuid4(),\n spanId = uuid4().substring(16),\n sampled,\n) {\n let sampledString = '';\n if (sampled !== undefined) {\n sampledString = sampled ? '-1' : '-0';\n }\n return `${traceId}-${spanId}${sampledString}`;\n}\n\nexport { TRACEPARENT_REGEXP, extractTraceparentData, generateSentryTraceHeader, tracingContextFromHeaders };\n","import { GLOBAL_OBJ } from '@sentry/utils';\n\nconst WINDOW = GLOBAL_OBJ ;\n\nexport { WINDOW };\n","const bindReporter = (\n callback,\n metric,\n reportAllChanges,\n) => {\n let prevValue;\n let delta;\n return (forceReport) => {\n if (metric.value >= 0) {\n if (forceReport || reportAllChanges) {\n delta = metric.value - (prevValue || 0);\n\n // Report the metric if there's a non-zero delta or if no previous\n // value exists (which can happen in the case of the document becoming\n // hidden when the metric value is 0).\n // See: https://github.com/GoogleChrome/web-vitals/issues/14\n if (delta || prevValue === undefined) {\n prevValue = metric.value;\n metric.delta = delta;\n callback(metric);\n }\n }\n }\n };\n};\n\nexport { bindReporter };\n","import { WINDOW } from '../../types.js';\n\n/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst getNavigationEntryFromPerformanceTiming = () => {\n // eslint-disable-next-line deprecation/deprecation\n const timing = WINDOW.performance.timing;\n // eslint-disable-next-line deprecation/deprecation\n const type = WINDOW.performance.navigation.type;\n\n const navigationEntry = {\n entryType: 'navigation',\n startTime: 0,\n type: type == 2 ? 'back_forward' : type === 1 ? 'reload' : 'navigate',\n };\n\n for (const key in timing) {\n if (key !== 'navigationStart' && key !== 'toJSON') {\n // eslint-disable-next-line deprecation/deprecation\n navigationEntry[key] = Math.max((timing[key ] ) - timing.navigationStart, 0);\n }\n }\n return navigationEntry ;\n};\n\nconst getNavigationEntry = () => {\n if (WINDOW.__WEB_VITALS_POLYFILL__) {\n return (\n WINDOW.performance &&\n ((performance.getEntriesByType && performance.getEntriesByType('navigation')[0]) ||\n getNavigationEntryFromPerformanceTiming())\n );\n } else {\n return WINDOW.performance && performance.getEntriesByType && performance.getEntriesByType('navigation')[0];\n }\n};\n\nexport { getNavigationEntry };\n","import { getNavigationEntry } from './getNavigationEntry.js';\n\n/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst getActivationStart = () => {\n const navEntry = getNavigationEntry();\n return (navEntry && navEntry.activationStart) || 0;\n};\n\nexport { getActivationStart };\n","import { WINDOW } from '../../types.js';\nimport { generateUniqueID } from './generateUniqueID.js';\nimport { getActivationStart } from './getActivationStart.js';\nimport { getNavigationEntry } from './getNavigationEntry.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst initMetric = (name, value) => {\n const navEntry = getNavigationEntry();\n let navigationType = 'navigate';\n\n if (navEntry) {\n if (WINDOW.document.prerendering || getActivationStart() > 0) {\n navigationType = 'prerender';\n } else {\n navigationType = navEntry.type.replace(/_/g, '-') ;\n }\n }\n\n return {\n name,\n value: typeof value === 'undefined' ? -1 : value,\n rating: 'good', // Will be updated if the value changes.\n delta: 0,\n entries: [],\n id: generateUniqueID(),\n navigationType,\n };\n};\n\nexport { initMetric };\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Performantly generate a unique, 30-char string by combining a version\n * number, the current timestamp with a 13-digit number integer.\n * @return {string}\n */\nconst generateUniqueID = () => {\n return `v3-${Date.now()}-${Math.floor(Math.random() * (9e12 - 1)) + 1e12}`;\n};\n\nexport { generateUniqueID };\n","/**\n * Takes a performance entry type and a callback function, and creates a\n * `PerformanceObserver` instance that will observe the specified entry type\n * with buffering enabled and call the callback _for each entry_.\n *\n * This function also feature-detects entry support and wraps the logic in a\n * try/catch to avoid errors in unsupporting browsers.\n */\nconst observe = (\n type,\n callback,\n opts,\n) => {\n try {\n if (PerformanceObserver.supportedEntryTypes.includes(type)) {\n const po = new PerformanceObserver(list => {\n callback(list.getEntries() );\n });\n po.observe(\n Object.assign(\n {\n type,\n buffered: true,\n },\n opts || {},\n ) ,\n );\n return po;\n }\n } catch (e) {\n // Do nothing.\n }\n return;\n};\n\nexport { observe };\n","import { WINDOW } from '../../types.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst onHidden = (cb, once) => {\n const onHiddenOrPageHide = (event) => {\n if (event.type === 'pagehide' || WINDOW.document.visibilityState === 'hidden') {\n cb(event);\n if (once) {\n removeEventListener('visibilitychange', onHiddenOrPageHide, true);\n removeEventListener('pagehide', onHiddenOrPageHide, true);\n }\n }\n };\n addEventListener('visibilitychange', onHiddenOrPageHide, true);\n // Some browsers have buggy implementations of visibilitychange,\n // so we use pagehide in addition, just to be safe.\n addEventListener('pagehide', onHiddenOrPageHide, true);\n};\n\nexport { onHidden };\n","import { WINDOW } from '../../types.js';\nimport { onHidden } from './onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nlet firstHiddenTime = -1;\n\nconst initHiddenTime = () => {\n // If the document is hidden and not prerendering, assume it was always\n // hidden and the page was loaded in the background.\n return WINDOW.document.visibilityState === 'hidden' && !WINDOW.document.prerendering ? 0 : Infinity;\n};\n\nconst trackChanges = () => {\n // Update the time if/when the document becomes hidden.\n onHidden(({ timeStamp }) => {\n firstHiddenTime = timeStamp;\n }, true);\n};\n\nconst getVisibilityWatcher = (\n\n) => {\n if (firstHiddenTime < 0) {\n // If the document is hidden when this code runs, assume it was hidden\n // since navigation start. This isn't a perfect heuristic, but it's the\n // best we can do until an API is available to support querying past\n // visibilityState.\n firstHiddenTime = initHiddenTime();\n trackChanges();\n }\n return {\n get firstHiddenTime() {\n return firstHiddenTime;\n },\n };\n};\n\nexport { getVisibilityWatcher };\n","import { bindReporter } from './lib/bindReporter.js';\nimport { getActivationStart } from './lib/getActivationStart.js';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst reportedMetricIDs = {};\n\n/**\n * Calculates the [LCP](https://web.dev/lcp/) value for the current page and\n * calls the `callback` function once the value is ready (along with the\n * relevant `largest-contentful-paint` performance entry used to determine the\n * value). The reported value is a `DOMHighResTimeStamp`.\n */\nconst onLCP = (onReport) => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('LCP');\n let report;\n\n const handleEntries = (entries) => {\n const lastEntry = entries[entries.length - 1] ;\n if (lastEntry) {\n // The startTime attribute returns the value of the renderTime if it is\n // not 0, and the value of the loadTime otherwise. The activationStart\n // reference is used because LCP should be relative to page activation\n // rather than navigation start if the page was prerendered.\n const value = Math.max(lastEntry.startTime - getActivationStart(), 0);\n\n // Only report if the page wasn't hidden prior to LCP.\n if (value < visibilityWatcher.firstHiddenTime) {\n metric.value = value;\n metric.entries = [lastEntry];\n report();\n }\n }\n };\n\n const po = observe('largest-contentful-paint', handleEntries);\n\n if (po) {\n report = bindReporter(onReport, metric);\n\n const stopListening = () => {\n if (!reportedMetricIDs[metric.id]) {\n handleEntries(po.takeRecords() );\n po.disconnect();\n reportedMetricIDs[metric.id] = true;\n report(true);\n }\n };\n\n // Stop listening after input. Note: while scrolling is an input that\n // stop LCP observation, it's unreliable since it can be programmatically\n // generated. See: https://github.com/GoogleChrome/web-vitals/issues/75\n ['keydown', 'click'].forEach(type => {\n addEventListener(type, stopListening, { once: true, capture: true });\n });\n\n onHidden(stopListening, true);\n\n return stopListening;\n }\n\n return;\n};\n\nexport { onLCP };\n","/**\n * Checks if a given value is a valid measurement value.\n */\nfunction isMeasurementValue(value) {\n return typeof value === 'number' && isFinite(value);\n}\n\n/**\n * Helper function to start child on transactions. This function will make sure that the transaction will\n * use the start timestamp of the created child span if it is earlier than the transactions actual\n * start timestamp.\n */\nfunction _startChild(transaction, { startTimestamp, ...ctx }) {\n if (startTimestamp && transaction.startTimestamp > startTimestamp) {\n transaction.startTimestamp = startTimestamp;\n }\n\n return transaction.startChild({\n startTimestamp,\n ...ctx,\n });\n}\n\nexport { _startChild, isMeasurementValue };\n","import { getActiveTransaction } from '@sentry/core';\nimport { browserPerformanceTimeOrigin, logger, htmlTreeAsString } from '@sentry/utils';\nimport { WINDOW } from '../types.js';\nimport { onCLS } from '../web-vitals/getCLS.js';\nimport { onFID } from '../web-vitals/getFID.js';\nimport { onLCP } from '../web-vitals/getLCP.js';\nimport { getVisibilityWatcher } from '../web-vitals/lib/getVisibilityWatcher.js';\nimport { observe } from '../web-vitals/lib/observe.js';\nimport { _startChild, isMeasurementValue } from './utils.js';\n\n/**\n * Converts from milliseconds to seconds\n * @param time time in ms\n */\nfunction msToSec(time) {\n return time / 1000;\n}\n\nfunction getBrowserPerformanceAPI() {\n // @ts-ignore we want to make sure all of these are available, even if TS is sure they are\n return WINDOW && WINDOW.addEventListener && WINDOW.performance;\n}\n\nlet _performanceCursor = 0;\n\nlet _measurements = {};\nlet _lcpEntry;\nlet _clsEntry;\n\n/**\n * Start tracking web vitals\n *\n * @returns A function that forces web vitals collection\n */\nfunction startTrackingWebVitals() {\n const performance = getBrowserPerformanceAPI();\n if (performance && browserPerformanceTimeOrigin) {\n // @ts-ignore we want to make sure all of these are available, even if TS is sure they are\n if (performance.mark) {\n WINDOW.performance.mark('sentry-tracing-init');\n }\n _trackFID();\n const clsCallback = _trackCLS();\n const lcpCallback = _trackLCP();\n\n return () => {\n if (clsCallback) {\n clsCallback();\n }\n if (lcpCallback) {\n lcpCallback();\n }\n };\n }\n\n return () => undefined;\n}\n\n/**\n * Start tracking long tasks.\n */\nfunction startTrackingLongTasks() {\n const entryHandler = (entries) => {\n for (const entry of entries) {\n const transaction = getActiveTransaction() ;\n if (!transaction) {\n return;\n }\n const startTime = msToSec((browserPerformanceTimeOrigin ) + entry.startTime);\n const duration = msToSec(entry.duration);\n\n transaction.startChild({\n description: 'Main UI thread blocked',\n op: 'ui.long-task',\n startTimestamp: startTime,\n endTimestamp: startTime + duration,\n });\n }\n };\n\n observe('longtask', entryHandler);\n}\n\n/**\n * Start tracking interaction events.\n */\nfunction startTrackingInteractions() {\n const entryHandler = (entries) => {\n for (const entry of entries) {\n const transaction = getActiveTransaction() ;\n if (!transaction) {\n return;\n }\n\n if (entry.name === 'click') {\n const startTime = msToSec((browserPerformanceTimeOrigin ) + entry.startTime);\n const duration = msToSec(entry.duration);\n\n transaction.startChild({\n description: htmlTreeAsString(entry.target),\n op: `ui.interaction.${entry.name}`,\n startTimestamp: startTime,\n endTimestamp: startTime + duration,\n });\n }\n }\n };\n\n observe('event', entryHandler, { durationThreshold: 0 });\n}\n\n/** Starts tracking the Cumulative Layout Shift on the current page. */\nfunction _trackCLS() {\n // See:\n // https://web.dev/evolving-cls/\n // https://web.dev/cls-web-tooling/\n return onCLS(metric => {\n const entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding CLS');\n _measurements['cls'] = { value: metric.value, unit: '' };\n _clsEntry = entry ;\n });\n}\n\n/** Starts tracking the Largest Contentful Paint on the current page. */\nfunction _trackLCP() {\n return onLCP(metric => {\n const entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding LCP');\n _measurements['lcp'] = { value: metric.value, unit: 'millisecond' };\n _lcpEntry = entry ;\n });\n}\n\n/** Starts tracking the First Input Delay on the current page. */\nfunction _trackFID() {\n onFID(metric => {\n const entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n const timeOrigin = msToSec(browserPerformanceTimeOrigin );\n const startTime = msToSec(entry.startTime);\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding FID');\n _measurements['fid'] = { value: metric.value, unit: 'millisecond' };\n _measurements['mark.fid'] = { value: timeOrigin + startTime, unit: 'second' };\n });\n}\n\n/** Add performance related spans to a transaction */\nfunction addPerformanceEntries(transaction) {\n const performance = getBrowserPerformanceAPI();\n if (!performance || !WINDOW.performance.getEntries || !browserPerformanceTimeOrigin) {\n // Gatekeeper if performance API not available\n return;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] Adding & adjusting spans using Performance API');\n const timeOrigin = msToSec(browserPerformanceTimeOrigin);\n\n const performanceEntries = performance.getEntries();\n\n let responseStartTimestamp;\n let requestStartTimestamp;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n performanceEntries.slice(_performanceCursor).forEach((entry) => {\n const startTime = msToSec(entry.startTime);\n const duration = msToSec(entry.duration);\n\n if (transaction.op === 'navigation' && timeOrigin + startTime < transaction.startTimestamp) {\n return;\n }\n\n switch (entry.entryType) {\n case 'navigation': {\n _addNavigationSpans(transaction, entry, timeOrigin);\n responseStartTimestamp = timeOrigin + msToSec(entry.responseStart);\n requestStartTimestamp = timeOrigin + msToSec(entry.requestStart);\n break;\n }\n case 'mark':\n case 'paint':\n case 'measure': {\n _addMeasureSpans(transaction, entry, startTime, duration, timeOrigin);\n\n // capture web vitals\n const firstHidden = getVisibilityWatcher();\n // Only report if the page wasn't hidden prior to the web vital.\n const shouldRecord = entry.startTime < firstHidden.firstHiddenTime;\n\n if (entry.name === 'first-paint' && shouldRecord) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding FP');\n _measurements['fp'] = { value: entry.startTime, unit: 'millisecond' };\n }\n if (entry.name === 'first-contentful-paint' && shouldRecord) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding FCP');\n _measurements['fcp'] = { value: entry.startTime, unit: 'millisecond' };\n }\n break;\n }\n case 'resource': {\n const resourceName = (entry.name ).replace(WINDOW.location.origin, '');\n _addResourceSpans(transaction, entry, resourceName, startTime, duration, timeOrigin);\n break;\n }\n // Ignore other entry types.\n }\n });\n\n _performanceCursor = Math.max(performanceEntries.length - 1, 0);\n\n _trackNavigator(transaction);\n\n // Measurements are only available for pageload transactions\n if (transaction.op === 'pageload') {\n // Generate TTFB (Time to First Byte), which measured as the time between the beginning of the transaction and the\n // start of the response in milliseconds\n if (typeof responseStartTimestamp === 'number') {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding TTFB');\n _measurements['ttfb'] = {\n value: (responseStartTimestamp - transaction.startTimestamp) * 1000,\n unit: 'millisecond',\n };\n\n if (typeof requestStartTimestamp === 'number' && requestStartTimestamp <= responseStartTimestamp) {\n // Capture the time spent making the request and receiving the first byte of the response.\n // This is the time between the start of the request and the start of the response in milliseconds.\n _measurements['ttfb.requestTime'] = {\n value: (responseStartTimestamp - requestStartTimestamp) * 1000,\n unit: 'millisecond',\n };\n }\n }\n\n ['fcp', 'fp', 'lcp'].forEach(name => {\n if (!_measurements[name] || timeOrigin >= transaction.startTimestamp) {\n return;\n }\n // The web vitals, fcp, fp, lcp, and ttfb, all measure relative to timeOrigin.\n // Unfortunately, timeOrigin is not captured within the transaction span data, so these web vitals will need\n // to be adjusted to be relative to transaction.startTimestamp.\n const oldValue = _measurements[name].value;\n const measurementTimestamp = timeOrigin + msToSec(oldValue);\n\n // normalizedValue should be in milliseconds\n const normalizedValue = Math.abs((measurementTimestamp - transaction.startTimestamp) * 1000);\n const delta = normalizedValue - oldValue;\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(`[Measurements] Normalized ${name} from ${oldValue} to ${normalizedValue} (${delta})`);\n _measurements[name].value = normalizedValue;\n });\n\n const fidMark = _measurements['mark.fid'];\n if (fidMark && _measurements['fid']) {\n // create span for FID\n _startChild(transaction, {\n description: 'first input delay',\n endTimestamp: fidMark.value + msToSec(_measurements['fid'].value),\n op: 'ui.action',\n startTimestamp: fidMark.value,\n });\n\n // Delete mark.fid as we don't want it to be part of final payload\n delete _measurements['mark.fid'];\n }\n\n // If FCP is not recorded we should not record the cls value\n // according to the new definition of CLS.\n if (!('fcp' in _measurements)) {\n delete _measurements.cls;\n }\n\n Object.keys(_measurements).forEach(measurementName => {\n transaction.setMeasurement(\n measurementName,\n _measurements[measurementName].value,\n _measurements[measurementName].unit,\n );\n });\n\n _tagMetricInfo(transaction);\n }\n\n _lcpEntry = undefined;\n _clsEntry = undefined;\n _measurements = {};\n}\n\n/** Create measure related spans */\nfunction _addMeasureSpans(\n transaction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n entry,\n startTime,\n duration,\n timeOrigin,\n) {\n const measureStartTimestamp = timeOrigin + startTime;\n const measureEndTimestamp = measureStartTimestamp + duration;\n\n _startChild(transaction, {\n description: entry.name ,\n endTimestamp: measureEndTimestamp,\n op: entry.entryType ,\n startTimestamp: measureStartTimestamp,\n });\n\n return measureStartTimestamp;\n}\n\n/** Instrument navigation entries */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _addNavigationSpans(transaction, entry, timeOrigin) {\n ['unloadEvent', 'redirect', 'domContentLoadedEvent', 'loadEvent', 'connect'].forEach(event => {\n _addPerformanceNavigationTiming(transaction, entry, event, timeOrigin);\n });\n _addPerformanceNavigationTiming(transaction, entry, 'secureConnection', timeOrigin, 'TLS/SSL', 'connectEnd');\n _addPerformanceNavigationTiming(transaction, entry, 'fetch', timeOrigin, 'cache', 'domainLookupStart');\n _addPerformanceNavigationTiming(transaction, entry, 'domainLookup', timeOrigin, 'DNS');\n _addRequest(transaction, entry, timeOrigin);\n}\n\n/** Create performance navigation related spans */\nfunction _addPerformanceNavigationTiming(\n transaction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n entry,\n event,\n timeOrigin,\n description,\n eventEnd,\n) {\n const end = eventEnd ? (entry[eventEnd] ) : (entry[`${event}End`] );\n const start = entry[`${event}Start`] ;\n if (!start || !end) {\n return;\n }\n _startChild(transaction, {\n op: 'browser',\n description: description || event,\n startTimestamp: timeOrigin + msToSec(start),\n endTimestamp: timeOrigin + msToSec(end),\n });\n}\n\n/** Create request and response related spans */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _addRequest(transaction, entry, timeOrigin) {\n _startChild(transaction, {\n op: 'browser',\n description: 'request',\n startTimestamp: timeOrigin + msToSec(entry.requestStart ),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd ),\n });\n\n _startChild(transaction, {\n op: 'browser',\n description: 'response',\n startTimestamp: timeOrigin + msToSec(entry.responseStart ),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd ),\n });\n}\n\n/** Create resource-related spans */\nfunction _addResourceSpans(\n transaction,\n entry,\n resourceName,\n startTime,\n duration,\n timeOrigin,\n) {\n // we already instrument based on fetch and xhr, so we don't need to\n // duplicate spans here.\n if (entry.initiatorType === 'xmlhttprequest' || entry.initiatorType === 'fetch') {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const data = {};\n if ('transferSize' in entry) {\n data['http.response_transfer_size'] = entry.transferSize;\n }\n if ('encodedBodySize' in entry) {\n data['http.response_content_length'] = entry.encodedBodySize;\n }\n if ('decodedBodySize' in entry) {\n data['http.decoded_response_content_length'] = entry.decodedBodySize;\n }\n if ('renderBlockingStatus' in entry) {\n data['resource.render_blocking_status'] = entry.renderBlockingStatus;\n }\n\n const startTimestamp = timeOrigin + startTime;\n const endTimestamp = startTimestamp + duration;\n\n _startChild(transaction, {\n description: resourceName,\n endTimestamp,\n op: entry.initiatorType ? `resource.${entry.initiatorType}` : 'resource.other',\n startTimestamp,\n data,\n });\n}\n\n/**\n * Capture the information of the user agent.\n */\nfunction _trackNavigator(transaction) {\n const navigator = WINDOW.navigator ;\n if (!navigator) {\n return;\n }\n\n // track network connectivity\n const connection = navigator.connection;\n if (connection) {\n if (connection.effectiveType) {\n transaction.setTag('effectiveConnectionType', connection.effectiveType);\n }\n\n if (connection.type) {\n transaction.setTag('connectionType', connection.type);\n }\n\n if (isMeasurementValue(connection.rtt)) {\n _measurements['connection.rtt'] = { value: connection.rtt, unit: 'millisecond' };\n }\n }\n\n if (isMeasurementValue(navigator.deviceMemory)) {\n transaction.setTag('deviceMemory', `${navigator.deviceMemory} GB`);\n }\n\n if (isMeasurementValue(navigator.hardwareConcurrency)) {\n transaction.setTag('hardwareConcurrency', String(navigator.hardwareConcurrency));\n }\n}\n\n/** Add LCP / CLS data to transaction to allow debugging */\nfunction _tagMetricInfo(transaction) {\n if (_lcpEntry) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding LCP Data');\n\n // Capture Properties of the LCP element that contributes to the LCP.\n\n if (_lcpEntry.element) {\n transaction.setTag('lcp.element', htmlTreeAsString(_lcpEntry.element));\n }\n\n if (_lcpEntry.id) {\n transaction.setTag('lcp.id', _lcpEntry.id);\n }\n\n if (_lcpEntry.url) {\n // Trim URL to the first 200 characters.\n transaction.setTag('lcp.url', _lcpEntry.url.trim().slice(0, 200));\n }\n\n transaction.setTag('lcp.size', _lcpEntry.size);\n }\n\n // See: https://developer.mozilla.org/en-US/docs/Web/API/LayoutShift\n if (_clsEntry && _clsEntry.sources) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding CLS Data');\n _clsEntry.sources.forEach((source, index) =>\n transaction.setTag(`cls.source.${index + 1}`, htmlTreeAsString(source.node)),\n );\n }\n}\n\nexport { _addMeasureSpans, _addResourceSpans, addPerformanceEntries, startTrackingInteractions, startTrackingLongTasks, startTrackingWebVitals };\n","import { bindReporter } from './lib/bindReporter.js';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Calculates the [FID](https://web.dev/fid/) value for the current page and\n * calls the `callback` function once the value is ready, along with the\n * relevant `first-input` performance entry used to determine the value. The\n * reported value is a `DOMHighResTimeStamp`.\n *\n * _**Important:** since FID is only reported after the user interacts with the\n * page, it's possible that it will not be reported for some page loads._\n */\nconst onFID = (onReport) => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('FID');\n // eslint-disable-next-line prefer-const\n let report;\n\n const handleEntry = (entry) => {\n // Only report if the page wasn't hidden prior to the first input.\n if (entry.startTime < visibilityWatcher.firstHiddenTime) {\n metric.value = entry.processingStart - entry.startTime;\n metric.entries.push(entry);\n report(true);\n }\n };\n\n const handleEntries = (entries) => {\n (entries ).forEach(handleEntry);\n };\n\n const po = observe('first-input', handleEntries);\n report = bindReporter(onReport, metric);\n\n if (po) {\n onHidden(() => {\n handleEntries(po.takeRecords() );\n po.disconnect();\n }, true);\n }\n};\n\nexport { onFID };\n","import { bindReporter } from './lib/bindReporter.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Calculates the [CLS](https://web.dev/cls/) value for the current page and\n * calls the `callback` function once the value is ready to be reported, along\n * with all `layout-shift` performance entries that were used in the metric\n * value calculation. The reported value is a `double` (corresponding to a\n * [layout shift score](https://web.dev/cls/#layout-shift-score)).\n *\n * If the `reportAllChanges` configuration option is set to `true`, the\n * `callback` function will be called as soon as the value is initially\n * determined as well as any time the value changes throughout the page\n * lifespan.\n *\n * _**Important:** CLS should be continually monitored for changes throughout\n * the entire lifespan of a page—including if the user returns to the page after\n * it's been hidden/backgrounded. However, since browsers often [will not fire\n * additional callbacks once the user has backgrounded a\n * page](https://developer.chrome.com/blog/page-lifecycle-api/#advice-hidden),\n * `callback` is always called when the page's visibility state changes to\n * hidden. As a result, the `callback` function might be called multiple times\n * during the same page load._\n */\nconst onCLS = (onReport) => {\n const metric = initMetric('CLS', 0);\n let report;\n\n let sessionValue = 0;\n let sessionEntries = [];\n\n // const handleEntries = (entries: Metric['entries']) => {\n const handleEntries = (entries) => {\n entries.forEach(entry => {\n // Only count layout shifts without recent user input.\n if (!entry.hadRecentInput) {\n const firstSessionEntry = sessionEntries[0];\n const lastSessionEntry = sessionEntries[sessionEntries.length - 1];\n\n // If the entry occurred less than 1 second after the previous entry and\n // less than 5 seconds after the first entry in the session, include the\n // entry in the current session. Otherwise, start a new session.\n if (\n sessionValue &&\n sessionEntries.length !== 0 &&\n entry.startTime - lastSessionEntry.startTime < 1000 &&\n entry.startTime - firstSessionEntry.startTime < 5000\n ) {\n sessionValue += entry.value;\n sessionEntries.push(entry);\n } else {\n sessionValue = entry.value;\n sessionEntries = [entry];\n }\n\n // If the current session value is larger than the current CLS value,\n // update CLS and the entries contributing to it.\n if (sessionValue > metric.value) {\n metric.value = sessionValue;\n metric.entries = sessionEntries;\n if (report) {\n report();\n }\n }\n }\n });\n };\n\n const po = observe('layout-shift', handleEntries);\n if (po) {\n report = bindReporter(onReport, metric);\n\n const stopListening = () => {\n handleEntries(po.takeRecords() );\n report(true);\n };\n\n onHidden(stopListening);\n\n return stopListening;\n }\n\n return;\n};\n\nexport { onCLS };\n","import { hasTracingEnabled, getCurrentHub, getDynamicSamplingContextFromClient } from '@sentry/core';\nimport { addInstrumentationHandler, browserPerformanceTimeOrigin, generateSentryTraceHeader, dynamicSamplingContextToSentryBaggageHeader, isInstanceOf, BAGGAGE_HEADER_NAME, SENTRY_XHR_DATA_KEY, stringMatchesSomePattern } from '@sentry/utils';\n\n/* eslint-disable max-lines */\n\nconst DEFAULT_TRACE_PROPAGATION_TARGETS = ['localhost', /^\\/(?!\\/)/];\n\n/** Options for Request Instrumentation */\n\nconst defaultRequestInstrumentationOptions = {\n traceFetch: true,\n traceXHR: true,\n enableHTTPTimings: true,\n // TODO (v8): Remove this property\n tracingOrigins: DEFAULT_TRACE_PROPAGATION_TARGETS,\n tracePropagationTargets: DEFAULT_TRACE_PROPAGATION_TARGETS,\n};\n\n/** Registers span creators for xhr and fetch requests */\nfunction instrumentOutgoingRequests(_options) {\n const {\n traceFetch,\n traceXHR,\n tracePropagationTargets,\n // eslint-disable-next-line deprecation/deprecation\n tracingOrigins,\n shouldCreateSpanForRequest,\n enableHTTPTimings,\n } = {\n traceFetch: defaultRequestInstrumentationOptions.traceFetch,\n traceXHR: defaultRequestInstrumentationOptions.traceXHR,\n ..._options,\n };\n\n const shouldCreateSpan =\n typeof shouldCreateSpanForRequest === 'function' ? shouldCreateSpanForRequest : (_) => true;\n\n // TODO(v8) Remove tracingOrigins here\n // The only reason we're passing it in here is because this instrumentOutgoingRequests function is publicly exported\n // and we don't want to break the API. We can remove it in v8.\n const shouldAttachHeadersWithTargets = (url) =>\n shouldAttachHeaders(url, tracePropagationTargets || tracingOrigins);\n\n const spans = {};\n\n if (traceFetch) {\n addInstrumentationHandler('fetch', (handlerData) => {\n const createdSpan = fetchCallback(handlerData, shouldCreateSpan, shouldAttachHeadersWithTargets, spans);\n if (enableHTTPTimings && createdSpan) {\n addHTTPTimings(createdSpan);\n }\n });\n }\n\n if (traceXHR) {\n addInstrumentationHandler('xhr', (handlerData) => {\n const createdSpan = xhrCallback(handlerData, shouldCreateSpan, shouldAttachHeadersWithTargets, spans);\n if (enableHTTPTimings && createdSpan) {\n addHTTPTimings(createdSpan);\n }\n });\n }\n}\n\n/**\n * Creates a temporary observer to listen to the next fetch/xhr resourcing timings,\n * so that when timings hit their per-browser limit they don't need to be removed.\n *\n * @param span A span that has yet to be finished, must contain `url` on data.\n */\nfunction addHTTPTimings(span) {\n const url = span.data.url;\n const observer = new PerformanceObserver(list => {\n const entries = list.getEntries() ;\n entries.forEach(entry => {\n if ((entry.initiatorType === 'fetch' || entry.initiatorType === 'xmlhttprequest') && entry.name.endsWith(url)) {\n const spanData = resourceTimingEntryToSpanData(entry);\n spanData.forEach(data => span.setData(...data));\n observer.disconnect();\n }\n });\n });\n observer.observe({\n entryTypes: ['resource'],\n });\n}\n\n/**\n * Converts ALPN protocol ids to name and version.\n *\n * (https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids)\n * @param nextHopProtocol PerformanceResourceTiming.nextHopProtocol\n */\nfunction extractNetworkProtocol(nextHopProtocol) {\n let name = 'unknown';\n let version = 'unknown';\n let _name = '';\n for (const char of nextHopProtocol) {\n // http/1.1 etc.\n if (char === '/') {\n [name, version] = nextHopProtocol.split('/');\n break;\n }\n // h2, h3 etc.\n if (!isNaN(Number(char))) {\n name = _name === 'h' ? 'http' : _name;\n version = nextHopProtocol.split(_name)[1];\n break;\n }\n _name += char;\n }\n if (_name === nextHopProtocol) {\n // webrtc, ftp, etc.\n name = _name;\n }\n return { name, version };\n}\n\nfunction getAbsoluteTime(time) {\n return ((browserPerformanceTimeOrigin || performance.timeOrigin) + time) / 1000;\n}\n\nfunction resourceTimingEntryToSpanData(resourceTiming) {\n const { name, version } = extractNetworkProtocol(resourceTiming.nextHopProtocol);\n\n const timingSpanData = [];\n\n timingSpanData.push(['network.protocol.version', version], ['network.protocol.name', name]);\n\n if (!browserPerformanceTimeOrigin) {\n return timingSpanData;\n }\n return [\n ...timingSpanData,\n ['http.request.redirect_start', getAbsoluteTime(resourceTiming.redirectStart)],\n ['http.request.fetch_start', getAbsoluteTime(resourceTiming.fetchStart)],\n ['http.request.domain_lookup_start', getAbsoluteTime(resourceTiming.domainLookupStart)],\n ['http.request.domain_lookup_end', getAbsoluteTime(resourceTiming.domainLookupEnd)],\n ['http.request.connect_start', getAbsoluteTime(resourceTiming.connectStart)],\n ['http.request.secure_connection_start', getAbsoluteTime(resourceTiming.secureConnectionStart)],\n ['http.request.connection_end', getAbsoluteTime(resourceTiming.connectEnd)],\n ['http.request.request_start', getAbsoluteTime(resourceTiming.requestStart)],\n ['http.request.response_start', getAbsoluteTime(resourceTiming.responseStart)],\n ['http.request.response_end', getAbsoluteTime(resourceTiming.responseEnd)],\n ];\n}\n\n/**\n * A function that determines whether to attach tracing headers to a request.\n * This was extracted from `instrumentOutgoingRequests` to make it easier to test shouldAttachHeaders.\n * We only export this fuction for testing purposes.\n */\nfunction shouldAttachHeaders(url, tracePropagationTargets) {\n return stringMatchesSomePattern(url, tracePropagationTargets || DEFAULT_TRACE_PROPAGATION_TARGETS);\n}\n\n/**\n * Create and track fetch request spans\n *\n * @returns Span if a span was created, otherwise void.\n */\nfunction fetchCallback(\n handlerData,\n shouldCreateSpan,\n shouldAttachHeaders,\n spans,\n) {\n if (!hasTracingEnabled() || !handlerData.fetchData) {\n return undefined;\n }\n\n const shouldCreateSpanResult = shouldCreateSpan(handlerData.fetchData.url);\n\n if (handlerData.endTimestamp && shouldCreateSpanResult) {\n const spanId = handlerData.fetchData.__span;\n if (!spanId) return;\n\n const span = spans[spanId];\n if (span) {\n if (handlerData.response) {\n // TODO (kmclb) remove this once types PR goes through\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n span.setHttpStatus(handlerData.response.status);\n\n const contentLength =\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n handlerData.response && handlerData.response.headers && handlerData.response.headers.get('content-length');\n\n const contentLengthNum = parseInt(contentLength);\n if (contentLengthNum > 0) {\n span.setData('http.response_content_length', contentLengthNum);\n }\n } else if (handlerData.error) {\n span.setStatus('internal_error');\n }\n span.finish();\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return undefined;\n }\n\n const hub = getCurrentHub();\n const scope = hub.getScope();\n const client = hub.getClient();\n const parentSpan = scope.getSpan();\n\n const { method, url } = handlerData.fetchData;\n\n const span =\n shouldCreateSpanResult && parentSpan\n ? parentSpan.startChild({\n data: {\n url,\n type: 'fetch',\n 'http.method': method,\n },\n description: `${method} ${url}`,\n op: 'http.client',\n })\n : undefined;\n\n if (span) {\n handlerData.fetchData.__span = span.spanId;\n spans[span.spanId] = span;\n }\n\n if (shouldAttachHeaders(handlerData.fetchData.url) && client) {\n const request = handlerData.args[0];\n\n // In case the user hasn't set the second argument of a fetch call we default it to `{}`.\n handlerData.args[1] = handlerData.args[1] || {};\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const options = handlerData.args[1];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n options.headers = addTracingHeadersToFetchRequest(request, client, scope, options, span);\n }\n\n return span;\n}\n\n/**\n * Adds sentry-trace and baggage headers to the various forms of fetch headers\n */\nfunction addTracingHeadersToFetchRequest(\n request, // unknown is actually type Request but we can't export DOM types from this package,\n client,\n scope,\n options\n\n,\n requestSpan,\n) {\n const span = requestSpan || scope.getSpan();\n\n const transaction = span && span.transaction;\n\n const { traceId, sampled, dsc } = scope.getPropagationContext();\n\n const sentryTraceHeader = span ? span.toTraceparent() : generateSentryTraceHeader(traceId, undefined, sampled);\n const dynamicSamplingContext = transaction\n ? transaction.getDynamicSamplingContext()\n : dsc\n ? dsc\n : getDynamicSamplingContextFromClient(traceId, client, scope);\n\n const sentryBaggageHeader = dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext);\n\n const headers =\n typeof Request !== 'undefined' && isInstanceOf(request, Request) ? (request ).headers : options.headers;\n\n if (!headers) {\n return { 'sentry-trace': sentryTraceHeader, baggage: sentryBaggageHeader };\n } else if (typeof Headers !== 'undefined' && isInstanceOf(headers, Headers)) {\n const newHeaders = new Headers(headers );\n\n newHeaders.append('sentry-trace', sentryTraceHeader);\n\n if (sentryBaggageHeader) {\n // If the same header is appended multiple times the browser will merge the values into a single request header.\n // Its therefore safe to simply push a \"baggage\" entry, even though there might already be another baggage header.\n newHeaders.append(BAGGAGE_HEADER_NAME, sentryBaggageHeader);\n }\n\n return newHeaders ;\n } else if (Array.isArray(headers)) {\n const newHeaders = [...headers, ['sentry-trace', sentryTraceHeader]];\n\n if (sentryBaggageHeader) {\n // If there are multiple entries with the same key, the browser will merge the values into a single request header.\n // Its therefore safe to simply push a \"baggage\" entry, even though there might already be another baggage header.\n newHeaders.push([BAGGAGE_HEADER_NAME, sentryBaggageHeader]);\n }\n\n return newHeaders ;\n } else {\n const existingBaggageHeader = 'baggage' in headers ? headers.baggage : undefined;\n const newBaggageHeaders = [];\n\n if (Array.isArray(existingBaggageHeader)) {\n newBaggageHeaders.push(...existingBaggageHeader);\n } else if (existingBaggageHeader) {\n newBaggageHeaders.push(existingBaggageHeader);\n }\n\n if (sentryBaggageHeader) {\n newBaggageHeaders.push(sentryBaggageHeader);\n }\n\n return {\n ...(headers ),\n 'sentry-trace': sentryTraceHeader,\n baggage: newBaggageHeaders.length > 0 ? newBaggageHeaders.join(',') : undefined,\n };\n }\n}\n\n/**\n * Create and track xhr request spans\n *\n * @returns Span if a span was created, otherwise void.\n */\n// eslint-disable-next-line complexity\nfunction xhrCallback(\n handlerData,\n shouldCreateSpan,\n shouldAttachHeaders,\n spans,\n) {\n const xhr = handlerData.xhr;\n const sentryXhrData = xhr && xhr[SENTRY_XHR_DATA_KEY];\n\n if (!hasTracingEnabled() || (xhr && xhr.__sentry_own_request__) || !xhr || !sentryXhrData) {\n return undefined;\n }\n\n const shouldCreateSpanResult = shouldCreateSpan(sentryXhrData.url);\n\n // check first if the request has finished and is tracked by an existing span which should now end\n if (handlerData.endTimestamp && shouldCreateSpanResult) {\n const spanId = xhr.__sentry_xhr_span_id__;\n if (!spanId) return;\n\n const span = spans[spanId];\n if (span) {\n span.setHttpStatus(sentryXhrData.status_code);\n span.finish();\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return undefined;\n }\n\n const hub = getCurrentHub();\n const scope = hub.getScope();\n const parentSpan = scope.getSpan();\n\n const span =\n shouldCreateSpanResult && parentSpan\n ? parentSpan.startChild({\n data: {\n ...sentryXhrData.data,\n type: 'xhr',\n 'http.method': sentryXhrData.method,\n url: sentryXhrData.url,\n },\n description: `${sentryXhrData.method} ${sentryXhrData.url}`,\n op: 'http.client',\n })\n : undefined;\n\n if (span) {\n xhr.__sentry_xhr_span_id__ = span.spanId;\n spans[xhr.__sentry_xhr_span_id__] = span;\n }\n\n if (xhr.setRequestHeader && shouldAttachHeaders(sentryXhrData.url)) {\n if (span) {\n const transaction = span && span.transaction;\n const dynamicSamplingContext = transaction && transaction.getDynamicSamplingContext();\n const sentryBaggageHeader = dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext);\n setHeaderOnXhr(xhr, span.toTraceparent(), sentryBaggageHeader);\n } else {\n const client = hub.getClient();\n const { traceId, sampled, dsc } = scope.getPropagationContext();\n const sentryTraceHeader = generateSentryTraceHeader(traceId, undefined, sampled);\n const dynamicSamplingContext =\n dsc || (client ? getDynamicSamplingContextFromClient(traceId, client, scope) : undefined);\n const sentryBaggageHeader = dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext);\n setHeaderOnXhr(xhr, sentryTraceHeader, sentryBaggageHeader);\n }\n }\n\n return span;\n}\n\nfunction setHeaderOnXhr(\n xhr,\n sentryTraceHeader,\n sentryBaggageHeader,\n) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n xhr.setRequestHeader('sentry-trace', sentryTraceHeader);\n if (sentryBaggageHeader) {\n // From MDN: \"If this method is called several times with the same header, the values are merged into one single request header.\"\n // We can therefore simply set a baggage header without checking what was there before\n // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/setRequestHeader\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n xhr.setRequestHeader(BAGGAGE_HEADER_NAME, sentryBaggageHeader);\n }\n } catch (_) {\n // Error: InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.\n }\n}\n\nexport { DEFAULT_TRACE_PROPAGATION_TARGETS, addTracingHeadersToFetchRequest, defaultRequestInstrumentationOptions, extractNetworkProtocol, fetchCallback, instrumentOutgoingRequests, shouldAttachHeaders, xhrCallback };\n","import { TRACING_DEFAULTS, addTracingExtensions, startIdleTransaction, getActiveTransaction } from '@sentry/core';\nimport { logger, tracingContextFromHeaders, getDomElement } from '@sentry/utils';\nimport { registerBackgroundTabDetection } from './backgroundtab.js';\nimport { startTrackingWebVitals, startTrackingLongTasks, startTrackingInteractions, addPerformanceEntries } from './metrics/index.js';\nimport { defaultRequestInstrumentationOptions, instrumentOutgoingRequests } from './request.js';\nimport { instrumentRoutingWithDefaults } from './router.js';\nimport { WINDOW } from './types.js';\n\nconst BROWSER_TRACING_INTEGRATION_ID = 'BrowserTracing';\n\n/** Options for Browser Tracing integration */\n\nconst DEFAULT_BROWSER_TRACING_OPTIONS = {\n ...TRACING_DEFAULTS,\n markBackgroundTransactions: true,\n routingInstrumentation: instrumentRoutingWithDefaults,\n startTransactionOnLocationChange: true,\n startTransactionOnPageLoad: true,\n enableLongTask: true,\n _experiments: {},\n ...defaultRequestInstrumentationOptions,\n};\n\n/**\n * The Browser Tracing integration automatically instruments browser pageload/navigation\n * actions as transactions, and captures requests, metrics and errors as spans.\n *\n * The integration can be configured with a variety of options, and can be extended to use\n * any routing library. This integration uses {@see IdleTransaction} to create transactions.\n */\nclass BrowserTracing {\n // This class currently doesn't have a static `id` field like the other integration classes, because it prevented\n // @sentry/tracing from being treeshaken. Tree shakers do not like static fields, because they behave like side effects.\n // TODO: Come up with a better plan, than using static fields on integration classes, and use that plan on all\n // integrations.\n\n /** Browser Tracing integration options */\n\n /**\n * @inheritDoc\n */\n\n constructor(_options) {\n this.name = BROWSER_TRACING_INTEGRATION_ID;\n this._hasSetTracePropagationTargets = false;\n\n addTracingExtensions();\n\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n this._hasSetTracePropagationTargets = !!(\n _options &&\n // eslint-disable-next-line deprecation/deprecation\n (_options.tracePropagationTargets || _options.tracingOrigins)\n );\n }\n\n this.options = {\n ...DEFAULT_BROWSER_TRACING_OPTIONS,\n ..._options,\n };\n\n // Special case: enableLongTask can be set in _experiments\n // TODO (v8): Remove this in v8\n if (this.options._experiments.enableLongTask !== undefined) {\n this.options.enableLongTask = this.options._experiments.enableLongTask;\n }\n\n // TODO (v8): remove this block after tracingOrigins is removed\n // Set tracePropagationTargets to tracingOrigins if specified by the user\n // In case both are specified, tracePropagationTargets takes precedence\n // eslint-disable-next-line deprecation/deprecation\n if (_options && !_options.tracePropagationTargets && _options.tracingOrigins) {\n // eslint-disable-next-line deprecation/deprecation\n this.options.tracePropagationTargets = _options.tracingOrigins;\n }\n\n this._collectWebVitals = startTrackingWebVitals();\n if (this.options.enableLongTask) {\n startTrackingLongTasks();\n }\n if (this.options._experiments.enableInteractions) {\n startTrackingInteractions();\n }\n }\n\n /**\n * @inheritDoc\n */\n setupOnce(_, getCurrentHub) {\n this._getCurrentHub = getCurrentHub;\n const hub = getCurrentHub();\n const client = hub.getClient();\n const clientOptions = client && client.getOptions();\n\n const {\n routingInstrumentation: instrumentRouting,\n startTransactionOnLocationChange,\n startTransactionOnPageLoad,\n markBackgroundTransactions,\n traceFetch,\n traceXHR,\n shouldCreateSpanForRequest,\n enableHTTPTimings,\n _experiments,\n } = this.options;\n\n const clientOptionsTracePropagationTargets = clientOptions && clientOptions.tracePropagationTargets;\n // There are three ways to configure tracePropagationTargets:\n // 1. via top level client option `tracePropagationTargets`\n // 2. via BrowserTracing option `tracePropagationTargets`\n // 3. via BrowserTracing option `tracingOrigins` (deprecated)\n //\n // To avoid confusion, favour top level client option `tracePropagationTargets`, and fallback to\n // BrowserTracing option `tracePropagationTargets` and then `tracingOrigins` (deprecated).\n // This is done as it minimizes bundle size (we don't have to have undefined checks).\n //\n // If both 1 and either one of 2 or 3 are set (from above), we log out a warning.\n const tracePropagationTargets = clientOptionsTracePropagationTargets || this.options.tracePropagationTargets;\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && this._hasSetTracePropagationTargets && clientOptionsTracePropagationTargets) {\n logger.warn(\n '[Tracing] The `tracePropagationTargets` option was set in the BrowserTracing integration and top level `Sentry.init`. The top level `Sentry.init` value is being used.',\n );\n }\n\n instrumentRouting(\n (context) => {\n const transaction = this._createRouteTransaction(context);\n\n this.options._experiments.onStartRouteTransaction &&\n this.options._experiments.onStartRouteTransaction(transaction, context, getCurrentHub);\n\n return transaction;\n },\n startTransactionOnPageLoad,\n startTransactionOnLocationChange,\n );\n\n if (markBackgroundTransactions) {\n registerBackgroundTabDetection();\n }\n\n if (_experiments.enableInteractions) {\n this._registerInteractionListener();\n }\n\n instrumentOutgoingRequests({\n traceFetch,\n traceXHR,\n tracePropagationTargets,\n shouldCreateSpanForRequest,\n enableHTTPTimings,\n });\n }\n\n /** Create routing idle transaction. */\n _createRouteTransaction(context) {\n if (!this._getCurrentHub) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(`[Tracing] Did not create ${context.op} transaction because _getCurrentHub is invalid.`);\n return undefined;\n }\n\n const hub = this._getCurrentHub();\n\n const { beforeNavigate, idleTimeout, finalTimeout, heartbeatInterval } = this.options;\n\n const isPageloadTransaction = context.op === 'pageload';\n\n const sentryTrace = isPageloadTransaction ? getMetaContent('sentry-trace') : '';\n const baggage = isPageloadTransaction ? getMetaContent('baggage') : '';\n const { traceparentData, dynamicSamplingContext, propagationContext } = tracingContextFromHeaders(\n sentryTrace,\n baggage,\n );\n\n const expandedContext = {\n ...context,\n ...traceparentData,\n metadata: {\n ...context.metadata,\n dynamicSamplingContext: traceparentData && !dynamicSamplingContext ? {} : dynamicSamplingContext,\n },\n trimEnd: true,\n };\n\n const modifiedContext = typeof beforeNavigate === 'function' ? beforeNavigate(expandedContext) : expandedContext;\n\n // For backwards compatibility reasons, beforeNavigate can return undefined to \"drop\" the transaction (prevent it\n // from being sent to Sentry).\n const finalContext = modifiedContext === undefined ? { ...expandedContext, sampled: false } : modifiedContext;\n\n // If `beforeNavigate` set a custom name, record that fact\n finalContext.metadata =\n finalContext.name !== expandedContext.name\n ? { ...finalContext.metadata, source: 'custom' }\n : finalContext.metadata;\n\n this._latestRouteName = finalContext.name;\n this._latestRouteSource = finalContext.metadata && finalContext.metadata.source;\n\n if (finalContext.sampled === false) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(`[Tracing] Will not send ${finalContext.op} transaction because of beforeNavigate.`);\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] Starting ${finalContext.op} transaction on scope`);\n\n const { location } = WINDOW;\n\n const idleTransaction = startIdleTransaction(\n hub,\n finalContext,\n idleTimeout,\n finalTimeout,\n true,\n { location }, // for use in the tracesSampler\n heartbeatInterval,\n );\n\n const scope = hub.getScope();\n\n // If it's a pageload and there is a meta tag set\n // use the traceparentData as the propagation context\n if (isPageloadTransaction && traceparentData) {\n scope.setPropagationContext(propagationContext);\n } else {\n // Navigation transactions should set a new propagation context based on the\n // created idle transaction.\n scope.setPropagationContext({\n traceId: idleTransaction.traceId,\n spanId: idleTransaction.spanId,\n parentSpanId: idleTransaction.parentSpanId,\n sampled: !!idleTransaction.sampled,\n });\n }\n\n idleTransaction.registerBeforeFinishCallback(transaction => {\n this._collectWebVitals();\n addPerformanceEntries(transaction);\n });\n\n return idleTransaction ;\n }\n\n /** Start listener for interaction transactions */\n _registerInteractionListener() {\n let inflightInteractionTransaction;\n const registerInteractionTransaction = () => {\n const { idleTimeout, finalTimeout, heartbeatInterval } = this.options;\n const op = 'ui.action.click';\n\n const currentTransaction = getActiveTransaction();\n if (currentTransaction && currentTransaction.op && ['navigation', 'pageload'].includes(currentTransaction.op)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `[Tracing] Did not create ${op} transaction because a pageload or navigation transaction is in progress.`,\n );\n return undefined;\n }\n\n if (inflightInteractionTransaction) {\n inflightInteractionTransaction.setFinishReason('interactionInterrupted');\n inflightInteractionTransaction.finish();\n inflightInteractionTransaction = undefined;\n }\n\n if (!this._getCurrentHub) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`[Tracing] Did not create ${op} transaction because _getCurrentHub is invalid.`);\n return undefined;\n }\n\n if (!this._latestRouteName) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(`[Tracing] Did not create ${op} transaction because _latestRouteName is missing.`);\n return undefined;\n }\n\n const hub = this._getCurrentHub();\n const { location } = WINDOW;\n\n const context = {\n name: this._latestRouteName,\n op,\n trimEnd: true,\n metadata: {\n source: this._latestRouteSource || 'url',\n },\n };\n\n inflightInteractionTransaction = startIdleTransaction(\n hub,\n context,\n idleTimeout,\n finalTimeout,\n true,\n { location }, // for use in the tracesSampler\n heartbeatInterval,\n );\n };\n\n ['click'].forEach(type => {\n addEventListener(type, registerInteractionTransaction, { once: false, capture: true });\n });\n }\n}\n\n/** Returns the value of a meta tag */\nfunction getMetaContent(metaName) {\n // Can't specify generic to `getDomElement` because tracing can be used\n // in a variety of environments, have to disable `no-unsafe-member-access`\n // as a result.\n const metaTag = getDomElement(`meta[name=${metaName}]`);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return metaTag ? metaTag.getAttribute('content') : undefined;\n}\n\nexport { BROWSER_TRACING_INTEGRATION_ID, BrowserTracing, getMetaContent };\n","import { logger, browserPerformanceTimeOrigin, addInstrumentationHandler } from '@sentry/utils';\nimport { WINDOW } from './types.js';\n\n/**\n * Default function implementing pageload and navigation transactions\n */\nfunction instrumentRoutingWithDefaults(\n customStartTransaction,\n startTransactionOnPageLoad = true,\n startTransactionOnLocationChange = true,\n) {\n if (!WINDOW || !WINDOW.location) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Could not initialize routing instrumentation due to invalid location');\n return;\n }\n\n let startingUrl = WINDOW.location.href;\n\n let activeTransaction;\n if (startTransactionOnPageLoad) {\n activeTransaction = customStartTransaction({\n name: WINDOW.location.pathname,\n // pageload should always start at timeOrigin (and needs to be in s, not ms)\n startTimestamp: browserPerformanceTimeOrigin ? browserPerformanceTimeOrigin / 1000 : undefined,\n op: 'pageload',\n metadata: { source: 'url' },\n });\n }\n\n if (startTransactionOnLocationChange) {\n addInstrumentationHandler('history', ({ to, from }) => {\n /**\n * This early return is there to account for some cases where a navigation transaction starts right after\n * long-running pageload. We make sure that if `from` is undefined and a valid `startingURL` exists, we don't\n * create an uneccessary navigation transaction.\n *\n * This was hard to duplicate, but this behavior stopped as soon as this fix was applied. This issue might also\n * only be caused in certain development environments where the usage of a hot module reloader is causing\n * errors.\n */\n if (from === undefined && startingUrl && startingUrl.indexOf(to) !== -1) {\n startingUrl = undefined;\n return;\n }\n\n if (from !== to) {\n startingUrl = undefined;\n if (activeTransaction) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] Finishing current transaction with op: ${activeTransaction.op}`);\n // If there's an open transaction on the scope, we need to finish it before creating an new one.\n activeTransaction.finish();\n }\n activeTransaction = customStartTransaction({\n name: WINDOW.location.pathname,\n op: 'navigation',\n metadata: { source: 'url' },\n });\n }\n });\n }\n}\n\nexport { instrumentRoutingWithDefaults };\n","/**\n * Polyfill for the optional chain operator, `?.`, given previous conversion of the expression into an array of values,\n * descriptors, and functions.\n *\n * Adapted from Sucrase (https://github.com/alangpierce/sucrase)\n * See https://github.com/alangpierce/sucrase/blob/265887868966917f3b924ce38dfad01fbab1329f/src/transformers/OptionalChainingNullishTransformer.ts#L15\n *\n * @param ops Array result of expression conversion\n * @returns The value of the expression\n */\nfunction _optionalChain(ops) {\n let lastAccessLHS = undefined;\n let value = ops[0];\n let i = 1;\n while (i < ops.length) {\n const op = ops[i] ;\n const fn = ops[i + 1] ;\n i += 2;\n // by checking for loose equality to `null`, we catch both `null` and `undefined`\n if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n // really we're meaning to return `undefined` as an actual value here, but it saves bytes not to write it\n return;\n }\n if (op === 'access' || op === 'optionalAccess') {\n lastAccessLHS = value;\n value = fn(value);\n } else if (op === 'call' || op === 'optionalCall') {\n value = fn((...args) => (value ).call(lastAccessLHS, ...args));\n lastAccessLHS = undefined;\n }\n }\n return value;\n}\n\n// Sucrase version\n// function _optionalChain(ops) {\n// let lastAccessLHS = undefined;\n// let value = ops[0];\n// let i = 1;\n// while (i < ops.length) {\n// const op = ops[i];\n// const fn = ops[i + 1];\n// i += 2;\n// if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n// return undefined;\n// }\n// if (op === 'access' || op === 'optionalAccess') {\n// lastAccessLHS = value;\n// value = fn(value);\n// } else if (op === 'call' || op === 'optionalCall') {\n// value = fn((...args) => value.call(lastAccessLHS, ...args));\n// lastAccessLHS = undefined;\n// }\n// }\n// return value;\n// }\n\nexport { _optionalChain };\n","import { _optionalChain } from '@sentry/utils/esm/buildPolyfills';\n\n/**\n * Check if Sentry auto-instrumentation should be disabled.\n *\n * @param getCurrentHub A method to fetch the current hub\n * @returns boolean\n */\nfunction shouldDisableAutoInstrumentation(getCurrentHub) {\n const clientOptions = _optionalChain([getCurrentHub, 'call', _ => _(), 'access', _2 => _2.getClient, 'call', _3 => _3(), 'optionalAccess', _4 => _4.getOptions, 'call', _5 => _5()]);\n const instrumenter = _optionalChain([clientOptions, 'optionalAccess', _6 => _6.instrumenter]) || 'sentry';\n\n return instrumenter !== 'sentry';\n}\n\nexport { shouldDisableAutoInstrumentation };\n","import { _optionalChain } from '@sentry/utils/esm/buildPolyfills';\nimport { loadModule, logger, fill, arrayify, isThenable } from '@sentry/utils';\nimport { shouldDisableAutoInstrumentation } from './utils/node-utils.js';\n\n/** Tracing integration for Apollo */\nclass Apollo {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'Apollo';}\n\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n constructor(\n options = {\n useNestjs: false,\n },\n ) {\n this.name = Apollo.id;\n this._useNest = !!options.useNestjs;\n }\n\n /** @inheritdoc */\n loadDependency() {\n if (this._useNest) {\n this._module = this._module || loadModule('@nestjs/graphql');\n } else {\n this._module = this._module || loadModule('apollo-server-core');\n }\n\n return this._module;\n }\n\n /**\n * @inheritDoc\n */\n setupOnce(_, getCurrentHub) {\n if (shouldDisableAutoInstrumentation(getCurrentHub)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('Apollo Integration is skipped because of instrumenter configuration.');\n return;\n }\n\n if (this._useNest) {\n const pkg = this.loadDependency();\n\n if (!pkg) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Apollo-NestJS Integration was unable to require @nestjs/graphql package.');\n return;\n }\n\n /**\n * Iterate over resolvers of NestJS ResolversExplorerService before schemas are constructed.\n */\n fill(\n pkg.GraphQLFactory.prototype,\n 'mergeWithSchema',\n function (orig) {\n return function (\n\n ...args\n ) {\n fill(this.resolversExplorerService, 'explore', function (orig) {\n return function () {\n const resolvers = arrayify(orig.call(this));\n\n const instrumentedResolvers = instrumentResolvers(resolvers, getCurrentHub);\n\n return instrumentedResolvers;\n };\n });\n\n return orig.call(this, ...args);\n };\n },\n );\n } else {\n const pkg = this.loadDependency();\n\n if (!pkg) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Apollo Integration was unable to require apollo-server-core package.');\n return;\n }\n\n /**\n * Iterate over resolvers of the ApolloServer instance before schemas are constructed.\n */\n fill(pkg.ApolloServerBase.prototype, 'constructSchema', function (orig) {\n return function (\n\n) {\n if (!this.config.resolvers) {\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n if (this.config.schema) {\n logger.warn(\n 'Apollo integration is not able to trace `ApolloServer` instances constructed via `schema` property.' +\n 'If you are using NestJS with Apollo, please use `Sentry.Integrations.Apollo({ useNestjs: true })` instead.',\n );\n logger.warn();\n } else if (this.config.modules) {\n logger.warn(\n 'Apollo integration is not able to trace `ApolloServer` instances constructed via `modules` property.',\n );\n }\n\n logger.error('Skipping tracing as no resolvers found on the `ApolloServer` instance.');\n }\n\n return orig.call(this);\n }\n\n const resolvers = arrayify(this.config.resolvers);\n\n this.config.resolvers = instrumentResolvers(resolvers, getCurrentHub);\n\n return orig.call(this);\n };\n });\n }\n }\n}Apollo.__initStatic();\n\nfunction instrumentResolvers(resolvers, getCurrentHub) {\n return resolvers.map(model => {\n Object.keys(model).forEach(resolverGroupName => {\n Object.keys(model[resolverGroupName]).forEach(resolverName => {\n if (typeof model[resolverGroupName][resolverName] !== 'function') {\n return;\n }\n\n wrapResolver(model, resolverGroupName, resolverName, getCurrentHub);\n });\n });\n\n return model;\n });\n}\n\n/**\n * Wrap a single resolver which can be a parent of other resolvers and/or db operations.\n */\nfunction wrapResolver(\n model,\n resolverGroupName,\n resolverName,\n getCurrentHub,\n) {\n fill(model[resolverGroupName], resolverName, function (orig) {\n return function ( ...args) {\n const scope = getCurrentHub().getScope();\n const parentSpan = _optionalChain([scope, 'optionalAccess', _2 => _2.getSpan, 'call', _3 => _3()]);\n const span = _optionalChain([parentSpan, 'optionalAccess', _4 => _4.startChild, 'call', _5 => _5({\n description: `${resolverGroupName}.${resolverName}`,\n op: 'graphql.resolve',\n })]);\n\n const rv = orig.call(this, ...args);\n\n if (isThenable(rv)) {\n return rv.then((res) => {\n _optionalChain([span, 'optionalAccess', _6 => _6.finish, 'call', _7 => _7()]);\n return res;\n });\n }\n\n _optionalChain([span, 'optionalAccess', _8 => _8.finish, 'call', _9 => _9()]);\n\n return rv;\n };\n });\n}\n\nexport { Apollo };\n","import { _optionalChain } from '@sentry/utils/esm/buildPolyfills';\nimport { logger, getNumberOfUrlSegments, stripUrlQueryAndFragment, extractPathForTransaction, isRegExp } from '@sentry/utils';\nimport { shouldDisableAutoInstrumentation } from './utils/node-utils.js';\n\n/**\n * Express integration\n *\n * Provides an request and error handler for Express framework as well as tracing capabilities\n */\nclass Express {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'Express';}\n\n /**\n * @inheritDoc\n */\n\n /**\n * Express App instance\n */\n\n /**\n * @inheritDoc\n */\n constructor(options = {}) {\n this.name = Express.id;\n this._router = options.router || options.app;\n this._methods = (Array.isArray(options.methods) ? options.methods : []).concat('use');\n }\n\n /**\n * @inheritDoc\n */\n setupOnce(_, getCurrentHub) {\n if (!this._router) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('ExpressIntegration is missing an Express instance');\n return;\n }\n\n if (shouldDisableAutoInstrumentation(getCurrentHub)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('Express Integration is skipped because of instrumenter configuration.');\n return;\n }\n\n instrumentMiddlewares(this._router, this._methods);\n instrumentRouter(this._router );\n }\n}Express.__initStatic();\n\n/**\n * Wraps original middleware function in a tracing call, which stores the info about the call as a span,\n * and finishes it once the middleware is done invoking.\n *\n * Express middlewares have 3 various forms, thus we have to take care of all of them:\n * // sync\n * app.use(function (req, res) { ... })\n * // async\n * app.use(function (req, res, next) { ... })\n * // error handler\n * app.use(function (err, req, res, next) { ... })\n *\n * They all internally delegate to the `router[method]` of the given application instance.\n */\n// eslint-disable-next-line @typescript-eslint/ban-types, @typescript-eslint/no-explicit-any\nfunction wrap(fn, method) {\n const arity = fn.length;\n\n switch (arity) {\n case 2: {\n return function ( req, res) {\n const transaction = res.__sentry_transaction;\n if (transaction) {\n const span = transaction.startChild({\n description: fn.name,\n op: `middleware.express.${method}`,\n });\n res.once('finish', () => {\n span.finish();\n });\n }\n return fn.call(this, req, res);\n };\n }\n case 3: {\n return function (\n\n req,\n res,\n next,\n ) {\n const transaction = res.__sentry_transaction;\n const span = _optionalChain([transaction, 'optionalAccess', _2 => _2.startChild, 'call', _3 => _3({\n description: fn.name,\n op: `middleware.express.${method}`,\n })]);\n fn.call(this, req, res, function ( ...args) {\n _optionalChain([span, 'optionalAccess', _4 => _4.finish, 'call', _5 => _5()]);\n next.call(this, ...args);\n });\n };\n }\n case 4: {\n return function (\n\n err,\n req,\n res,\n next,\n ) {\n const transaction = res.__sentry_transaction;\n const span = _optionalChain([transaction, 'optionalAccess', _6 => _6.startChild, 'call', _7 => _7({\n description: fn.name,\n op: `middleware.express.${method}`,\n })]);\n fn.call(this, err, req, res, function ( ...args) {\n _optionalChain([span, 'optionalAccess', _8 => _8.finish, 'call', _9 => _9()]);\n next.call(this, ...args);\n });\n };\n }\n default: {\n throw new Error(`Express middleware takes 2-4 arguments. Got: ${arity}`);\n }\n }\n}\n\n/**\n * Takes all the function arguments passed to the original `app` or `router` method, eg. `app.use` or `router.use`\n * and wraps every function, as well as array of functions with a call to our `wrap` method.\n * We have to take care of the arrays as well as iterate over all of the arguments,\n * as `app.use` can accept middlewares in few various forms.\n *\n * app.use([], )\n * app.use([], , ...)\n * app.use([], ...[])\n */\nfunction wrapMiddlewareArgs(args, method) {\n return args.map((arg) => {\n if (typeof arg === 'function') {\n return wrap(arg, method);\n }\n\n if (Array.isArray(arg)) {\n return arg.map((a) => {\n if (typeof a === 'function') {\n return wrap(a, method);\n }\n return a;\n });\n }\n\n return arg;\n });\n}\n\n/**\n * Patches original router to utilize our tracing functionality\n */\nfunction patchMiddleware(router, method) {\n const originalCallback = router[method];\n\n router[method] = function (...args) {\n return originalCallback.call(this, ...wrapMiddlewareArgs(args, method));\n };\n\n return router;\n}\n\n/**\n * Patches original router methods\n */\nfunction instrumentMiddlewares(router, methods = []) {\n methods.forEach((method) => patchMiddleware(router, method));\n}\n\n/**\n * Patches the prototype of Express.Router to accumulate the resolved route\n * if a layer instance's `match` function was called and it returned a successful match.\n *\n * @see https://github.com/expressjs/express/blob/master/lib/router/index.js\n *\n * @param appOrRouter the router instance which can either be an app (i.e. top-level) or a (nested) router.\n */\nfunction instrumentRouter(appOrRouter) {\n // This is how we can distinguish between app and routers\n const isApp = 'settings' in appOrRouter;\n\n // In case the app's top-level router hasn't been initialized yet, we have to do it now\n if (isApp && appOrRouter._router === undefined && appOrRouter.lazyrouter) {\n appOrRouter.lazyrouter();\n }\n\n const router = isApp ? appOrRouter._router : appOrRouter;\n\n if (!router) {\n /*\n If we end up here, this means likely that this integration is used with Express 3 or Express 5.\n For now, we don't support these versions (3 is very old and 5 is still in beta). To support Express 5,\n we'd need to make more changes to the routing instrumentation because the router is no longer part of\n the Express core package but maintained in its own package. The new router has different function\n signatures and works slightly differently, demanding more changes than just taking the router from\n `app.router` instead of `app._router`.\n @see https://github.com/pillarjs/router\n\n TODO: Proper Express 5 support\n */\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.debug('Cannot instrument router for URL Parameterization (did not find a valid router).');\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.debug('Routing instrumentation is currently only supported in Express 4.');\n return;\n }\n\n const routerProto = Object.getPrototypeOf(router) ;\n\n const originalProcessParams = routerProto.process_params;\n routerProto.process_params = function process_params(\n layer,\n called,\n req,\n res,\n done,\n ) {\n // Base case: We're in the first part of the URL (thus we start with the root '/')\n if (!req._reconstructedRoute) {\n req._reconstructedRoute = '';\n }\n\n // If the layer's partial route has params, is a regex or an array, the route is stored in layer.route.\n const { layerRoutePath, isRegex, isArray, numExtraSegments } = getLayerRoutePathInfo(layer);\n\n if (layerRoutePath || isRegex || isArray) {\n req._hasParameters = true;\n }\n\n // Otherwise, the hardcoded path (i.e. a partial route without params) is stored in layer.path\n const partialRoute = layerRoutePath || layer.path || '';\n\n // Normalize the partial route so that it doesn't contain leading or trailing slashes\n // and exclude empty or '*' wildcard routes.\n // The exclusion of '*' routes is our best effort to not \"pollute\" the transaction name\n // with interim handlers (e.g. ones that check authentication or do other middleware stuff).\n // We want to end up with the parameterized URL of the incoming request without any extraneous path segments.\n const finalPartialRoute = partialRoute\n .split('/')\n .filter(segment => segment.length > 0 && (isRegex || isArray || !segment.includes('*')))\n .join('/');\n\n // If we found a valid partial URL, we append it to the reconstructed route\n if (finalPartialRoute && finalPartialRoute.length > 0) {\n // If the partial route is from a regex route, we append a '/' to close the regex\n req._reconstructedRoute += `/${finalPartialRoute}${isRegex ? '/' : ''}`;\n }\n\n // Now we check if we are in the \"last\" part of the route. We determine this by comparing the\n // number of URL segments from the original URL to that of our reconstructed parameterized URL.\n // If we've reached our final destination, we update the transaction name.\n const urlLength = getNumberOfUrlSegments(req.originalUrl || '') + numExtraSegments;\n const routeLength = getNumberOfUrlSegments(req._reconstructedRoute);\n\n if (urlLength === routeLength) {\n if (!req._hasParameters) {\n if (req._reconstructedRoute !== req.originalUrl) {\n req._reconstructedRoute = req.originalUrl ? stripUrlQueryAndFragment(req.originalUrl) : req.originalUrl;\n }\n }\n\n const transaction = res.__sentry_transaction;\n if (transaction && transaction.metadata.source !== 'custom') {\n // If the request URL is '/' or empty, the reconstructed route will be empty.\n // Therefore, we fall back to setting the final route to '/' in this case.\n const finalRoute = req._reconstructedRoute || '/';\n\n transaction.setName(...extractPathForTransaction(req, { path: true, method: true, customRoute: finalRoute }));\n }\n }\n\n return originalProcessParams.call(this, layer, called, req, res, done);\n };\n}\n\n/**\n * Extracts and stringifies the layer's route which can either be a string with parameters (`users/:id`),\n * a RegEx (`/test/`) or an array of strings and regexes (`['/path1', /\\/path[2-5]/, /path/:id]`). Additionally\n * returns extra information about the route, such as if the route is defined as regex or as an array.\n *\n * @param layer the layer to extract the stringified route from\n *\n * @returns an object containing the stringified route, a flag determining if the route was a regex\n * and the number of extra segments to the matched path that are additionally in the route,\n * if the route was an array (defaults to 0).\n */\nfunction getLayerRoutePathInfo(layer) {\n const lrp = _optionalChain([layer, 'access', _10 => _10.route, 'optionalAccess', _11 => _11.path]);\n\n const isRegex = isRegExp(lrp);\n const isArray = Array.isArray(lrp);\n\n if (!lrp) {\n return { isRegex, isArray, numExtraSegments: 0 };\n }\n\n const numExtraSegments = isArray\n ? Math.max(getNumberOfArrayUrlSegments(lrp ) - getNumberOfUrlSegments(layer.path || ''), 0)\n : 0;\n\n const layerRoutePath = getLayerRoutePathString(isArray, lrp);\n\n return { layerRoutePath, isRegex, isArray, numExtraSegments };\n}\n\n/**\n * Returns the number of URL segments in an array of routes\n *\n * Example: ['/api/test', /\\/api\\/post[0-9]/, '/users/:id/details`] -> 7\n */\nfunction getNumberOfArrayUrlSegments(routesArray) {\n return routesArray.reduce((accNumSegments, currentRoute) => {\n // array members can be a RegEx -> convert them toString\n return accNumSegments + getNumberOfUrlSegments(currentRoute.toString());\n }, 0);\n}\n\n/**\n * Extracts and returns the stringified version of the layers route path\n * Handles route arrays (by joining the paths together) as well as RegExp and normal\n * string values (in the latter case the toString conversion is technically unnecessary but\n * it doesn't hurt us either).\n */\nfunction getLayerRoutePathString(isArray, lrp) {\n if (isArray) {\n return (lrp ).map(r => r.toString()).join(',');\n }\n return lrp && lrp.toString();\n}\n\nexport { Express };\n","import { isString, isPlainObject } from './is.js';\nimport { normalize } from './normalize.js';\nimport { stripUrlQueryAndFragment } from './url.js';\n\nconst DEFAULT_INCLUDES = {\n ip: false,\n request: true,\n transaction: true,\n user: true,\n};\nconst DEFAULT_REQUEST_INCLUDES = ['cookies', 'data', 'headers', 'method', 'query_string', 'url'];\nconst DEFAULT_USER_INCLUDES = ['id', 'username', 'email'];\n\n/**\n * Sets parameterized route as transaction name e.g.: `GET /users/:id`\n * Also adds more context data on the transaction from the request\n */\nfunction addRequestDataToTransaction(\n transaction,\n req,\n deps,\n) {\n if (!transaction) return;\n if (!transaction.metadata.source || transaction.metadata.source === 'url') {\n // Attempt to grab a parameterized route off of the request\n transaction.setName(...extractPathForTransaction(req, { path: true, method: true }));\n }\n transaction.setData('url', req.originalUrl || req.url);\n if (req.baseUrl) {\n transaction.setData('baseUrl', req.baseUrl);\n }\n transaction.setData('query', extractQueryParams(req, deps));\n}\n\n/**\n * Extracts a complete and parameterized path from the request object and uses it to construct transaction name.\n * If the parameterized transaction name cannot be extracted, we fall back to the raw URL.\n *\n * Additionally, this function determines and returns the transaction name source\n *\n * eg. GET /mountpoint/user/:id\n *\n * @param req A request object\n * @param options What to include in the transaction name (method, path, or a custom route name to be\n * used instead of the request's route)\n *\n * @returns A tuple of the fully constructed transaction name [0] and its source [1] (can be either 'route' or 'url')\n */\nfunction extractPathForTransaction(\n req,\n options = {},\n) {\n const method = req.method && req.method.toUpperCase();\n\n let path = '';\n let source = 'url';\n\n // Check to see if there's a parameterized route we can use (as there is in Express)\n if (options.customRoute || req.route) {\n path = options.customRoute || `${req.baseUrl || ''}${req.route && req.route.path}`;\n source = 'route';\n }\n\n // Otherwise, just take the original URL\n else if (req.originalUrl || req.url) {\n path = stripUrlQueryAndFragment(req.originalUrl || req.url || '');\n }\n\n let name = '';\n if (options.method && method) {\n name += method;\n }\n if (options.method && options.path) {\n name += ' ';\n }\n if (options.path && path) {\n name += path;\n }\n\n return [name, source];\n}\n\n/** JSDoc */\nfunction extractTransaction(req, type) {\n switch (type) {\n case 'path': {\n return extractPathForTransaction(req, { path: true })[0];\n }\n case 'handler': {\n return (req.route && req.route.stack && req.route.stack[0] && req.route.stack[0].name) || '';\n }\n case 'methodPath':\n default: {\n return extractPathForTransaction(req, { path: true, method: true })[0];\n }\n }\n}\n\n/** JSDoc */\nfunction extractUserData(\n user\n\n,\n keys,\n) {\n const extractedUser = {};\n const attributes = Array.isArray(keys) ? keys : DEFAULT_USER_INCLUDES;\n\n attributes.forEach(key => {\n if (user && key in user) {\n extractedUser[key] = user[key];\n }\n });\n\n return extractedUser;\n}\n\n/**\n * Normalize data from the request object, accounting for framework differences.\n *\n * @param req The request object from which to extract data\n * @param options.include An optional array of keys to include in the normalized data. Defaults to\n * DEFAULT_REQUEST_INCLUDES if not provided.\n * @param options.deps Injected, platform-specific dependencies\n * @returns An object containing normalized request data\n */\nfunction extractRequestData(\n req,\n options\n\n,\n) {\n const { include = DEFAULT_REQUEST_INCLUDES, deps } = options || {};\n const requestData = {};\n\n // headers:\n // node, express, koa, nextjs: req.headers\n const headers = (req.headers || {})\n\n;\n // method:\n // node, express, koa, nextjs: req.method\n const method = req.method;\n // host:\n // express: req.hostname in > 4 and req.host in < 4\n // koa: req.host\n // node, nextjs: req.headers.host\n const host = req.hostname || req.host || headers.host || '';\n // protocol:\n // node, nextjs: \n // express, koa: req.protocol\n const protocol = req.protocol === 'https' || (req.socket && req.socket.encrypted) ? 'https' : 'http';\n // url (including path and query string):\n // node, express: req.originalUrl\n // koa, nextjs: req.url\n const originalUrl = req.originalUrl || req.url || '';\n // absolute url\n const absoluteUrl = `${protocol}://${host}${originalUrl}`;\n include.forEach(key => {\n switch (key) {\n case 'headers': {\n requestData.headers = headers;\n break;\n }\n case 'method': {\n requestData.method = method;\n break;\n }\n case 'url': {\n requestData.url = absoluteUrl;\n break;\n }\n case 'cookies': {\n // cookies:\n // node, express, koa: req.headers.cookie\n // vercel, sails.js, express (w/ cookie middleware), nextjs: req.cookies\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n requestData.cookies =\n // TODO (v8 / #5257): We're only sending the empty object for backwards compatibility, so the last bit can\n // come off in v8\n req.cookies || (headers.cookie && deps && deps.cookie && deps.cookie.parse(headers.cookie)) || {};\n break;\n }\n case 'query_string': {\n // query string:\n // node: req.url (raw)\n // express, koa, nextjs: req.query\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n requestData.query_string = extractQueryParams(req, deps);\n break;\n }\n case 'data': {\n if (method === 'GET' || method === 'HEAD') {\n break;\n }\n // body data:\n // express, koa, nextjs: req.body\n //\n // when using node by itself, you have to read the incoming stream(see\n // https://nodejs.dev/learn/get-http-request-body-data-using-nodejs); if a user is doing that, we can't know\n // where they're going to store the final result, so they'll have to capture this data themselves\n if (req.body !== undefined) {\n requestData.data = isString(req.body) ? req.body : JSON.stringify(normalize(req.body));\n }\n break;\n }\n default: {\n if ({}.hasOwnProperty.call(req, key)) {\n requestData[key] = (req )[key];\n }\n }\n }\n });\n\n return requestData;\n}\n\n/**\n * Options deciding what parts of the request to use when enhancing an event\n */\n\n/**\n * Add data from the given request to the given event\n *\n * @param event The event to which the request data will be added\n * @param req Request object\n * @param options.include Flags to control what data is included\n * @param options.deps Injected platform-specific dependencies\n * @hidden\n */\nfunction addRequestDataToEvent(\n event,\n req,\n options,\n) {\n const include = {\n ...DEFAULT_INCLUDES,\n ...(options && options.include),\n };\n\n if (include.request) {\n const extractedRequestData = Array.isArray(include.request)\n ? extractRequestData(req, { include: include.request, deps: options && options.deps })\n : extractRequestData(req, { deps: options && options.deps });\n\n event.request = {\n ...event.request,\n ...extractedRequestData,\n };\n }\n\n if (include.user) {\n const extractedUser = req.user && isPlainObject(req.user) ? extractUserData(req.user, include.user) : {};\n\n if (Object.keys(extractedUser).length) {\n event.user = {\n ...event.user,\n ...extractedUser,\n };\n }\n }\n\n // client ip:\n // node, nextjs: req.socket.remoteAddress\n // express, koa: req.ip\n if (include.ip) {\n const ip = req.ip || (req.socket && req.socket.remoteAddress);\n if (ip) {\n event.user = {\n ...event.user,\n ip_address: ip,\n };\n }\n }\n\n if (include.transaction && !event.transaction) {\n // TODO do we even need this anymore?\n // TODO make this work for nextjs\n event.transaction = extractTransaction(req, include.transaction);\n }\n\n return event;\n}\n\nfunction extractQueryParams(\n req,\n deps,\n) {\n // url (including path and query string):\n // node, express: req.originalUrl\n // koa, nextjs: req.url\n let originalUrl = req.originalUrl || req.url || '';\n\n if (!originalUrl) {\n return;\n }\n\n // The `URL` constructor can't handle internal URLs of the form `/some/path/here`, so stick a dummy protocol and\n // hostname on the beginning. Since the point here is just to grab the query string, it doesn't matter what we use.\n if (originalUrl.startsWith('/')) {\n originalUrl = `http://dogs.are.great${originalUrl}`;\n }\n\n return (\n req.query ||\n (typeof URL !== undefined && new URL(originalUrl).search.replace('?', '')) ||\n // In Node 8, `URL` isn't in the global scope, so we have to use the built-in module from Node\n (deps && deps.url && deps.url.parse(originalUrl).query) ||\n undefined\n );\n}\n\nexport { addRequestDataToEvent, addRequestDataToTransaction, extractPathForTransaction, extractRequestData };\n","import { _optionalChain } from '@sentry/utils/esm/buildPolyfills';\nimport { loadModule, logger, fill, isThenable } from '@sentry/utils';\nimport { shouldDisableAutoInstrumentation } from './utils/node-utils.js';\n\n/** Tracing integration for graphql package */\nclass GraphQL {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'GraphQL';}\n\n /**\n * @inheritDoc\n */\n\n constructor() {\n this.name = GraphQL.id;\n }\n\n /** @inheritdoc */\n loadDependency() {\n return (this._module = this._module || loadModule('graphql/execution/execute.js'));\n }\n\n /**\n * @inheritDoc\n */\n setupOnce(_, getCurrentHub) {\n if (shouldDisableAutoInstrumentation(getCurrentHub)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('GraphQL Integration is skipped because of instrumenter configuration.');\n return;\n }\n\n const pkg = this.loadDependency();\n\n if (!pkg) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('GraphQL Integration was unable to require graphql/execution package.');\n return;\n }\n\n fill(pkg, 'execute', function (orig) {\n return function ( ...args) {\n const scope = getCurrentHub().getScope();\n const parentSpan = _optionalChain([scope, 'optionalAccess', _2 => _2.getSpan, 'call', _3 => _3()]);\n\n const span = _optionalChain([parentSpan, 'optionalAccess', _4 => _4.startChild, 'call', _5 => _5({\n description: 'execute',\n op: 'graphql.execute',\n })]);\n\n _optionalChain([scope, 'optionalAccess', _6 => _6.setSpan, 'call', _7 => _7(span)]);\n\n const rv = orig.call(this, ...args);\n\n if (isThenable(rv)) {\n return rv.then((res) => {\n _optionalChain([span, 'optionalAccess', _8 => _8.finish, 'call', _9 => _9()]);\n _optionalChain([scope, 'optionalAccess', _10 => _10.setSpan, 'call', _11 => _11(parentSpan)]);\n\n return res;\n });\n }\n\n _optionalChain([span, 'optionalAccess', _12 => _12.finish, 'call', _13 => _13()]);\n _optionalChain([scope, 'optionalAccess', _14 => _14.setSpan, 'call', _15 => _15(parentSpan)]);\n return rv;\n };\n });\n }\n}GraphQL.__initStatic();\n\nexport { GraphQL };\n","import { _optionalChain } from '@sentry/utils/esm/buildPolyfills';\nimport { loadModule, logger, fill, isThenable } from '@sentry/utils';\nimport { shouldDisableAutoInstrumentation } from './utils/node-utils.js';\n\n// This allows us to use the same array for both defaults options and the type itself.\n// (note `as const` at the end to make it a union of string literal types (i.e. \"a\" | \"b\" | ... )\n// and not just a string[])\n\nconst OPERATIONS = [\n 'aggregate', // aggregate(pipeline, options, callback)\n 'bulkWrite', // bulkWrite(operations, options, callback)\n 'countDocuments', // countDocuments(query, options, callback)\n 'createIndex', // createIndex(fieldOrSpec, options, callback)\n 'createIndexes', // createIndexes(indexSpecs, options, callback)\n 'deleteMany', // deleteMany(filter, options, callback)\n 'deleteOne', // deleteOne(filter, options, callback)\n 'distinct', // distinct(key, query, options, callback)\n 'drop', // drop(options, callback)\n 'dropIndex', // dropIndex(indexName, options, callback)\n 'dropIndexes', // dropIndexes(options, callback)\n 'estimatedDocumentCount', // estimatedDocumentCount(options, callback)\n 'find', // find(query, options, callback)\n 'findOne', // findOne(query, options, callback)\n 'findOneAndDelete', // findOneAndDelete(filter, options, callback)\n 'findOneAndReplace', // findOneAndReplace(filter, replacement, options, callback)\n 'findOneAndUpdate', // findOneAndUpdate(filter, update, options, callback)\n 'indexes', // indexes(options, callback)\n 'indexExists', // indexExists(indexes, options, callback)\n 'indexInformation', // indexInformation(options, callback)\n 'initializeOrderedBulkOp', // initializeOrderedBulkOp(options, callback)\n 'insertMany', // insertMany(docs, options, callback)\n 'insertOne', // insertOne(doc, options, callback)\n 'isCapped', // isCapped(options, callback)\n 'mapReduce', // mapReduce(map, reduce, options, callback)\n 'options', // options(options, callback)\n 'parallelCollectionScan', // parallelCollectionScan(options, callback)\n 'rename', // rename(newName, options, callback)\n 'replaceOne', // replaceOne(filter, doc, options, callback)\n 'stats', // stats(options, callback)\n 'updateMany', // updateMany(filter, update, options, callback)\n 'updateOne', // updateOne(filter, update, options, callback)\n] ;\n\n// All of the operations above take `options` and `callback` as their final parameters, but some of them\n// take additional parameters as well. For those operations, this is a map of\n// { : [] }, as a way to know what to call the operation's\n// positional arguments when we add them to the span's `data` object later\nconst OPERATION_SIGNATURES\n\n = {\n // aggregate intentionally not included because `pipeline` arguments are too complex to serialize well\n // see https://github.com/getsentry/sentry-javascript/pull/3102\n bulkWrite: ['operations'],\n countDocuments: ['query'],\n createIndex: ['fieldOrSpec'],\n createIndexes: ['indexSpecs'],\n deleteMany: ['filter'],\n deleteOne: ['filter'],\n distinct: ['key', 'query'],\n dropIndex: ['indexName'],\n find: ['query'],\n findOne: ['query'],\n findOneAndDelete: ['filter'],\n findOneAndReplace: ['filter', 'replacement'],\n findOneAndUpdate: ['filter', 'update'],\n indexExists: ['indexes'],\n insertMany: ['docs'],\n insertOne: ['doc'],\n mapReduce: ['map', 'reduce'],\n rename: ['newName'],\n replaceOne: ['filter', 'doc'],\n updateMany: ['filter', 'update'],\n updateOne: ['filter', 'update'],\n};\n\nfunction isCursor(maybeCursor) {\n return maybeCursor && typeof maybeCursor === 'object' && maybeCursor.once && typeof maybeCursor.once === 'function';\n}\n\n/** Tracing integration for mongo package */\nclass Mongo {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'Mongo';}\n\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n constructor(options = {}) {\n this.name = Mongo.id;\n this._operations = Array.isArray(options.operations) ? options.operations : (OPERATIONS );\n this._describeOperations = 'describeOperations' in options ? options.describeOperations : true;\n this._useMongoose = !!options.useMongoose;\n }\n\n /** @inheritdoc */\n loadDependency() {\n const moduleName = this._useMongoose ? 'mongoose' : 'mongodb';\n return (this._module = this._module || loadModule(moduleName));\n }\n\n /**\n * @inheritDoc\n */\n setupOnce(_, getCurrentHub) {\n if (shouldDisableAutoInstrumentation(getCurrentHub)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('Mongo Integration is skipped because of instrumenter configuration.');\n return;\n }\n\n const pkg = this.loadDependency();\n\n if (!pkg) {\n const moduleName = this._useMongoose ? 'mongoose' : 'mongodb';\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error(`Mongo Integration was unable to require \\`${moduleName}\\` package.`);\n return;\n }\n\n this._instrumentOperations(pkg.Collection, this._operations, getCurrentHub);\n }\n\n /**\n * Patches original collection methods\n */\n _instrumentOperations(collection, operations, getCurrentHub) {\n operations.forEach((operation) => this._patchOperation(collection, operation, getCurrentHub));\n }\n\n /**\n * Patches original collection to utilize our tracing functionality\n */\n _patchOperation(collection, operation, getCurrentHub) {\n if (!(operation in collection.prototype)) return;\n\n const getSpanContext = this._getSpanContextFromOperationArguments.bind(this);\n\n fill(collection.prototype, operation, function (orig) {\n return function ( ...args) {\n const lastArg = args[args.length - 1];\n const scope = getCurrentHub().getScope();\n const parentSpan = _optionalChain([scope, 'optionalAccess', _2 => _2.getSpan, 'call', _3 => _3()]);\n\n // Check if the operation was passed a callback. (mapReduce requires a different check, as\n // its (non-callback) arguments can also be functions.)\n if (typeof lastArg !== 'function' || (operation === 'mapReduce' && args.length === 2)) {\n const span = _optionalChain([parentSpan, 'optionalAccess', _4 => _4.startChild, 'call', _5 => _5(getSpanContext(this, operation, args))]);\n const maybePromiseOrCursor = orig.call(this, ...args);\n\n if (isThenable(maybePromiseOrCursor)) {\n return maybePromiseOrCursor.then((res) => {\n _optionalChain([span, 'optionalAccess', _6 => _6.finish, 'call', _7 => _7()]);\n return res;\n });\n }\n // If the operation returns a Cursor\n // we need to attach a listener to it to finish the span when the cursor is closed.\n else if (isCursor(maybePromiseOrCursor)) {\n const cursor = maybePromiseOrCursor ;\n\n try {\n cursor.once('close', () => {\n _optionalChain([span, 'optionalAccess', _8 => _8.finish, 'call', _9 => _9()]);\n });\n } catch (e) {\n // If the cursor is already closed, `once` will throw an error. In that case, we can\n // finish the span immediately.\n _optionalChain([span, 'optionalAccess', _10 => _10.finish, 'call', _11 => _11()]);\n }\n\n return cursor;\n } else {\n _optionalChain([span, 'optionalAccess', _12 => _12.finish, 'call', _13 => _13()]);\n return maybePromiseOrCursor;\n }\n }\n\n const span = _optionalChain([parentSpan, 'optionalAccess', _14 => _14.startChild, 'call', _15 => _15(getSpanContext(this, operation, args.slice(0, -1)))]);\n\n return orig.call(this, ...args.slice(0, -1), function (err, result) {\n _optionalChain([span, 'optionalAccess', _16 => _16.finish, 'call', _17 => _17()]);\n lastArg(err, result);\n });\n };\n });\n }\n\n /**\n * Form a SpanContext based on the user input to a given operation.\n */\n _getSpanContextFromOperationArguments(\n collection,\n operation,\n args,\n ) {\n const data = {\n 'db.system': 'mongodb',\n 'db.name': collection.dbName,\n 'db.operation': operation,\n 'db.mongodb.collection': collection.collectionName,\n };\n const spanContext = {\n op: 'db',\n // TODO v8: Use `${collection.collectionName}.${operation}`\n description: operation,\n data,\n };\n\n // If the operation takes no arguments besides `options` and `callback`, or if argument\n // collection is disabled for this operation, just return early.\n const signature = OPERATION_SIGNATURES[operation];\n const shouldDescribe = Array.isArray(this._describeOperations)\n ? this._describeOperations.includes(operation)\n : this._describeOperations;\n\n if (!signature || !shouldDescribe) {\n return spanContext;\n }\n\n try {\n // Special case for `mapReduce`, as the only one accepting functions as arguments.\n if (operation === 'mapReduce') {\n const [map, reduce] = args ;\n data[signature[0]] = typeof map === 'string' ? map : map.name || '';\n data[signature[1]] = typeof reduce === 'string' ? reduce : reduce.name || '';\n } else {\n for (let i = 0; i < signature.length; i++) {\n data[`db.mongodb.${signature[i]}`] = JSON.stringify(args[i]);\n }\n }\n } catch (_oO) {\n // no-empty\n }\n\n return spanContext;\n }\n}Mongo.__initStatic();\n\nexport { Mongo };\n","import { _optionalChain } from '@sentry/utils/esm/buildPolyfills';\nimport { loadModule, logger, fill } from '@sentry/utils';\nimport { shouldDisableAutoInstrumentation } from './utils/node-utils.js';\n\n/** Tracing integration for node-mysql package */\nclass Mysql {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'Mysql';}\n\n /**\n * @inheritDoc\n */\n\n constructor() {\n this.name = Mysql.id;\n }\n\n /** @inheritdoc */\n loadDependency() {\n return (this._module = this._module || loadModule('mysql/lib/Connection.js'));\n }\n\n /**\n * @inheritDoc\n */\n setupOnce(_, getCurrentHub) {\n if (shouldDisableAutoInstrumentation(getCurrentHub)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('Mysql Integration is skipped because of instrumenter configuration.');\n return;\n }\n\n const pkg = this.loadDependency();\n\n if (!pkg) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Mysql Integration was unable to require `mysql` package.');\n return;\n }\n\n let mySqlConfig = undefined;\n\n try {\n pkg.prototype.connect = new Proxy(pkg.prototype.connect, {\n apply(wrappingTarget, thisArg, args) {\n if (!mySqlConfig) {\n mySqlConfig = thisArg.config;\n }\n return wrappingTarget.apply(thisArg, args);\n },\n });\n } catch (e) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Mysql Integration was unable to instrument `mysql` config.');\n }\n\n function spanDataFromConfig() {\n if (!mySqlConfig) {\n return {};\n }\n return {\n 'server.address': mySqlConfig.host,\n 'server.port': mySqlConfig.port,\n 'db.user': mySqlConfig.user,\n };\n }\n\n // The original function will have one of these signatures:\n // function (callback) => void\n // function (options, callback) => void\n // function (options, values, callback) => void\n fill(pkg, 'createQuery', function (orig) {\n return function ( options, values, callback) {\n const scope = getCurrentHub().getScope();\n const parentSpan = _optionalChain([scope, 'optionalAccess', _2 => _2.getSpan, 'call', _3 => _3()]);\n const span = _optionalChain([parentSpan, 'optionalAccess', _4 => _4.startChild, 'call', _5 => _5({\n description: typeof options === 'string' ? options : (options ).sql,\n op: 'db',\n data: {\n ...spanDataFromConfig(),\n 'db.system': 'mysql',\n },\n })]);\n\n if (typeof callback === 'function') {\n return orig.call(this, options, values, function (err, result, fields) {\n _optionalChain([span, 'optionalAccess', _6 => _6.finish, 'call', _7 => _7()]);\n callback(err, result, fields);\n });\n }\n\n if (typeof values === 'function') {\n return orig.call(this, options, function (err, result, fields) {\n _optionalChain([span, 'optionalAccess', _8 => _8.finish, 'call', _9 => _9()]);\n values(err, result, fields);\n });\n }\n\n return orig.call(this, options, values, callback);\n };\n });\n }\n}Mysql.__initStatic();\n\nexport { Mysql };\n","import { _optionalChain } from '@sentry/utils/esm/buildPolyfills';\nimport { loadModule, logger, fill, isThenable } from '@sentry/utils';\nimport { shouldDisableAutoInstrumentation } from './utils/node-utils.js';\n\n/** Tracing integration for node-postgres package */\nclass Postgres {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'Postgres';}\n\n /**\n * @inheritDoc\n */\n\n constructor(options = {}) {\n this.name = Postgres.id;\n this._usePgNative = !!options.usePgNative;\n }\n\n /** @inheritdoc */\n loadDependency() {\n return (this._module = this._module || loadModule('pg'));\n }\n\n /**\n * @inheritDoc\n */\n setupOnce(_, getCurrentHub) {\n if (shouldDisableAutoInstrumentation(getCurrentHub)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('Postgres Integration is skipped because of instrumenter configuration.');\n return;\n }\n\n const pkg = this.loadDependency();\n\n if (!pkg) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Postgres Integration was unable to require `pg` package.');\n return;\n }\n\n if (this._usePgNative && !_optionalChain([pkg, 'access', _2 => _2.native, 'optionalAccess', _3 => _3.Client])) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error(\"Postgres Integration was unable to access 'pg-native' bindings.\");\n return;\n }\n\n const { Client } = this._usePgNative ? pkg.native : pkg;\n\n /**\n * function (query, callback) => void\n * function (query, params, callback) => void\n * function (query) => Promise\n * function (query, params) => Promise\n * function (pg.Cursor) => pg.Cursor\n */\n fill(Client.prototype, 'query', function (orig) {\n return function ( config, values, callback) {\n const scope = getCurrentHub().getScope();\n const parentSpan = _optionalChain([scope, 'optionalAccess', _4 => _4.getSpan, 'call', _5 => _5()]);\n\n const data = {\n 'db.system': 'postgresql',\n };\n\n try {\n if (this.database) {\n data['db.name'] = this.database;\n }\n if (this.host) {\n data['server.address'] = this.host;\n }\n if (this.port) {\n data['server.port'] = this.port;\n }\n if (this.user) {\n data['db.user'] = this.user;\n }\n } catch (e) {\n // ignore\n }\n\n const span = _optionalChain([parentSpan, 'optionalAccess', _6 => _6.startChild, 'call', _7 => _7({\n description: typeof config === 'string' ? config : (config ).text,\n op: 'db',\n data,\n })]);\n\n if (typeof callback === 'function') {\n return orig.call(this, config, values, function (err, result) {\n _optionalChain([span, 'optionalAccess', _8 => _8.finish, 'call', _9 => _9()]);\n callback(err, result);\n });\n }\n\n if (typeof values === 'function') {\n return orig.call(this, config, function (err, result) {\n _optionalChain([span, 'optionalAccess', _10 => _10.finish, 'call', _11 => _11()]);\n values(err, result);\n });\n }\n\n const rv = typeof values !== 'undefined' ? orig.call(this, config, values) : orig.call(this, config);\n\n if (isThenable(rv)) {\n return rv.then((res) => {\n _optionalChain([span, 'optionalAccess', _12 => _12.finish, 'call', _13 => _13()]);\n return res;\n });\n }\n\n _optionalChain([span, 'optionalAccess', _14 => _14.finish, 'call', _15 => _15()]);\n return rv;\n };\n });\n }\n}Postgres.__initStatic();\n\nexport { Postgres };\n","import { trace, getCurrentHub } from '@sentry/core';\nimport { addNonEnumerableProperty, logger } from '@sentry/utils';\nimport { shouldDisableAutoInstrumentation } from './utils/node-utils.js';\n\nfunction isValidPrismaClient(possibleClient) {\n return !!possibleClient && !!(possibleClient )['$use'];\n}\n\n/** Tracing integration for @prisma/client package */\nclass Prisma {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'Prisma';}\n\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n constructor(options = {}) {\n this.name = Prisma.id;\n\n // We instrument the PrismaClient inside the constructor and not inside `setupOnce` because in some cases of server-side\n // bundling (Next.js) multiple Prisma clients can be instantiated, even though users don't intend to. When instrumenting\n // in setupOnce we can only ever instrument one client.\n // https://github.com/getsentry/sentry-javascript/issues/7216#issuecomment-1602375012\n // In the future we might explore providing a dedicated PrismaClient middleware instead of this hack.\n if (isValidPrismaClient(options.client) && !options.client._sentryInstrumented) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n addNonEnumerableProperty(options.client , '_sentryInstrumented', true);\n\n const clientData = {};\n try {\n const engineConfig = (options.client )._engineConfig;\n if (engineConfig) {\n const { activeProvider, clientVersion } = engineConfig;\n if (activeProvider) {\n clientData['db.system'] = activeProvider;\n }\n if (clientVersion) {\n clientData['db.prisma.version'] = clientVersion;\n }\n }\n } catch (e) {\n // ignore\n }\n\n options.client.$use((params, next) => {\n if (shouldDisableAutoInstrumentation(getCurrentHub)) {\n return next(params);\n }\n\n const action = params.action;\n const model = params.model;\n\n return trace(\n {\n name: model ? `${model} ${action}` : action,\n op: 'db.sql.prisma',\n data: { ...clientData, 'db.operation': action },\n },\n () => next(params),\n );\n });\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn('Unsupported Prisma client provided to PrismaIntegration. Provided client:', options.client);\n }\n }\n\n /**\n * @inheritDoc\n */\n setupOnce() {\n // Noop - here for backwards compatibility\n }\n} Prisma.__initStatic();\n\nexport { Prisma };\n","import { isThenable } from '@sentry/utils';\nimport { getCurrentHub } from '../hub.js';\nimport { hasTracingEnabled } from '../utils/hasTracingEnabled.js';\n\n/**\n * Wraps a function with a transaction/span and finishes the span after the function is done.\n *\n * Note that if you have not enabled tracing extensions via `addTracingExtensions`\n * or you didn't set `tracesSampleRate`, this function will not generate spans\n * and the `span` returned from the callback will be undefined.\n *\n * This function is meant to be used internally and may break at any time. Use at your own risk.\n *\n * @internal\n * @private\n */\nfunction trace(\n context,\n callback,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onError = () => {},\n) {\n const ctx = { ...context };\n // If a name is set and a description is not, set the description to the name.\n if (ctx.name !== undefined && ctx.description === undefined) {\n ctx.description = ctx.name;\n }\n\n const hub = getCurrentHub();\n const scope = hub.getScope();\n\n const parentSpan = scope.getSpan();\n\n function getActiveSpan() {\n if (!hasTracingEnabled()) {\n return undefined;\n }\n return parentSpan ? parentSpan.startChild(ctx) : hub.startTransaction(ctx);\n }\n\n const activeSpan = getActiveSpan();\n scope.setSpan(activeSpan);\n\n function finishAndSetSpan() {\n activeSpan && activeSpan.finish();\n hub.getScope().setSpan(parentSpan);\n }\n\n let maybePromiseResult;\n try {\n maybePromiseResult = callback(activeSpan);\n } catch (e) {\n activeSpan && activeSpan.setStatus('internal_error');\n onError(e);\n finishAndSetSpan();\n throw e;\n }\n\n if (isThenable(maybePromiseResult)) {\n Promise.resolve(maybePromiseResult).then(\n () => {\n finishAndSetSpan();\n },\n e => {\n activeSpan && activeSpan.setStatus('internal_error');\n onError(e);\n finishAndSetSpan();\n },\n );\n } else {\n finishAndSetSpan();\n }\n\n return maybePromiseResult;\n}\n\nexport { trace };\n","import { addExtensionMethods as addExtensionMethods$1, BrowserTracing as BrowserTracing$1, getActiveTransaction as getActiveTransaction$1, extractTraceparentData as extractTraceparentData$1, spanStatusfromHttpCode as spanStatusfromHttpCode$1, Transaction as Transaction$1, Span as Span$1, BROWSER_TRACING_INTEGRATION_ID as BROWSER_TRACING_INTEGRATION_ID$1, defaultRequestInstrumentationOptions as defaultRequestInstrumentationOptions$1, hasTracingEnabled as hasTracingEnabled$1, stripUrlQueryAndFragment as stripUrlQueryAndFragment$1, TRACEPARENT_REGEXP as TRACEPARENT_REGEXP$1, IdleTransaction as IdleTransaction$1, instrumentOutgoingRequests as instrumentOutgoingRequests$1, startIdleTransaction as startIdleTransaction$1, SpanStatus as SpanStatus$1, Apollo, Express, GraphQL, Mongo, Mysql, Postgres, Prisma } from '@sentry-internal/tracing';\n\n// BrowserTracing is already exported as part of `Integrations` below (and for the moment will remain so for\n// backwards compatibility), but that interferes with treeshaking, so we also export it separately\n// here.\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n * `BrowserTracing` can be imported from `@sentry/browser` or your framework SDK\n *\n * import { BrowserTracing } from '@sentry/browser';\n * new BrowserTracing()\n */\nconst BrowserTracing = BrowserTracing$1;\n\n// BrowserTracing is already exported as part of `Integrations` below (and for the moment will remain so for\n// backwards compatibility), but that interferes with treeshaking, so we also export it separately\n// here.\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n * `BrowserTracing` can be imported from `@sentry/browser` or your framework SDK\n *\n * import { BrowserTracing } from '@sentry/browser';\n * new BrowserTracing()\n */\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n */\nconst addExtensionMethods = addExtensionMethods$1;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n *\n * `getActiveTransaction` can be imported from `@sentry/node`, `@sentry/browser`, or your framework SDK\n */\nconst getActiveTransaction = getActiveTransaction$1;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n *\n * `extractTraceparentData` can be imported from `@sentry/node`, `@sentry/browser`, or your framework SDK\n */\nconst extractTraceparentData = extractTraceparentData$1;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n *\n * `spanStatusfromHttpCode` can be imported from `@sentry/node`, `@sentry/browser`, or your framework SDK\n */\nconst spanStatusfromHttpCode = spanStatusfromHttpCode$1;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n *\n * `SpanStatusType` can be imported from `@sentry/node`, `@sentry/browser`, or your framework SDK\n */\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n *\n * `Transaction` can be imported from `@sentry/node`, `@sentry/browser`, or your framework SDK\n */\nconst Transaction = Transaction$1;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n *\n * `Transaction` can be imported from `@sentry/node`, `@sentry/browser`, or your framework SDK\n */\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n *\n * `Span` can be imported from `@sentry/node`, `@sentry/browser`, or your framework SDK\n */\nconst Span = Span$1;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n *\n * `Span` can be imported from `@sentry/node`, `@sentry/browser`, or your framework SDK\n */\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n */\nconst BROWSER_TRACING_INTEGRATION_ID = BROWSER_TRACING_INTEGRATION_ID$1;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n *\n * `defaultRequestInstrumentationOptions` can be imported from `@sentry/browser`, or your framework SDK\n */\nconst defaultRequestInstrumentationOptions = defaultRequestInstrumentationOptions$1;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n *\n * `hasTracingEnabled` can be imported from `@sentry/utils`\n */\nconst hasTracingEnabled = hasTracingEnabled$1;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n *\n * `stripUrlQueryAndFragment` can be imported from `@sentry/utils`\n */\nconst stripUrlQueryAndFragment = stripUrlQueryAndFragment$1;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n *\n * `TRACEPARENT_REGEXP` can be imported from `@sentry/utils`\n */\nconst TRACEPARENT_REGEXP = TRACEPARENT_REGEXP$1;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n */\nconst IdleTransaction = IdleTransaction$1;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n */\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n */\nconst instrumentOutgoingRequests = instrumentOutgoingRequests$1;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n */\nconst startIdleTransaction = startIdleTransaction$1;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n */\n// eslint-disable-next-line deprecation/deprecation\nconst SpanStatus = SpanStatus$1;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n */\n// eslint-disable-next-line deprecation/deprecation\n\nconst Integrations = {\n /**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n * `BrowserTracing` can be imported from `@sentry/browser` or your framework SDK\n *\n * import { BrowserTracing } from '@sentry/browser';\n * new BrowserTracing()\n */\n // eslint-disable-next-line deprecation/deprecation\n BrowserTracing: BrowserTracing,\n /**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n * `Apollo` can be imported from `@sentry/node`\n *\n * import { Integrations } from '@sentry/node';\n * new Integrations.Apollo({ ... })\n */\n // eslint-disable-next-line deprecation/deprecation\n Apollo: Apollo,\n /**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n * `Express` can be imported from `@sentry/node`\n *\n * import { Integrations } from '@sentry/node';\n * new Integrations.Express({ ... })\n */\n // eslint-disable-next-line deprecation/deprecation\n Express: Express,\n /**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n * `GraphQL` can be imported from `@sentry/node`\n *\n * import { Integrations } from '@sentry/node';\n * new Integrations.GraphQL({ ... })\n */\n // eslint-disable-next-line deprecation/deprecation\n GraphQL: GraphQL,\n /**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n * `Mongo` can be imported from `@sentry/node`\n *\n * import { Integrations } from '@sentry/node';\n * new Integrations.Mongo({ ... })\n */\n // eslint-disable-next-line deprecation/deprecation\n Mongo: Mongo,\n /**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n * `Mysql` can be imported from `@sentry/node`\n *\n * import { Integrations } from '@sentry/node';\n * new Integrations.Mysql({ ... })\n */\n // eslint-disable-next-line deprecation/deprecation\n Mysql: Mysql,\n /**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n * `Postgres` can be imported from `@sentry/node`\n *\n * import { Integrations } from '@sentry/node';\n * new Integrations.Postgres({ ... })\n */\n // eslint-disable-next-line deprecation/deprecation\n Postgres: Postgres,\n /**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n * `Prisma` can be imported from `@sentry/node`\n *\n * import { Integrations } from '@sentry/node';\n * new Integrations.Prisma({ ... })\n */\n // eslint-disable-next-line deprecation/deprecation\n Prisma: Prisma,\n};\n\n// Treeshakable guard to remove all code related to tracing\n\n// Guard for tree\nif (typeof __SENTRY_TRACING__ === 'undefined' || __SENTRY_TRACING__) {\n // We are patching the global object with our hub extension methods\n addExtensionMethods$1();\n}\n\nexport { BROWSER_TRACING_INTEGRATION_ID, BrowserTracing, IdleTransaction, Integrations, Span, SpanStatus, TRACEPARENT_REGEXP, Transaction, addExtensionMethods, defaultRequestInstrumentationOptions, extractTraceparentData, getActiveTransaction, hasTracingEnabled, instrumentOutgoingRequests, spanStatusfromHttpCode, startIdleTransaction, stripUrlQueryAndFragment };\n","import { getActiveTransaction } from '@sentry/core';\nimport { logger } from '@sentry/utils';\nimport { WINDOW } from './types.js';\n\n/**\n * Add a listener that cancels and finishes a transaction when the global\n * document is hidden.\n */\nfunction registerBackgroundTabDetection() {\n if (WINDOW && WINDOW.document) {\n WINDOW.document.addEventListener('visibilitychange', () => {\n const activeTransaction = getActiveTransaction() ;\n if (WINDOW.document.hidden && activeTransaction) {\n const statusType = 'cancelled';\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n `[Tracing] Transaction: ${statusType} -> since tab moved to the background, op: ${activeTransaction.op}`,\n );\n // We should not set status if it is already set, this prevent important statuses like\n // error or data loss from being overwritten on transaction.\n if (!activeTransaction.status) {\n activeTransaction.setStatus(statusType);\n }\n activeTransaction.setTag('visibilitychange', 'document.hidden');\n activeTransaction.finish();\n }\n });\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn('[Tracing] Could not set up background tab detection due to lack of global document');\n }\n}\n\nexport { registerBackgroundTabDetection };\n","import { Injectable } from '@angular/core';\nimport { AuthUser, SystemInfo } from '@common/models';\nimport { ConfigurationService } from '@common/services/configuration.service';\nimport { getSentryEnvironment } from '@common/utils';\nimport { environment } from '@env/environment';\nimport * as Sentry from '@sentry/browser';\nimport { Integrations as TracingIntegrations } from '@sentry/tracing';\n\n@Injectable({ providedIn: 'root' })\nexport class SentryService {\n constructor(private config: ConfigurationService) {}\n\n init(info: SystemInfo): void {\n if (!this.config.get('production')) return;\n\n Sentry.init({\n dsn: environment.sentry.dsn,\n release: info.AssemblyVersion,\n integrations: [\n new TracingIntegrations.BrowserTracing(),\n new Sentry.Integrations.Breadcrumbs({\n console: false,\n /** Add own breadcrumb for xhr */\n xhr: false\n })\n ],\n beforeBreadcrumb: (breadcrumb, hint?) => {\n if (breadcrumb.category === 'ui.click') {\n const innerText = hint?.event?.innerText;\n\n innerText && (breadcrumb.message = `${breadcrumb.message} ${innerText}`);\n }\n\n return breadcrumb;\n },\n tracesSampleRate: 1,\n environment: getSentryEnvironment()\n });\n }\n\n addUser(user: AuthUser): void {\n if (!this.config.get('production')) return;\n\n /** Add a user data for Sentry */\n Sentry.configureScope(function (scope) {\n scope.setUser({\n Email: user.Email,\n DomainId: user.DomainId,\n DomainName: user.DomainName,\n Id: user.Id,\n Name: user.Name,\n Provider: user.Provider,\n RestoreEnable: user.RestoreEnable,\n SignInEnable: user.SignInEnable\n });\n });\n }\n}\n","import { logger } from '@sentry/utils';\nimport { getCurrentHub } from './hub.js';\n\n/** A class object that can instantiate Client objects. */\n\n/**\n * Internal function to create a new SDK client instance. The client is\n * installed and then bound to the current scope.\n *\n * @param clientClass The client class to instantiate.\n * @param options Options to pass to the client.\n */\nfunction initAndBind(\n clientClass,\n options,\n) {\n if (options.debug === true) {\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n logger.enable();\n } else {\n // use `console.warn` rather than `logger.warn` since by non-debug bundles have all `logger.x` statements stripped\n // eslint-disable-next-line no-console\n console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.');\n }\n }\n const hub = getCurrentHub();\n const scope = hub.getScope();\n scope.update(options.initialScope);\n\n const client = new clientClass(options);\n hub.bindClient(client);\n}\n\nexport { initAndBind };\n","import { DOCUMENT } from '@angular/common';\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { JwtHelperService } from '@auth0/angular-jwt';\nimport { BrowserStorage, Claim, RoutePath, STANDALONE_ICON, WINDOW } from '@common';\nimport { AuthMode } from '@common/components/login/enums';\nimport {\n AuthUser,\n ProductMode,\n Provider,\n ProviderRole,\n Role,\n ServiceFields,\n ServiceType,\n SystemInfo,\n UserServiceBackupInfo,\n hasLimitedAdminRole,\n hasProviderRole,\n isEmergencySignIn\n} from '@common/models';\nimport {\n AlternativeSignInPayload,\n AnotherAccountResponse,\n AuthModelBasel,\n AuthResponse,\n AuthUrlOData,\n AuthenticationPayload\n} from '@common/models/auth/auth.model';\nimport { ODataService, ODataServiceFactory } from '@common/odata';\nimport { PosthogService } from '@common/posthog/posthog.service';\nimport { SentryService } from '@common/services/sentry.service';\nimport { LocalStorageService } from '@common/services/storage/local-storage.service';\nimport { PersistentStateService } from '@common/services/storage/persistent-state.service';\nimport { SessionStorageService } from '@common/services/storage/session-storage.service';\nimport { getPrefix, hasActionsQueue, isAlternateSignIn, isProviderGoogle, isProviderOffice } from '@common/utils';\nimport { isArray } from 'lodash';\nimport { BehaviorSubject, EMPTY, Observable, forkJoin, of, throwError } from 'rxjs';\nimport { catchError, finalize, map, share, shareReplay, tap } from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class AuthService {\n #modelBasel: AuthModelBasel;\n #availableServices: ServiceType[];\n #me: AuthUser;\n #roles: Role[];\n #claims: Claim[];\n #providerRoles: ProviderRole[];\n #systemInfo: SystemInfo;\n #loading$: BehaviorSubject = new BehaviorSubject(false);\n #odataService$: ODataService;\n #odata$: ODataService;\n #claimService$: ODataService;\n #isEmergencySignIn: boolean;\n\n public readonly loggedIn$: BehaviorSubject = new BehaviorSubject(null);\n public readonly requestPending$: Observable;\n\n public persistentStateKey: string;\n\n set modelBasel(model: AuthModelBasel) {\n this.sessionStorageService.set(BrowserStorage.ErrorPage, { model });\n this.#modelBasel = model;\n }\n\n get modelBasel(): AuthModelBasel {\n return this.#modelBasel;\n }\n\n get domainId(): string {\n return this.#me?.DomainId;\n }\n\n get domainName(): string {\n return this.#me?.DomainName;\n }\n\n get id(): string {\n return this.#me?.Id;\n }\n\n get provider(): Provider {\n return this.#me?.Provider;\n }\n\n get isGoogle(): boolean {\n return isProviderGoogle(this.provider);\n }\n\n get isOffice(): boolean {\n return isProviderOffice(this.provider);\n }\n\n get prefix(): string {\n return getPrefix(this.provider, this.#isEmergencySignIn);\n }\n\n get isGAA(): boolean {\n return this.#systemInfo?.GAA;\n }\n\n get isImmutability(): boolean {\n return this.#systemInfo?.IsImmutability;\n }\n\n constructor(\n @Inject(WINDOW) private window: Window,\n @Inject(DOCUMENT) private document: Document,\n private phService: PosthogService,\n private http: HttpClient,\n private jwtService: JwtHelperService,\n private odataFactory: ODataServiceFactory,\n private router: Router,\n private storageService: LocalStorageService,\n private persistentService: PersistentStateService,\n private sessionStorageService: SessionStorageService,\n private sentryService: SentryService\n ) {\n this.#odata$ = this.odataFactory.CreateService('');\n this.#odataService$ = this.odataFactory.CreateService('me');\n this.#claimService$ = this.odataFactory.CreateService('GetClaims');\n this.requestPending$ = this.#loading$.pipe(hasActionsQueue(), shareReplay(1));\n }\n\n checkTokenInLocalStorage(): void {\n const token = this.storageService.get(BrowserStorage.Token);\n\n try {\n if (token && Boolean(this.jwtService.decodeToken(token)) && !this.jwtService.isTokenExpired(token)) {\n this.loggedIn$.next(true);\n }\n } catch (e) {\n this.loggedIn$.next(false);\n }\n }\n\n // new endpoints\n login(provider: Provider, mode = AuthMode.None): Observable {\n const odataService = this.odataFactory.CreateService(`/Auth?provider=${provider}&mode=${mode}`);\n\n return this.http.get(odataService.Query().GetUrl());\n }\n\n authCallback(payload: AuthenticationPayload): Observable {\n const odataService = this.odataFactory.CreateService(`/Auth`);\n\n return this.http.post(odataService.Query().GetUrl(), payload);\n }\n\n alternativeSignIn(payload: AlternativeSignInPayload): Observable {\n const odataService = this.odataFactory.CreateService(`/Auth/AlternativeSignIn`);\n\n return this.http.post(odataService.Query().GetUrl(), payload);\n }\n\n getToken(payload: AlternativeSignInPayload): Observable {\n const odataService = this.odataFactory.CreateService(`/Auth/GetToken`);\n\n return this.http.post(odataService.Query().GetUrl(), payload);\n }\n\n getPath(res: AuthResponse): string {\n try {\n return getPrefix(res.Provider, isAlternateSignIn(res.Mode));\n } catch {\n throw new Error(`\"${res.Provider}\" provider does not exist`);\n }\n }\n\n initAuthGuard(): Observable {\n return forkJoin([this.getAuthUser(), this.getAvailableServices(), this.getRoles(), this.getSystemInfo()]).pipe(\n map(([authUser, availableServices, roles, systemInfo]) => {\n this.setFavicon(systemInfo.ProductMode === ProductMode.resale ? STANDALONE_ICON.favicon : systemInfo.FaviconUrl);\n this.sentryService.init(systemInfo);\n this.sentryService.addUser(authUser);\n this.setTimeZoneOffsetInCookie(); // TODO: temporary method for entrance into admin. Have to delete before release 4.0\n })\n );\n }\n\n private setFavicon(faviconUrl: string): void {\n this.document.head.querySelector('#favicon').setAttribute('href', faviconUrl);\n }\n\n private setTimeZoneOffsetInCookie() {\n const cookieDomain = 'apps-stage.mspbackups.com';\n const options = {\n domain: cookieDomain,\n path: '/',\n expires: new Date(Date.now() + 365 * 24 * 60 * 60 * 1000).toUTCString()\n };\n\n let cookie = 'offset=' + new Date().getTimezoneOffset();\n\n for (const key of Object.keys(options)) {\n cookie += '; ' + key + '=' + options[key];\n }\n\n this.document.cookie = cookie;\n }\n // end new\n\n logout(): void {\n this.resetCache();\n this.persistentService.data[BrowserStorage.SPointDisabled] = null;\n this.persistentService.data[BrowserStorage.SPointNoSiteBackup] = null;\n this.storageService.remove(BrowserStorage.Token);\n this.sessionStorageService?.remove(BrowserStorage.ErrorPage);\n this.loggedIn$.next(false);\n\n void this.router.navigate([RoutePath.Login], { queryParams: null });\n }\n\n getSystemInfo(forceUpdate = false): Observable {\n if (this.#systemInfo && !forceUpdate) return of(this.#systemInfo);\n\n this.#loading$.next(true);\n return this.#odata$.CustomCollectionFunction('SystemInfo', {}).pipe(\n map((res) => res?.body),\n tap((info) => (this.#systemInfo = info)),\n finalize(() => this.#loading$.next(false))\n );\n }\n\n getRoles(): Observable {\n if (this.#roles) return of(this.#roles);\n\n this.#loading$.next(true);\n return this.getClaims().pipe(\n map((claims) => claims.filter((c) => c.Type == 'role')),\n map((claims) => claims.map((c) => c.Value)),\n tap((roles) => {\n this.#roles = roles;\n this.#isEmergencySignIn = isEmergencySignIn(roles);\n }),\n finalize(() => this.#loading$.next(false))\n );\n }\n\n getProviderRoles(): Observable {\n if (this.#providerRoles) return of(this.#providerRoles);\n\n this.#loading$.next(true);\n return this.getClaims().pipe(\n map((claims) => claims.filter((c) => c.Type == 'ProviderRole')),\n map((claims) => claims.map((c) => c.Value)),\n tap((providerRoles) => (this.#providerRoles = providerRoles)),\n finalize(() => this.#loading$.next(false))\n );\n }\n\n private getClaims(): Observable {\n if (this.#claims) return of(this.#claims).pipe(share());\n\n this.#loading$.next(true);\n return this.#claimService$\n .Query()\n .Exec()\n .pipe(\n tap((result) => (this.#claims = result)),\n finalize(() => this.#loading$.next(false))\n );\n }\n\n getAvailableServices(): Observable {\n if (this.#availableServices) return of(this.#availableServices);\n\n this.#loading$.next(true);\n return this.odataFactory\n .CreateService('AvailableServices')\n .Query()\n .Exec()\n .pipe(\n map((res) => res.map((str) => ServiceType[str] as ServiceType)),\n map((services) => services.filter((s) => s !== ServiceType.History)), // `History` nav-link move to `Reporting`\n tap((services) => (this.#availableServices = services)),\n finalize(() => this.#loading$.next(false))\n );\n }\n\n getAuthUser(forceUpdate = false): Observable {\n if (this.#me && !forceUpdate) return of(this.#me);\n\n this.#loading$.next(true);\n return this.#odataService$\n .Query()\n .Select(['Id', 'Email', 'Name', 'DomainId', 'Provider', 'RestoreEnable', 'SignInEnable', 'DomainName'])\n .Exec()\n .pipe(\n map((users) => (isArray(users) ? users[0] : users)),\n tap((user) => {\n if (!this.persistentStateKey) {\n this.persistentStateKey = BrowserStorage.Prefix + btoa(JSON.stringify({ Id: user.Id }));\n this.persistentService.eventEmitter$.emit(this.persistentStateKey);\n }\n this.#me = user;\n }),\n tap((user) => this.phService.initialize(user)),\n finalize(() => this.#loading$.next(false))\n );\n }\n\n getAuthUserServiceInfo(serviceType: ServiceType): Observable {\n const fields = new ServiceFields(serviceType);\n\n this.#loading$.next(true);\n return this.#odataService$\n .Query()\n .Select(fields.filteredArrayValues())\n .Exec()\n .pipe(\n map((users) => (isArray(users) ? users[0] : users)),\n map((user) => {\n return {\n TotalSize: fields.Size ? (user[fields.Size] as number) : 0,\n LastBackupDate: user[fields.LastBackupDate] as string\n };\n }),\n finalize(() => this.#loading$.next(false))\n );\n }\n\n isProviderSignIn(): Observable {\n return this.getRoles().pipe(\n map((roles) => hasProviderRole(roles)),\n shareReplay(1)\n );\n }\n\n restoreAvailable(): Observable {\n return this.getAuthUser().pipe(\n map((user) => user.RestoreEnable),\n shareReplay(1)\n );\n }\n\n isLimitedAdmin(): Observable {\n return forkJoin([this.getRoles(), this.getProviderRoles()]).pipe(\n map(([roles, providerRoles]) => hasLimitedAdminRole(roles, providerRoles)),\n shareReplay(1)\n );\n }\n\n resetCache(): void {\n this.#availableServices = null;\n this.#me = null;\n this.#claims = null;\n this.#roles = null;\n this.#providerRoles = null;\n this.#systemInfo = null;\n }\n\n signAsAdmin(): void {\n this.login(Provider.OfficeBusiness, AuthMode.SecondSignIn)\n .pipe(catchError((err: HttpErrorResponse) => (err instanceof HttpErrorResponse ? throwError(() => err) : EMPTY)))\n .subscribe({\n next: (data) => {\n this.window.open(data.RedirectUrl, '_top');\n },\n error: () => {\n this.logout();\n }\n });\n }\n\n activateAltEmail(token: string): Observable {\n return this.http.get(`api/ActivateEmail?token=${token}`);\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { MBS_APP_CONFIG } from '../../../config.loader';\n\nexport abstract class ConfigurationAbstractService {\n abstract get(key: string): any;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ConfigurationService implements ConfigurationAbstractService {\n public loaded = false;\n public configuration: any;\n\n constructor(private injector: Injector) {\n this.configuration = this.injector.get(MBS_APP_CONFIG);\n this.loaded = true;\n }\n\n get(key: string): any {\n return this.configuration[key];\n }\n}\n","import { DatePipe } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { CreateService } from '@common';\nimport { OdataObject } from '@common/models';\nimport { ODataServiceFactory } from '@common/odata';\nimport { I18NextPipe } from 'angular-i18next';\nimport { saveAs } from 'file-saver';\nimport { DateFormat } from 'mbs-ui-kit';\nimport { SPACE_REGEX } from 'mbs-ui-kit/utils/constants';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nconst loadingSymbol = Symbol('loading');\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DownloadService {\n constructor(\n private datePipe: DatePipe,\n private http: HttpClient,\n private i18nPipe: I18NextPipe,\n private odataFactory: ODataServiceFactory\n ) {}\n\n getTempLink(guidId: string): Observable {\n return this.http\n .get>(this.odataFactory.CreateService(`Artifacts(${guidId})/GetTempLink`).Query().GetUrl())\n .pipe(map((res) => res?.value));\n }\n\n saveFile(tempLink: string, guidId: string): void {\n const link = document.createElement('a');\n\n link.href = this.odataFactory.CreateService(`Artifacts(${guidId})/Download(tempLink=${tempLink})`).Query().GetUrl();\n link.target = '_blank';\n\n link.click();\n link.remove();\n }\n\n downloadBare(serviceName: string): Observable {\n return this.http.get(this.odataFactory.CreateService(serviceName).Query().GetUrl(), { responseType: 'blob' });\n }\n\n download(id: string, service: CreateService, query?: string): Observable {\n const rawUrl = this.odataFactory.CreateService(service).Get(id).GetUrl() + this.getUrlEnd(service);\n const url = query ? rawUrl + query : rawUrl;\n\n return this.http.get(url, { responseType: 'blob', observe: 'response' }).pipe(map((res) => res.body));\n }\n\n private getUrlEnd(service: CreateService): string {\n switch (service) {\n case CreateService.SiteItems:\n return '/GetRaw';\n case CreateService.MailMessages:\n return '/DownloadAttachment';\n default:\n return '/Download';\n }\n }\n\n generateFileName(path: string): string {\n return `${path}_${this.datePipe.transform(new Date(), DateFormat.short).replace(SPACE_REGEX, '_')}`;\n }\n\n saveAs(file: Blob, name?: string): void {\n const filename = this.getFileName(name);\n const blob = this.getBlob(file);\n\n saveAs(blob, filename);\n }\n\n private getFileName(name: string): string {\n return name || this.i18nPipe.transform('common.noFileName').replace(SPACE_REGEX, '_');\n }\n\n private getBlob(file: Blob): Blob {\n return new Blob([file], { type: file.type });\n }\n\n updateLoading(item: unknown, state: boolean): void {\n item[loadingSymbol] = state;\n }\n\n getLoading(item: unknown): boolean {\n return item[loadingSymbol];\n }\n\n removeLoading(item: unknown): void {\n delete item[loadingSymbol];\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ODataServiceFactory } from '@common/odata';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ArchivePasswordService {\n constructor(private odataFactory: ODataServiceFactory, private http: HttpClient) {}\n\n /*\n * Global method\n * Use for setting password to archived files\n */\n exportSettings(id: string, password: string): Observable {\n const odataService = this.odataFactory.CreateService(`/ExportSettings(${id})/ArchivePassword`);\n\n return this.http.put(odataService.Query().GetUrl(), { password });\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BOOLEAN_OPERATOR } from '@common';\nimport { AuditODataItem, UserActionType, UserActionTypeArea } from '@common/models';\nimport { ODataPagedResult, ODataService, ODataServiceFactory } from '@common/odata';\nimport { UserActionTypeAreaPipe, UserActionTypePipe } from '@common/pipes';\nimport { SharedOdataService } from '@common/services';\nimport { AuditLogTagsEnum, AuditLogTagsMap } from '@common/services/advanced-search';\nimport { getUniqueListByProp } from '@common/services/smart-search';\nimport {\n FilterOptions,\n containsWrapper,\n filterByWords,\n getFilterByContains,\n getFilterByDateRange,\n getFilterByEqFromEnum\n} from '@common/utils/functions/search';\nimport { SmartSearchModel, SmartSearchModelField } from 'mbs-ui-kit';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class AuditService extends SharedOdataService {\n readonly #event = AuditLogTagsMap.get(AuditLogTagsEnum.event);\n readonly #action = AuditLogTagsMap.get(AuditLogTagsEnum.action);\n readonly #userName = AuditLogTagsMap.get(AuditLogTagsEnum.userName);\n readonly #from = AuditLogTagsMap.get(AuditLogTagsEnum.from);\n readonly #to = AuditLogTagsMap.get(AuditLogTagsEnum.to);\n\n private userActionTypePipe = new UserActionTypePipe();\n private userActionTypeAreaPipe = new UserActionTypeAreaPipe();\n\n private odataMethods: ODataService;\n\n constructor(odataFactory: ODataServiceFactory, private http: HttpClient) {\n super(odataFactory, 'Audit');\n this.odataMethods = odataFactory.CreateService('');\n this.orderBy = 'Date desc';\n }\n\n getAuditLog(): Observable> {\n const odataService = this.odataFactory.CreateService(`/Audit`);\n\n return this.fetchData(odataService);\n }\n\n /*\n * Get top 20 events in 'Event' section that match `containsValue`\n * @param {string} containsValue search string\n */\n public getAuditLogInEventSection(containsValue: string): Observable {\n return this.getAuditLog().pipe(\n map(({ count, data }) => data),\n map((items) => {\n const filtered = items.filter((item) => item.UserActionTypeArea.toLowerCase().includes(containsValue));\n\n return getUniqueListByProp(filtered, this.#event.prop)\n .slice(0, 10)\n .map((item) => this.userActionTypeAreaPipe.transform(item.UserActionTypeArea));\n })\n );\n }\n\n /*\n * Get top 20 actions in 'Action' section that match `containsValue`\n * @param {string} containsValue search string\n */\n public getAuditLogInActionSection(containsValue: string): Observable {\n return this.getAuditLog().pipe(\n map(({ count, data }) => data),\n map((items) => {\n const filtered = items.filter((item) => item.UserActionType.toLowerCase().includes(containsValue));\n\n return getUniqueListByProp(filtered, this.#action.prop)\n .slice(0, 10)\n .map((item) => this.userActionTypePipe.transform(item.UserActionType));\n })\n );\n }\n\n /*\n * Get top 10 user names that match `containsValue`\n * @param {string} containsValue search string\n */\n public getAuditLogInUserNameSection(containsValue: string): Observable {\n return this.getAuditLog().pipe(\n map(({ count, data }) => data),\n map((items) => {\n const filtered = items.filter((item) => item.UserName.toLowerCase().includes(containsValue));\n\n return getUniqueListByProp(filtered, this.#userName.prop)\n .slice(0, 10)\n .map((item) => item.UserName);\n })\n );\n }\n\n exportToCSV(): Observable {\n const odataService: ODataService = this.odataFactory.CreateService(`/Audit/ExportToCsv?${this.getQueryParams(this.odata)}`);\n\n return this.http.get(odataService.Query().GetUrl(), { responseType: 'blob' });\n }\n\n updateFilter(obj: SmartSearchModel): void {\n const filter: string[] = [];\n\n if (obj[this.#userName.tag]) {\n const options: FilterOptions = {\n model: obj[this.#userName.tag] as SmartSearchModelField[],\n prop: this.#userName.prop\n };\n\n filter.push(getFilterByContains(options));\n }\n\n if (obj[this.#event.tag]) {\n const options: FilterOptions = {\n model: obj[this.#event.tag] as SmartSearchModelField[],\n prop: this.#event.prop,\n enumItems: UserActionTypeArea\n };\n\n filter.push(getFilterByEqFromEnum(options));\n }\n\n if (obj[this.#action.tag]) {\n const options: FilterOptions = {\n model: obj[this.#action.tag] as SmartSearchModelField[],\n prop: this.#action.prop,\n enumItems: UserActionType\n };\n\n filter.push(getFilterByEqFromEnum(options));\n }\n\n if (obj[this.#from.tag]) {\n const options: FilterOptions = {\n model: obj[this.#from.tag] as SmartSearchModelField[],\n prop: this.#from.prop\n };\n const value = getFilterByDateRange(options, 'from');\n\n value && filter.push(value);\n }\n\n if (obj[this.#to.tag]) {\n const options: FilterOptions = {\n model: obj[this.#to.tag] as SmartSearchModelField[],\n prop: this.#to.prop\n };\n const value = getFilterByDateRange(options, 'to');\n\n value && filter.push(value);\n }\n\n if (obj.words?.filter(Boolean)) {\n const term = filterByWords(obj);\n\n filter.push(containsWrapper(this.#userName.prop, term));\n }\n\n this.filter = filter.length > 0 ? filter.join(` ${BOOLEAN_OPERATOR.and} `) : '';\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BOOLEAN_OPERATOR, SINGLE_QUOTES_REGEX } from '@common';\nimport { AutoActivationSettings, AzureGroup, NewGroupSettings } from '@common/models';\nimport { ODataPagedResult, ODataServiceFactory } from '@common/odata';\nimport { AuthService, SharedOdataService } from '@common/services';\nimport { UserGroupsTagsEnum, UserGroupsTagsMap } from '@common/services/smart-search/user-groups';\nimport { FilterOptions, containsWrapper, filterByWords, getFilterByContains, getFilterByEq } from '@common/utils/functions/search';\nimport { I18NextPipe } from 'angular-i18next';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { SmartSearchModel, SmartSearchModelField } from 'mbs-ui-kit';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class AzureGroupsService extends SharedOdataService {\n readonly #name = UserGroupsTagsMap.get(UserGroupsTagsEnum.Name);\n readonly #autoActivation = UserGroupsTagsMap.get(UserGroupsTagsEnum.AutoActivation);\n\n public readonly moduleUsers = I18_NAMESPACE_APPS_UI.users;\n\n get name(): { tagKey: string; prop: string } {\n return this.#name;\n }\n\n get isGoogle(): boolean {\n return this.authService.isGoogle;\n }\n\n constructor(\n odataFactory: ODataServiceFactory,\n private http: HttpClient,\n private i18nPipe: I18NextPipe,\n private authService: AuthService\n ) {\n super(odataFactory, 'AzureGroups');\n }\n\n fetchGroups(): Observable> {\n const odataService = this.odataFactory.CreateService(`/AzureGroups`);\n\n return this.fetchData(odataService);\n }\n\n getNewGroupSettings(): Observable {\n const url = this.odataFactory.CreateService(`/NewGroupSettings`).Query().GetUrl();\n\n return this.http.get(url);\n }\n\n updateNewGroupSettings(payload: NewGroupSettings): Observable {\n const url = this.odataFactory.CreateService(`/NewGroupSettings`).Query().GetUrl();\n\n return this.http.post(url, payload);\n }\n\n updateAutoActivation(payload: AutoActivationSettings): Observable {\n return this.odataFactory.CreateService(`/AzureGroups/AutoActivationMode`).Post(payload).Exec();\n }\n\n updateFilter(searchObj: SmartSearchModel): void {\n const filter: string[] = [];\n const nameTag = this.i18nPipe.transform(this.moduleUsers + this.#name.tagKey, { format: 'title' });\n const autoActivationTag = this.i18nPipe.transform(this.moduleUsers + this.#autoActivation.tagKey, {\n format: 'title'\n });\n\n if (searchObj[nameTag]) {\n const options: FilterOptions = {\n model: searchObj[nameTag] as SmartSearchModelField[],\n prop: this.#name.prop\n };\n\n filter.push(getFilterByContains(options));\n }\n\n if (searchObj[autoActivationTag]) {\n const options: FilterOptions = {\n model: searchObj[autoActivationTag] as SmartSearchModelField[],\n prop: this.#autoActivation.prop\n };\n\n filter.push(getFilterByEq(options, true));\n }\n\n if (searchObj.words?.filter(Boolean)) {\n const term = filterByWords(searchObj).replace(SINGLE_QUOTES_REGEX, '');\n\n filter.push(containsWrapper(this.#name.prop, term));\n }\n\n this.filter = filter.length > 0 ? filter.join(` ${BOOLEAN_OPERATOR.and} `) : '';\n }\n}\n","import { HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BackupOptions, OdataObject, ServiceType } from '@common/models';\nimport { ODataService, ODataServiceFactory } from '@common/odata';\nimport { AuthService } from '@common/services/auth.service';\nimport { hasActionsQueue } from '@common/utils';\nimport { containsWrapper } from '@common/utils/functions/search';\nimport { BehaviorSubject, Observable, forkJoin } from 'rxjs';\nimport { finalize, map, shareReplay, startWith } from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class BackupService {\n #loading$: BehaviorSubject = new BehaviorSubject(false);\n\n private backupUsers: ODataService;\n\n public readonly requestPending$: Observable;\n\n constructor(private odataFactory: ODataServiceFactory, private authService: AuthService) {\n this.backupUsers = this.odataFactory.CreateService('BackupUsers');\n this.requestPending$ = this.#loading$.pipe(hasActionsQueue(), shareReplay(1));\n }\n\n canBackup(userId: string, serviceType: ServiceType): Observable {\n const serviceName = ServiceType[serviceType];\n\n this.#loading$.next(true);\n return this.backupUsers.ItemProperty(userId, `BackupStatus?service=${serviceName}`).pipe(\n map((res: OdataObject) => res == null),\n finalize(() => this.#loading$.next(false))\n );\n }\n\n canRestore(userId: string, serviceType: ServiceType): Observable {\n const serviceName = ServiceType[serviceType];\n\n this.#loading$.next(true);\n return forkJoin([\n this.authService.restoreAvailable(),\n this.backupUsers.ItemProperty(userId, `RestoreStatus?service=${serviceName}`)\n ]).pipe(\n map(([restoreAvailable, restoreStatus]) => restoreAvailable && restoreStatus === null),\n finalize(() => this.#loading$.next(false))\n );\n }\n\n startBackup(userId: string, serviceType: ServiceType): Observable {\n const serviceName = ServiceType[serviceType];\n\n return this.backupUsers.CustomAction(userId, 'Backup', { ServiceType: serviceName });\n }\n\n getBackupOptions(userId: string): Observable {\n return this.backupUsers\n .CustomFunction(userId, 'BackupOptions')\n .pipe(map((res: HttpResponse) => this.prepareBackupOptions(res.body)));\n }\n\n setBackupOptions(userId: string, options: BackupOptions): Observable {\n this.#loading$.next(true);\n\n return this.backupUsers.CustomAction(userId, 'SetBackupOptions', options).pipe(finalize(() => this.#loading$.next(false)));\n }\n\n getArchiveOptions(userId: string): Observable {\n return this.backupUsers\n .CustomFunction(userId, 'ArchiveOptions')\n .pipe(map((res: HttpResponse) => this.prepareBackupOptions(res.body)));\n }\n\n setArchiveOptions(userId: string, options: BackupOptions): Observable {\n this.#loading$.next(true);\n\n return this.backupUsers.CustomAction(userId, 'SetArchiveOptions', options).pipe(finalize(() => this.#loading$.next(false)));\n }\n\n getFolder(userId: string, search?: string): Observable {\n const odataService = this.odataFactory.CreateService<{ Name: string }>(`/BackupUsers(${userId})/GetFolders`);\n\n return odataService\n .Query()\n .Top(100)\n .Filter(containsWrapper('Name', search))\n .Exec()\n .pipe(\n map((folders) => folders.map((f) => f.Name)),\n startWith([])\n );\n }\n\n private prepareBackupOptions(options: BackupOptions): BackupOptions {\n if (options) {\n delete options['@odata.context'];\n options.ApplyToAllDomainUsers = false;\n }\n\n return options;\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BOOLEAN_OPERATOR, SINGLE_QUOTES_REGEX } from '@common';\nimport { CalendarEventModel, CalendarGroupModel, CalendarItemModel, OdataObject } from '@common/models';\nimport { ODataService, ODataServiceFactory } from '@common/odata';\nimport { CalendarServiceTag, CalendarServiceTagsMap } from '@common/services/smart-search/calendar';\nimport { filterByWords, hasActionsQueue } from '@common/utils';\nimport { FilterOptions, containsWrapper, getFilterByContains } from '@common/utils/functions/search';\nimport { I18NextPipe } from 'angular-i18next';\nimport { SmartSearchModel, SmartSearchModelField } from 'mbs-ui-kit';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { finalize, map, shareReplay } from 'rxjs/operators';\n\n@Injectable()\nexport class CalendarOdataService {\n #userId: string;\n #keys: string[];\n\n readonly #event = CalendarServiceTagsMap.get(CalendarServiceTag.Event);\n // readonly #description = CalendarServiceTagsMap.get(CalendarServiceTag.Descr);\n\n private odataUsersService: ODataService;\n private odataCalendarGroupService: ODataService;\n private odataCalendarEventsService: ODataService;\n private odataCalendarAttachmentsService: ODataService;\n private odataMethods: ODataService;\n private _loading$: BehaviorSubject = new BehaviorSubject(false);\n\n public requestPending$: Observable;\n\n set userId(id: string) {\n this.#userId = id;\n }\n\n set keys(ids: string[]) {\n this.#keys = ids;\n }\n\n get keys(): string[] {\n return this.#keys;\n }\n\n constructor(private odataFactory: ODataServiceFactory, private http: HttpClient, private i18nPipe: I18NextPipe) {\n this.odataUsersService = odataFactory.CreateService('BackupUsers');\n this.odataCalendarGroupService = odataFactory.CreateService('CalendarGroups');\n this.odataCalendarEventsService = odataFactory.CreateService('CalendarEvents');\n this.odataCalendarAttachmentsService = odataFactory.CreateService('CalendarAttachments');\n this.odataMethods = odataFactory.CreateService('');\n\n this.requestPending$ = this._loading$.pipe(hasActionsQueue(), shareReplay(1));\n }\n\n hasAccessToEvents(userId: string): Observable {\n this._loading$.next(true);\n const url = this.odataUsersService.Get(userId).GetUrl() + '/Touch ';\n return this.http.get>(url).pipe(finalize(() => this._loading$.next(false)));\n }\n\n getGroups(): Observable {\n this._loading$.next(true);\n return this.odataUsersService.ItemProperty>(this.#userId, 'CalendarGroups').pipe(\n map((result) => result.value),\n finalize(() => this._loading$.next(false))\n );\n }\n\n getItems(groupId: string): Observable {\n this._loading$.next(true);\n return this.odataCalendarGroupService.ItemProperty>(groupId, 'CalendarItems').pipe(\n map((result) => result.value),\n finalize(() => this._loading$.next(false))\n );\n }\n\n getEvents(startDate: Date, endDate: Date): Observable {\n const filter = `(RecurrenceRule ne null or (EndDate gt ${startDate.toISOString()} and StartDate lt ${endDate.toISOString()}))`;\n const odataUsersService = this.odataFactory.CreateService(`/BackupUsers(${this.#userId})/GetBulkCalendarEvents?$filter=${filter}`);\n\n this._loading$.next(true);\n return this.http.post(odataUsersService.Query().GetUrl(), { ItemIds: this.keys }).pipe(\n map((res: OdataObject) => res.value),\n finalize(() => this._loading$.next(false))\n );\n }\n\n getEventRevisions(eventId: string): Observable {\n return this.odataCalendarEventsService\n .ItemProperty>(eventId, 'Revisions')\n .pipe(map((result) => result.value));\n }\n\n searchEvents(filter: string): Observable {\n const odataUsersService = this.odataFactory.CreateService(`/BackupUsers(${this.#userId})/GetBulkCalendarEvents?$filter=${filter}`);\n\n this._loading$.next(true);\n return this.http.post(odataUsersService.Query().GetUrl(), { ItemIds: this.keys }).pipe(\n map((res: OdataObject) => res.value),\n finalize(() => this._loading$.next(false))\n );\n }\n\n updateFilter(searchObj: SmartSearchModel): string {\n const filter: string[] = [];\n\n // if (searchObj[this.#description.tag]) {\n // const options: FilterOptions = {\n // model: searchObj[this.#description.tag] as SmartSearchModelField[],\n // prop: this.#description.prop\n // };\n //\n // filter.push(getFilterByContains(options));\n // }\n\n if (searchObj[this.#event.tag]) {\n const options: FilterOptions = {\n model: searchObj[this.#event.tag] as SmartSearchModelField[],\n prop: this.#event.prop\n };\n\n filter.push(getFilterByContains(options));\n }\n\n if (searchObj.words?.filter(Boolean)) {\n const term = filterByWords(searchObj).replace(SINGLE_QUOTES_REGEX, '');\n // const keys = [this.#event.prop, this.#description.prop];\n const keys = [this.#event.prop];\n const values = keys.map((k) => containsWrapper(k, term));\n\n filter.push('('.concat(values.join(` ${BOOLEAN_OPERATOR.or} `), ')'));\n }\n\n return filter.length > 0 ? filter.join(` ${BOOLEAN_OPERATOR.and} `) : '';\n }\n\n restoreAll(): Observable {\n return this.odataMethods.CustomCollectionAction('RestoreAllCalendars', { UserId: this.#userId });\n }\n\n restoreGroup(Ids: string[]): Observable {\n return this.odataMethods.CustomCollectionAction('RestoreCalendarGroups', { Ids });\n }\n\n restoreEvent(eventId: string): Observable {\n this._loading$.next(true);\n return this.odataMethods\n .CustomCollectionAction('RestoreCalendarEvent', { EventId: eventId })\n .pipe(finalize(() => this._loading$.next(false)));\n }\n\n restoreCalendar(Ids: string[]): Observable {\n return this.odataMethods.CustomCollectionAction('RestoreCalendars', { Ids });\n }\n\n deleteEvent(eventId: string, password: string): Observable {\n this._loading$.next(true);\n return this.odataMethods\n .CustomCollectionAction('DeleteCalendarEvents', { Ids: [eventId], Password: password, WithAllRevisions: true })\n .pipe(finalize(() => this._loading$.next(false)));\n }\n\n deleteCalendar(calendarIds: string[], password: string): Observable {\n this._loading$.next(true);\n return this.odataMethods\n .CustomCollectionAction('DeleteCalendarItems', { Ids: calendarIds, Password: password })\n .pipe(finalize(() => this._loading$.next(false)));\n }\n\n deleteGroup(groupIds: string[], password: string): Observable {\n this._loading$.next(true);\n return this.odataMethods\n .CustomCollectionAction('DeleteCalendarGroups', { Ids: groupIds, Password: password })\n .pipe(finalize(() => this._loading$.next(false)));\n }\n}\n","import { HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BOOLEAN_OPERATOR, COMPARISON_OPERATOR, SINGLE_QUOTES_REGEX } from '@common';\nimport { ContactDetails, ContactFolderODataItem, ContactODataItem } from '@common/models';\nimport { ODataPagedResult, ODataService, ODataServiceFactory } from '@common/odata';\nimport { AuthService, SharedOdataService } from '@common/services';\nimport { ContactsServiceTag, ContactsServiceTagsMap } from '@common/services/smart-search/contacts';\nimport { getOdataTop } from '@common/utils';\nimport { FilterOptions, containsWrapper, filterByWords, getFilterByContains } from '@common/utils/functions/search';\nimport { I18NextPipe } from 'angular-i18next';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { SmartSearchModel, SmartSearchModelField } from 'mbs-ui-kit';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ContactsService extends SharedOdataService {\n #groupId: string;\n\n public readonly moduleContacts = I18_NAMESPACE_APPS_UI.contacts;\n\n readonly #firstName = ContactsServiceTagsMap.get(ContactsServiceTag.FirstName);\n readonly #lastName = ContactsServiceTagsMap.get(ContactsServiceTag.LastName);\n readonly #primaryEmail = ContactsServiceTagsMap.get(ContactsServiceTag.PrimaryEmail);\n readonly #phoneNumber = ContactsServiceTagsMap.get(ContactsServiceTag.PhoneNumber);\n\n private odataMethods: ODataService;\n private backupMethods: ODataService;\n\n set groupId(id: string) {\n this.#groupId = id;\n }\n\n get groupId(): string {\n return this.#groupId;\n }\n\n constructor(odataFactory: ODataServiceFactory, private authService: AuthService, private i18nPipe: I18NextPipe) {\n super(odataFactory, 'ContactItems');\n\n this.odataMethods = odataFactory.CreateService('');\n this.backupMethods = odataFactory.CreateService('BackupUsers');\n }\n\n public getContactsItemsByGroupId(id: string): Observable> {\n const newOdata = this.odataFactory.CreateService(`/ContactGroups(${id})/ContactItems`);\n\n return newOdata\n .Query()\n .OrderBy(this.state.orderBy)\n .Filter(this.filter.length > 0 ? this.filter.concat(' and IsLast eq true') : 'IsLast eq true')\n .Top(this.state.pageSize)\n .Skip(this.state.pageSize * (this.state.page - 1))\n .ExecWithCount();\n }\n\n public getContactVersions(groupId: string, providerId: string, version: number): Observable> {\n const newOdata = this.odataFactory.CreateService(`/ContactGroups(${groupId})/ContactItems`);\n\n return newOdata.Query().OrderBy('Version desc').Filter(`(ProviderId eq '${providerId}' and Version ne ${version})`).ExecWithCount();\n }\n\n public getContactDetails(id: string): Observable {\n return this.odata.CustomFunction(id, 'GetDetails').pipe(map((res: HttpResponse) => res.body));\n }\n\n public getContactsFolders(\n userId: string,\n options?: { inbox?: boolean; search?: string; skip?: number }\n ): Observable> {\n const { inbox, search, skip } = options || {};\n const defaultFolderName = this.authService.isOffice\n ? this.i18nPipe.transform(this.moduleContacts + ':contacts', { format: 'title' })\n : this.i18nPipe.transform(this.moduleContacts + ':myContacts', { format: 'title' });\n const filter = inbox\n ? `Name ${COMPARISON_OPERATOR.eq} '${defaultFolderName}'`\n : `Name ${COMPARISON_OPERATOR.ne} '${defaultFolderName}'`;\n\n return this.odataFactory\n .CreateService(`/BackupUsers(${userId})/ContactGroups`)\n .Query()\n .OrderBy(inbox ? null : 'Name asc')\n .Top(getOdataTop(search || inbox))\n .Skip(skip)\n .Filter(search ? containsWrapper('Name', search) : filter)\n .ExecWithCount();\n }\n\n public restoreContacts(CategoryId: string, Ids: string[]): Observable {\n return this.odataMethods.CustomCollectionAction('RestoreContacts', { CategoryId, Ids });\n }\n\n public deleteContacts(data: { Ids: string[]; Password: string; WithAllRevisions: boolean }): Observable {\n return this.odataMethods.CustomCollectionAction('DeleteContactItems', data);\n }\n\n public restoreContactsGroup(CategoryId: string): Observable {\n return this.odataMethods.CustomCollectionAction('RestoreContactsGroup', { CategoryId });\n }\n\n public deleteContactsGroup(data: { Ids: string[]; Password: string }): Observable {\n return this.odataMethods.CustomCollectionAction('DeleteContactGroups', data);\n }\n\n public restoreAllContacts(UserId: string): Observable {\n return this.odataMethods.CustomCollectionAction('RestoreAllContacts', { UserId });\n }\n\n updateFilter(searchObj: SmartSearchModel): void {\n const filter: string[] = [];\n\n if (searchObj[this.#firstName.tag]) {\n const options: FilterOptions = {\n model: searchObj[this.#firstName.tag] as SmartSearchModelField[],\n prop: this.#firstName.prop\n };\n\n filter.push(this.convertFiltersToStr(this.#firstName.prop, getFilterByContains(options)));\n }\n\n if (searchObj[this.#lastName.tag]) {\n const options: FilterOptions = {\n model: searchObj[this.#lastName.tag] as SmartSearchModelField[],\n prop: this.#lastName.prop\n };\n\n filter.push(this.convertFiltersToStr(this.#lastName.prop, getFilterByContains(options)));\n }\n\n if (searchObj[this.#primaryEmail.tag]) {\n const options: FilterOptions = {\n model: searchObj[this.#primaryEmail.tag] as SmartSearchModelField[],\n prop: this.#primaryEmail.prop\n };\n\n filter.push(this.convertFiltersToStr(this.#primaryEmail.prop, getFilterByContains(options)));\n }\n\n if (searchObj[this.#phoneNumber.tag]) {\n const options: FilterOptions = {\n model: searchObj[this.#phoneNumber.tag] as SmartSearchModelField[],\n prop: this.#phoneNumber.prop\n };\n\n filter.push(this.convertFiltersToStr(this.#phoneNumber.prop, getFilterByContains(options)));\n }\n\n if (searchObj.words?.filter(Boolean)) {\n const term = filterByWords(searchObj).replace(SINGLE_QUOTES_REGEX, '');\n const keys = [this.#firstName.prop, this.#lastName.prop, this.#primaryEmail.prop, this.#phoneNumber.prop];\n const values = keys.map((k) => `(${k} ${COMPARISON_OPERATOR.ne} null ${BOOLEAN_OPERATOR.and} ${containsWrapper(k, term)})`);\n\n filter.push('('.concat(values.join(` ${BOOLEAN_OPERATOR.or} `), ')'));\n }\n\n this.filter = filter.length > 0 ? filter.join(` ${BOOLEAN_OPERATOR.and} `) : '';\n }\n\n convertFiltersToStr = (prop: string, filters: string) => `(${prop} ${COMPARISON_OPERATOR.ne} null ${BOOLEAN_OPERATOR.and} ${filters})`;\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport {\n AuthUser,\n ConfigureServices,\n hasAdminRole,\n OdataObject,\n OdataServiceStatistics,\n OdataServiceStatisticsSave,\n Role,\n ServiceStatistics,\n ServiceStatisticsSaveObject,\n ServiceType\n} from '@common/models';\nimport { ODataService, ODataServiceFactory } from '@common/odata';\nimport { AuthService } from '@common/services';\nimport { get, isNil } from 'lodash';\nimport { forkJoin, Observable } from 'rxjs';\nimport { map, shareReplay, switchMap } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DashboardService {\n private readonly backupMethods: ODataService;\n private readonly domainMethods: ODataService;\n private readonly requestScopeUrl: ODataService;\n private readonly userData$: { user: Observable; roles: Observable };\n\n constructor(odataFactory: ODataServiceFactory, authService: AuthService, private http: HttpClient) {\n this.backupMethods = odataFactory.CreateService('BackupUsers');\n this.domainMethods = odataFactory.CreateService('Domains');\n this.requestScopeUrl = odataFactory.CreateService('RequestScopeUrl');\n this.userData$ = {\n user: authService.getAuthUser().pipe(shareReplay(1)),\n roles: authService.getRoles().pipe(shareReplay(1))\n };\n }\n\n getServiceStatistics(): Observable {\n const methodName = 'ServiceStatistics';\n\n return forkJoin(this.userData$).pipe(\n switchMap(({ user, roles }) => {\n const isAdmin = hasAdminRole(roles);\n const id: string = this.getId(isAdmin, user);\n const service: ODataService = this.getServiceMethod(isAdmin);\n\n return service.ItemProperty>(id, methodName).pipe(\n map((r: OdataObject) => {\n if (isNil(r)) return [] as ServiceStatistics[];\n\n return r.value.map((odataObj: OdataServiceStatistics) => new ServiceStatistics(odataObj));\n })\n );\n })\n );\n }\n\n configureServices(saveData: ServiceStatisticsSaveObject): Observable {\n return forkJoin(this.userData$).pipe(\n switchMap(({ user, roles }) => {\n const isAdmin = hasAdminRole(roles);\n const id: string = this.getId(isAdmin, user);\n const service: ODataService = this.getServiceMethod(isAdmin);\n const url = `${service.Query().GetUrl()}(${id})/ConfigureServices`;\n\n const postBody: OdataServiceStatisticsSave = {\n ApplyToEnabledUsers: saveData.forAllEnabledUsers,\n Services: saveData.services.map((s) => {\n return {\n Service: ServiceType[s.serviceType],\n Enabled: s.enabled\n };\n })\n };\n\n return this.http.post(url, postBody).pipe(map((res) => get(res, 'value')));\n })\n );\n }\n\n private getId = (isAdmin: boolean, user: AuthUser): string => (isAdmin ? user.DomainId : user.Id);\n\n private getServiceMethod(isAdmin: boolean): ODataService {\n return isAdmin ? this.domainMethods : this.backupMethods;\n }\n\n getRequestScopeUrl(services: ServiceType[]): Observable {\n return this.requestScopeUrl\n .Query()\n .CustomQueryOptions({ key: 'services', value: services.map((s) => ServiceType[s]).join(',') })\n .Exec() as unknown as Observable;\n }\n}\n","import { HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport {\n DomainModel,\n DomainServiceInfo,\n DomainServicesState,\n DomainStatistic,\n hasAdminRole,\n ServiceType,\n UserServiceBackupInfo\n} from '@common/models';\nimport { ODataService, ODataServiceFactory } from '@common/odata';\nimport { AuthService } from '@common/services';\nimport { hasActionsQueue } from '@common/utils';\nimport { UntilDestroy } from '@ngneat/until-destroy';\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { catchError, filter, finalize, map, shareReplay, switchMap, take, tap } from 'rxjs/operators';\n\n@UntilDestroy()\n@Injectable({ providedIn: 'root' })\nexport class DomainService {\n readonly #domainData = new BehaviorSubject(null);\n readonly #domainStatistic = new BehaviorSubject(null);\n readonly #domainServicesState = new BehaviorSubject(null);\n\n readonly #loading$: BehaviorSubject = new BehaviorSubject(false);\n\n private domainOdata: ODataService;\n private odata: ODataService;\n\n public requestPending$: Observable;\n\n constructor(private odataFactory: ODataServiceFactory, private authService: AuthService) {\n this.odata = this.odataFactory.CreateService('');\n this.domainOdata = this.odataFactory.CreateService('Domains');\n this.requestPending$ = this.#loading$.pipe(hasActionsQueue(), shareReplay(1));\n }\n\n get currentDomain$(): Observable {\n return this.#domainData.asObservable();\n }\n\n get domainStatistic$(): Observable {\n return this.#domainStatistic.asObservable();\n }\n\n get domainServicesState$(): Observable {\n return this.#domainServicesState.asObservable();\n }\n\n initAuthGuard(): Observable {\n return this.currentDomain$.pipe(\n map((domain) => {\n domain ? this.authService.logout() : this.fetchDomain();\n\n return !domain;\n }),\n catchError(() => of(false))\n );\n }\n\n fetchDomain(): void {\n this.authService\n .getRoles()\n .pipe(\n filter((r) => hasAdminRole(r)),\n switchMap(() => this.authService.getAuthUser()),\n switchMap((user) => this.domainOdata.Get(user.DomainId).Exec())\n )\n .subscribe({\n next: (domain) => {\n this.#domainData.next(domain);\n }\n });\n }\n\n getFetchDomain(): Observable {\n return this.authService.getRoles().pipe(\n filter((r) => hasAdminRole(r)),\n switchMap(() => this.authService.getAuthUser()),\n switchMap((user) => this.domainOdata.Get(user.DomainId).Exec()),\n tap((domain) => this.#domainData.next(domain))\n );\n }\n\n getDomainServiceInfo(\n service: ServiceType.TeamDrives | ServiceType.SharePoint | ServiceType.Teams | ServiceType.Contacts\n ): Observable | Observable {\n const serviceName: string = this.getServiceName(service);\n\n if (!serviceName) return of(null);\n\n return this.authService.getAuthUser().pipe(\n switchMap((user) => this.domainOdata.Get(user.DomainId).Expand(serviceName).Exec()),\n map((domain) => {\n const domainServiceInfo = domain[serviceName] as DomainServiceInfo;\n\n return {\n LastBackupDate: domainServiceInfo.LastBackupDate,\n TotalSize: domainServiceInfo.Size\n };\n })\n );\n }\n\n private getServiceName = (service: ServiceType): string => {\n switch (service) {\n case ServiceType.TeamDrives:\n return 'TeamDrive';\n case ServiceType.SharePoint:\n return 'Site';\n case ServiceType.Teams:\n return 'Team';\n case ServiceType.Contacts:\n return 'Contact';\n default:\n return '';\n }\n };\n\n fetchDomainStatistic(): void {\n this.callOdataFunc('GetDomainUsersStatistic()', (res) => this.#domainStatistic.next(res));\n }\n\n fetchDomainServicesState(): void {\n this.callOdataFunc('GetDomainServicesState()', (res) => this.#domainServicesState.next(res));\n }\n\n private callOdataFunc(funcName: string, successCallback: (a: any) => void) {\n this.#loading$.next(true);\n this.odata\n .CustomCollectionFunction(funcName)\n .pipe(\n take(1),\n finalize(() => this.#loading$.next(false))\n )\n .subscribe({\n next: (res: HttpResponse) => successCallback(res.body)\n });\n }\n\n syncDomain(): Observable {\n return this.domainOdata.CustomAction(this.#domainData.value.Id, 'Sync', null);\n }\n\n resetCache(): void {\n this.#domainData.next(null);\n this.#domainStatistic.next(null);\n this.#domainServicesState.next(null);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { COMPARISON_OPERATOR } from '@common';\nimport { DriveOdataItem } from '@common/models';\nimport { ODataPagedResult, ODataService, ODataServiceFactory } from '@common/odata';\nimport { SharedOdataService } from '@common/services';\nimport { Observable } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class DriveTreeOdataService extends SharedOdataService {\n private readonly odataDriveItems: ODataService;\n\n constructor(odataFactory: ODataServiceFactory) {\n super(odataFactory, 'DriveItems');\n this.odataDriveItems = odataFactory.CreateService('DriveItems');\n this.setDefaultOdataOptions();\n }\n\n fetchItems(): Observable> {\n return this.fetchData(this.odataDriveItems);\n }\n\n updateCustomOptions(options: { key: string; value?: any }, isDelete = false): void {\n const { key, value } = options || {};\n\n if (isDelete) {\n this.removeCustomQueryOption(key);\n } else {\n this.addCustomQueryOption(key, value);\n }\n }\n\n setDefaultOdataOptions(): void {\n this.page = 1;\n this.pageSize = 100;\n this.orderBy = 'Type asc';\n this.filter = `Type ${COMPARISON_OPERATOR.eq} false`;\n }\n}\n","import { HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BOOLEAN_OPERATOR, COMPARISON_OPERATOR, SINGLE_QUOTES_REGEX } from '@common';\nimport { DriveItemDetails, DriveODataOption, DriveOdataItem, RestoreDriveItems, ServiceType } from '@common/models';\nimport { ODataPagedResult, ODataService, ODataServiceFactory } from '@common/odata';\nimport { SharedOdataService } from '@common/services';\nimport { DriveBaseTagsEnum, DriveBaseTagsMap } from '@common/services/smart-search/drive-base/smart-search-tags-drive-base.model';\nimport { filterByWords } from '@common/utils';\nimport { containsWrapper } from '@common/utils/functions/search';\nimport { SmartSearchHelper } from '@common/utils/helper/smart-search.helper';\nimport { SmartSearchModel } from 'mbs-ui-kit';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nexport type ICollectionAction = { ServiceType: ServiceType; Password: string; Ids: string[] };\nexport type ISiteCollectionAction = { Password: string; Ids: string[] };\n\n@Injectable({ providedIn: 'root' })\nexport class DriveOdataService extends SharedOdataService {\n private odataMethods: ODataService;\n private readonly odataDriveItems: ODataService;\n\n readonly #fileName = DriveBaseTagsMap.get(DriveBaseTagsEnum.File);\n readonly #folderName = DriveBaseTagsMap.get(DriveBaseTagsEnum.Folder);\n readonly #name = DriveBaseTagsMap.get(DriveBaseTagsEnum.Name);\n\n readonly #fileType = `${this.#fileName.prop} ${COMPARISON_OPERATOR.eq} true`;\n readonly #folderType = `${this.#folderName.prop} ${COMPARISON_OPERATOR.eq} false`;\n\n constructor(odataFactory: ODataServiceFactory) {\n super(odataFactory, 'DriveItems');\n this.odataMethods = odataFactory.CreateService('');\n this.odataDriveItems = odataFactory.CreateService('DriveItems');\n }\n\n fetchItems(): Observable> {\n return this.fetchData(this.odataDriveItems);\n }\n\n getPage(id: string): Observable {\n const newOdata = this.odataFactory.CreateService(`/DriveItems/GetPage`);\n\n return newOdata\n .Query()\n .Top(this.pageSize)\n .OrderBy(this.orderBy)\n .CustomQueryOptions([\n { key: 'Id', value: id },\n { key: 'TeamDrive', value: this.customQueryOptions.get(DriveODataOption.TeamDrive) }\n ])\n .Exec() as unknown as Observable;\n }\n\n restoreDriveItems(data: RestoreDriveItems): Observable {\n return this.odataMethods\n .CustomCollectionAction('RestoreDriveItems', data)\n .pipe(map((res: HttpResponse) => res.body));\n }\n\n getItemDetails(id: string): Observable {\n return this.odata.CustomFunction(id, 'GetDetails', null).pipe(map((res: HttpResponse) => res.body));\n }\n\n deleteDriveItems(data: ICollectionAction): Observable {\n return this.odataMethods\n .CustomCollectionAction('DeleteDriveItems', { ...data, ServiceType: ServiceType[data.ServiceType] })\n .pipe(map((res: HttpResponse) => res.body));\n }\n\n deleteSiteBlocks(data: ISiteCollectionAction): Observable {\n return this.odataMethods.CustomCollectionAction('DeleteSiteBlocks', data).pipe(map((res: HttpResponse) => res.body));\n }\n\n deleteSiteBlockItems(data: ISiteCollectionAction): Observable {\n return this.odataMethods\n .CustomCollectionAction('DeleteSiteBlockItems', data)\n .pipe(map((res: HttpResponse) => res.body));\n }\n\n updateFilter(searchObj: SmartSearchModel): void {\n const filter: string[] = [];\n const values = SmartSearchHelper.getValues(searchObj);\n\n if (searchObj[this.#fileName.tag] && !searchObj[this.#folderName.tag]) {\n const value = SmartSearchHelper.getJoinedValue(values, this.#fileName.tag);\n\n filter.push(`${this.#fileType} ${BOOLEAN_OPERATOR.and} ${containsWrapper(this.#name.prop, value)}`);\n }\n\n if (searchObj[this.#folderName.tag] && !searchObj[this.#fileName.tag]) {\n const value = SmartSearchHelper.getJoinedValue(values, this.#folderName.tag);\n\n filter.push(`${this.#folderType} ${BOOLEAN_OPERATOR.and} ${containsWrapper(this.#name.prop, value)}`);\n }\n\n if (searchObj[this.#fileName.tag] && searchObj[this.#folderName.tag]) {\n const fileValue = SmartSearchHelper.getJoinedValue(values, this.#fileName.tag);\n const folderValue = SmartSearchHelper.getJoinedValue(values, this.#folderName.tag);\n const fileCondition = `${this.#fileType} ${BOOLEAN_OPERATOR.and} ${containsWrapper(this.#name.prop, fileValue)}`;\n const folderCondition = `${this.#folderType} ${BOOLEAN_OPERATOR.and} ${containsWrapper(this.#name.prop, folderValue)}`;\n\n filter.push(`(${fileCondition}) ${BOOLEAN_OPERATOR.or} (${folderCondition})`);\n }\n\n if (searchObj.words?.filter(Boolean)) {\n const term = filterByWords(searchObj).replace(SINGLE_QUOTES_REGEX, '');\n const keys = [this.#name.prop];\n const values = keys.map((k) => containsWrapper(k, term));\n\n filter.push('('.concat(values.join(` ${BOOLEAN_OPERATOR.or} `), ')'));\n }\n\n this.filter = filter.length > 0 ? filter.join(` ${BOOLEAN_OPERATOR.and} `) : '';\n }\n\n updateCustomOptions(options: { key: string; value?: any }, isDelete = false): void {\n const { key, value } = options || {};\n\n if (isDelete) {\n this.removeCustomQueryOption(key);\n } else {\n this.addCustomQueryOption(key, value);\n }\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BOOLEAN_OPERATOR, SINGLE_QUOTES_REGEX } from '@common';\nimport { AuthUser, DeleteArtifacts, ExportResultsOdata, ServiceTypeByAPIEnum } from '@common/models';\nimport { ODataPagedResult, ODataService, ODataServiceFactory } from '@common/odata';\nimport { AuthService, SharedOdataService } from '@common/services';\nimport { ExportResultsTagsEnum, ExportResultsTagsMap, sizeFilterEnum } from '@common/services/smart-search';\nimport { filterByWords } from '@common/utils';\nimport {\n FilterOptions,\n containsWrapper,\n getFilterByContains,\n getFilterByDateRange,\n getFilterByEqFromEnum,\n getFilterBySize\n} from '@common/utils/functions/search';\nimport { isNil } from 'lodash';\nimport { SmartSearchModel, SmartSearchModelField } from 'mbs-ui-kit';\nimport { Observable } from 'rxjs';\nimport { filter, map, switchMap } from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class ExportResultsService extends SharedOdataService {\n readonly #userName = ExportResultsTagsMap.get(ExportResultsTagsEnum.userName);\n readonly #fileName = ExportResultsTagsMap.get(ExportResultsTagsEnum.fileName);\n readonly #serviceType = ExportResultsTagsMap.get(ExportResultsTagsEnum.serviceType);\n readonly #dateFrom = ExportResultsTagsMap.get(ExportResultsTagsEnum.dateFrom);\n readonly #dateTo = ExportResultsTagsMap.get(ExportResultsTagsEnum.dateTo);\n readonly #sizeMore = ExportResultsTagsMap.get(ExportResultsTagsEnum.sizeMore);\n readonly #sizeLess = ExportResultsTagsMap.get(ExportResultsTagsEnum.sizeLess);\n\n private user$: Observable;\n private odataArtifact: ODataService;\n\n constructor(odataFactory: ODataServiceFactory, private http: HttpClient, private authService: AuthService) {\n super(odataFactory, 'ExportResults');\n\n this.odataArtifact = this.odataFactory.CreateService('Artifacts');\n this.user$ = this.authService.getAuthUser();\n }\n\n getExportResults(): Observable> {\n return this.user$.pipe(\n filter((user) => !isNil(user)),\n switchMap((user) => this.userExportResults(user.Id))\n );\n }\n\n private userExportResults(id: string): Observable> {\n const odataService = this.odataFactory.CreateService(`/BackupUsers(${id})/Artifacts`);\n\n return this.fetchData(odataService);\n }\n\n deleteArtifact(id: string): Observable {\n return >this.odataArtifact.Delete(id).Exec();\n }\n\n deleteSelected(Ids: string[]): Observable {\n const payload: DeleteArtifacts = { Ids };\n\n return this.deleteArtifacts(payload);\n }\n\n private deleteArtifacts(payload: DeleteArtifacts): Observable {\n const odataService = this.odataFactory.CreateService(`/DeleteArtifacts`);\n\n return this.http.post(odataService.Query().GetUrl(), payload).pipe(map(() => true));\n }\n\n updateFilter(searchObj: SmartSearchModel): void {\n const filter: string[] = [];\n\n if (searchObj[this.#userName.tag]) {\n const options: FilterOptions = {\n model: searchObj[this.#userName.tag] as SmartSearchModelField[],\n prop: this.#userName.prop\n };\n\n filter.push(getFilterByContains(options));\n }\n\n if (searchObj[this.#fileName.tag]) {\n const options: FilterOptions = {\n model: searchObj[this.#fileName.tag] as SmartSearchModelField[],\n prop: this.#fileName.prop\n };\n\n filter.push(getFilterByContains(options));\n }\n\n if (searchObj[this.#serviceType.tag]) {\n const options: FilterOptions = {\n model: searchObj[this.#serviceType.tag] as SmartSearchModelField[],\n prop: this.#serviceType.prop,\n enumItems: ServiceTypeByAPIEnum\n };\n\n filter.push(getFilterByEqFromEnum(options));\n }\n\n if (searchObj[this.#dateFrom.tag]) {\n const options: FilterOptions = {\n model: searchObj[this.#dateFrom.tag] as SmartSearchModelField[],\n prop: this.#dateFrom.prop\n };\n const value = getFilterByDateRange(options, 'from');\n\n value && filter.push(value);\n }\n\n if (searchObj[this.#dateTo.tag]) {\n const options: FilterOptions = {\n model: searchObj[this.#dateTo.tag] as SmartSearchModelField[],\n prop: this.#dateTo.prop\n };\n const value = getFilterByDateRange(options, 'to');\n\n value && filter.push(value);\n }\n\n if (searchObj[this.#sizeMore.tag]) {\n const options: FilterOptions & { filter: sizeFilterEnum } = {\n model: searchObj[this.#sizeMore.tag] as SmartSearchModelField[],\n prop: this.#sizeMore.prop,\n filter: sizeFilterEnum.more\n };\n\n filter.push(getFilterBySize(options));\n }\n\n if (searchObj[this.#sizeLess.tag]) {\n const options: FilterOptions & { filter: sizeFilterEnum } = {\n model: searchObj[this.#sizeLess.tag] as SmartSearchModelField[],\n prop: this.#sizeLess.prop,\n filter: sizeFilterEnum.less\n };\n\n filter.push(getFilterBySize(options));\n }\n\n if (searchObj.words?.filter(Boolean)) {\n const term = filterByWords(searchObj).replace(SINGLE_QUOTES_REGEX, '');\n const keys = [this.#userName.prop, this.#fileName.prop];\n const values = keys.map((k) => `(${containsWrapper(k, term)})`);\n\n filter.push('('.concat(values.join(` ${BOOLEAN_OPERATOR.or} `), ')'));\n }\n\n this.filter = filter.length > 0 ? filter.join(` ${BOOLEAN_OPERATOR.and} `) : '';\n }\n}\n","\n\n \n\n \n\n
\n \n
\n\n

\n {{ 'modal.title.exportPstFile' | i18next: { format: 'capitalize' } }}\n

\n\n

\n {{ 'modal.body.exportPstFile' | i18next: { format: 'capitalize' } }}\n

\n\n
\n\n \n\n \n\n

\n {{ 'modal.body.description.exportPstFile_admin.part_1' | i18next: { format: 'capitalize', countRequired: countRequired } }}\n \n {{ 'modal.body.description.directPSTDownloadSettings' | i18next: { format: 'title' } }}\n \n {{ 'modal.body.description.exportPstFile_admin.part_2' | i18next: { format: 'capitalize' } }}\n \n {{ domainName }}.\n \n {{ 'modal.body.description.exportPstFile_admin.part_3' | i18next: { format: 'capitalize' } }}\n \n {{ 'modal.body.description.directPSTDownload' | i18next: { format: 'title' } }}\n \n {{ 'modal.body.description.exportPstFile_admin.part_4' | i18next: { format: 'capitalize' } }}\n

\n\n
\n\n \n \n \n\n \n \n \n\n
\n\n
\n\n \n\n

\n {{ 'modal.body.description.exportPstFile_user.part_1' | i18next: { format: 'capitalize', countRequired: countRequired } }}\n \n {{ 'modal.body.description.directPSTDownload' | i18next: { format: 'title' } }}\n \n {{ 'modal.body.description.exportPstFile_user.part_2' | i18next }}\n

\n\n
\n\n
\n\n
\n\n \n\n \n\n \n {{ moduleButton + ':button.trackExport' | i18next: { format: 'title' } }}\n \n\n \n\n \n\n \n {{ moduleButton + ':button.enableDirectPSTDownload' | i18next: { format: 'title' } }}\n \n\n \n\n \n {{\n (isAdmin$ | async)\n ? (moduleButton + ':button.cancel' | i18next: { format: 'title' })\n : (moduleButton + ':button.close' | i18next: { format: 'title' })\n }}\n \n\n \n\n
\n","import { AsyncPipe, NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, OnInit, ViewChild } from '@angular/core';\nimport { AbstractControl, FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { RouterLink } from '@angular/router';\nimport { APPEND_BUTTON_PASSWORD_STATE, RoutePath } from '@common';\nimport { DownloadToPSTFileBaseModalData, hasAdminRole, hasLimitedAdminRole, hasSingleUserRole } from '@common/models';\nimport { ArchivePasswordService, AuthService } from '@common/services';\nimport { getAppendButtonsIcon, getAppendButtonsState, hasAppendButtonsPasswordType, isConfirmPasswordValidator } from '@common/utils';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { I18NextModule } from 'angular-i18next';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { camelCase, isNil } from 'lodash';\nimport { ButtonModule, FormGroupModule, InputButton, InputModule, MbsSize, ModalComponent, ModalModule } from 'mbs-ui-kit';\nimport { IconSpriteModule } from 'ng-svg-icon-sprite';\nimport { BehaviorSubject, EMPTY, Observable, forkJoin, switchMap } from 'rxjs';\nimport { filter, finalize, map } from 'rxjs/operators';\n\ntype FormGroupType = {\n password: AbstractControl;\n confirmPassword: AbstractControl;\n};\n\n@UntilDestroy()\n@Component({\n templateUrl: './download-to-pst-file.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n ModalModule,\n AsyncPipe,\n ButtonModule,\n I18NextModule,\n InputModule,\n FormGroupModule,\n ReactiveFormsModule,\n NgIf,\n RouterLink,\n IconSpriteModule\n ]\n})\nexport class DownloadToPstFileComponent implements OnInit {\n @ViewChild(ModalComponent, { static: true }) baseModal: ModalComponent;\n\n public formGroup: FormGroup;\n\n public loadingData$ = new BehaviorSubject(false);\n public loadingSaveButton$ = new BehaviorSubject(false);\n public isAdmin$: Observable;\n\n public readonly RoutePath = RoutePath;\n public readonly MbsSize = MbsSize;\n public readonly moduleButton = I18_NAMESPACE_APPS_UI.button;\n public readonly getAppendButtonsIcon = getAppendButtonsIcon;\n\n public passwordType$: BehaviorSubject = new BehaviorSubject(APPEND_BUTTON_PASSWORD_STATE.hidden.type);\n public confirmPasswordType$: BehaviorSubject = new BehaviorSubject(APPEND_BUTTON_PASSWORD_STATE.hidden.type);\n\n get prefix(): string {\n return this.authService?.prefix;\n }\n\n get domainName(): string {\n return this.authService?.domainName;\n }\n\n get baseModalData(): DownloadToPSTFileBaseModalData {\n return this.baseModal.data;\n }\n\n get id(): string {\n return this.baseModalData.id;\n }\n\n get taskHasStarted(): boolean {\n return this.baseModalData.taskHasStarted;\n }\n\n get func(): () => Observable {\n return this.baseModalData.func;\n }\n\n get countRequired(): string {\n return this.baseModalData.countRequired;\n }\n\n constructor(private fb: FormBuilder, private authService: AuthService, private archivePasswordService: ArchivePasswordService) {}\n\n ngOnInit(): void {\n if (this.func) {\n this.loadingData$.next(true);\n this.func()\n .pipe(\n finalize(() => this.loadingData$.next(false)),\n untilDestroyed(this)\n )\n .subscribe();\n }\n\n this.formInit();\n this.initStreams();\n }\n\n private formInit(): void {\n this.formGroup = this.fb.group(\n {\n password: ['', [Validators.required, Validators.minLength(7), Validators.maxLength(20)]],\n confirmPassword: ['', [Validators.required]]\n },\n {\n validators: [isConfirmPasswordValidator.bind({}, { password: 'password', confirmPassword: 'confirmPassword' })]\n }\n );\n }\n\n private initStreams(): void {\n this.isAdmin$ = forkJoin([this.authService.getAuthUser(), this.authService.getRoles(), this.authService.getProviderRoles()]).pipe(\n filter(([user, roles]) => !isNil(user) || !isNil(roles)),\n map(([user, roles, providerRoles]) => hasAdminRole(roles) || hasSingleUserRole(roles) || hasLimitedAdminRole(roles, providerRoles))\n );\n }\n\n handleSave(): void {\n this.loadingSaveButton$.next(true);\n this.isAdmin$\n .pipe(\n switchMap((isAdmin) =>\n isAdmin ? this.archivePasswordService.exportSettings(this.id, this.formGroup.get('password').value) : EMPTY\n ),\n finalize(() => this.loadingSaveButton$.next(false))\n )\n .subscribe({\n next: () => {\n this.baseModal.save(true);\n }\n });\n }\n\n handleClose(): void {\n this.baseModal.close();\n }\n\n handleChangePasswordType(event: InputButton): void {\n if (!event) return;\n\n const id = camelCase(event.id.replace('append', ''));\n const subjectById: BehaviorSubject = this[id + 'Type$'];\n const isPasswordType: boolean = hasAppendButtonsPasswordType(subjectById.getValue());\n\n subjectById.next(APPEND_BUTTON_PASSWORD_STATE[getAppendButtonsState(isPasswordType)].type);\n }\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { DownloadToPstFileComponent } from '@common/components/modals/download-to-pst-file/download-to-pst-file.component';\nimport { DownloadToPSTFileBaseModalData, hasAdminRole, hasDomainUserRole, hasLimitedAdminRole, hasSingleUserRole } from '@common/models';\nimport { AuthService } from '@common/services';\nimport { formatWithSpaces } from '@common/utils';\nimport { isNil } from 'lodash';\nimport { MbsSize, ModalService, ModalSettings } from 'mbs-ui-kit';\nimport { Observable, forkJoin, from, throwError } from 'rxjs';\nimport { catchError, filter, switchMap } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ExportToPstHelper {\n private readonly errorRole$: Observable = throwError(() => 'Forbidden role');\n\n constructor(private modalService: ModalService, private authService: AuthService) {}\n\n catchErrorDownloadFile(error: HttpErrorResponse, func: () => Observable): Observable {\n // 513 - error means that don't selected checkbox 'Direct PST Download' in My Account -> General Tab\n if (error.status === 513) {\n return forkJoin([this.authService.getRoles(), this.authService.getProviderRoles()]).pipe(\n filter(([roles, providerRoles]) => !isNil(roles) || !isNil(providerRoles)),\n switchMap(([roles, providerRoles]) => {\n const isAdmin = hasAdminRole(roles);\n const isSingleUser = hasSingleUserRole(roles);\n const isLimitedAdmin = hasLimitedAdminRole(roles, providerRoles);\n const isDomainUser = hasDomainUserRole(roles);\n const settings: Partial = {\n responsive: true,\n size: MbsSize.sm,\n data: {\n taskHasStarted: false,\n countRequired: formatWithSpaces(error?.error?.minItemsCountRequiredPasswordProtection || 9999)\n } as Partial\n };\n\n if (isAdmin || isLimitedAdmin) {\n settings.data = { ...settings.data, id: this.authService.domainId } as DownloadToPSTFileBaseModalData;\n\n return this.handleCatchError(settings, func);\n }\n\n if (isSingleUser || isDomainUser) {\n settings.data = { ...settings.data, id: this.authService.id } as DownloadToPSTFileBaseModalData;\n\n return this.handleCatchError(settings, func);\n }\n\n return this.errorRole$;\n }),\n catchError((err) => throwError(() => err))\n );\n }\n\n return throwError(() => error);\n }\n\n private handleCatchError(settings: ModalSettings, func: () => Observable): Observable {\n return from(this.modalService.openCustom(DownloadToPstFileComponent, settings)).pipe(\n switchMap(() => {\n settings.data = { ...settings.data, taskHasStarted: true, func };\n\n return this.modalService.openCustom(DownloadToPstFileComponent, settings);\n }),\n catchError((err) => throwError(() => err))\n );\n }\n}\n","import { HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ExportToPST, ExportToPSTEvents } from '@common/models';\nimport { ODataService, ODataServiceFactory } from '@common/odata';\nimport { ExportToPstHelper } from '@common/utils/helper/export-to-pst.helper';\nimport { Observable } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ExportToPSTService {\n private odataMethods: ODataService;\n\n constructor(odataFactory: ODataServiceFactory, private exportToPstHelper: ExportToPstHelper) {\n this.odataMethods = odataFactory.CreateService('');\n }\n\n /*\n * Use for Users page\n * @param payload\n */\n exportUserData(payload: ExportToPST): Observable {\n return this.odataMethods.CustomCollectionAction('ExportUserData', payload).pipe(\n map((res: HttpResponse) => res.body),\n catchError((err) => this.exportToPstHelper.catchErrorDownloadFile(err, () => this.exportUserData(payload)))\n );\n }\n\n /*\n * Use for Mail page\n * @param payload\n */\n exportMailMsgs(payload: ExportToPSTEvents): Observable {\n return this.odataMethods.CustomCollectionAction('ExportMailMsgs', payload).pipe(\n map((res: HttpResponse) => res.body),\n catchError((err) => this.exportToPstHelper.catchErrorDownloadFile(err, () => this.exportMailMsgs(payload)))\n );\n }\n\n /*\n * Use for Mail page\n * @param payload\n */\n exportMailFolders(payload: ExportToPSTEvents): Observable {\n return this.odataMethods.CustomCollectionAction('ExportMailFolders', payload).pipe(\n map((res: HttpResponse) => res.body),\n catchError((err) => this.exportToPstHelper.catchErrorDownloadFile(err, () => this.exportMailFolders(payload)))\n );\n }\n\n /*\n * Use for Contacts page\n * @param payload\n */\n exportContactItems(payload: ExportToPSTEvents): Observable {\n return this.odataMethods.CustomCollectionAction('ExportContactItems', payload).pipe(\n map((res: HttpResponse) => res.body),\n catchError((err) => this.exportToPstHelper.catchErrorDownloadFile(err, () => this.exportContactItems(payload)))\n );\n }\n\n /*\n * Use for Contacts page\n * @param payload\n */\n exportContactGroups(payload: ExportToPSTEvents): Observable {\n return this.odataMethods.CustomCollectionAction('ExportContactGroups', payload).pipe(\n map((res: HttpResponse) => res.body),\n catchError((err) => this.exportToPstHelper.catchErrorDownloadFile(err, () => this.exportContactGroups(payload)))\n );\n }\n\n /*\n * Use for Calendar page\n * @param payload\n */\n exportCalendarEvents(payload: ExportToPSTEvents): Observable {\n return this.odataMethods.CustomCollectionAction('ExportCalendarEvents', payload).pipe(\n map((res: HttpResponse) => res.body),\n catchError((err) => this.exportToPstHelper.catchErrorDownloadFile(err, () => this.exportCalendarEvents(payload)))\n );\n }\n\n /*\n * Use for Calendar page\n * @param payload\n */\n exportCalendarItems(payload: ExportToPSTEvents): Observable {\n return this.odataMethods.CustomCollectionAction('ExportCalendarItems', payload).pipe(\n map((res: HttpResponse) => res.body),\n catchError((err) => this.exportToPstHelper.catchErrorDownloadFile(err, () => this.exportCalendarItems(payload)))\n );\n }\n\n /*\n * Use for Calendar page\n * @param payload\n */\n exportCalendarGroups(payload: ExportToPSTEvents): Observable {\n return this.odataMethods.CustomCollectionAction('ExportCalendarGroups', payload).pipe(\n map((res: HttpResponse) => res.body),\n catchError((err) => this.exportToPstHelper.catchErrorDownloadFile(err, () => this.exportCalendarGroups(payload)))\n );\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BackupHistoryItem, hasAdminRole, HistoryPeriods, HistoryUnits, PieDataItem, ServiceType } from '@common/models';\nimport { ODataService, ODataServiceFactory } from '@common/odata';\nimport { AuthService, SharedOdataService } from '@common/services';\nimport { forkJoin, Observable } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\n\n@Injectable()\nexport class HistoryService extends SharedOdataService {\n private odataMethods: ODataService;\n\n constructor(odataFactory: ODataServiceFactory, private http: HttpClient, private authService: AuthService) {\n super(odataFactory, 'BackupUsers');\n this.odataMethods = odataFactory.CreateService('');\n }\n\n usageHistory(period: HistoryPeriods, units: HistoryUnits): Observable {\n return forkJoin([this.authService.getAuthUser(), this.authService.getRoles()]).pipe(\n switchMap(([user, roles]) => {\n const isAdmin: boolean = hasAdminRole(roles);\n const id: string = isAdmin ? user.DomainId : user.Id;\n const serviceName: string = isAdmin ? 'Domains' : 'BackupUsers';\n const newOData: ODataService = this.odataFactory.CreateService(\n `/${serviceName}(${id})/UsageHistory`\n );\n\n return newOData\n .Query()\n .CustomQueryOptions([\n { key: 'period', value: period },\n { key: 'units', value: units }\n ])\n .Exec();\n })\n );\n }\n\n userUsageHistory(id: string, period: HistoryPeriods, units: HistoryUnits): Observable {\n const newOData = this.odataFactory.CreateService(`/BackupUsers(${id})/UsageHistory`);\n return newOData\n .Query()\n .CustomQueryOptions([\n { key: 'period', value: period },\n { key: 'units', value: units }\n ])\n .Exec();\n }\n\n userUsageDetails(id: string, type: ServiceType): Observable {\n const newOData = this.odataFactory.CreateService(`/BackupUsers(${id})/UsageDetails`);\n const url = newOData\n .Query()\n .CustomQueryOptions([{ key: 'service', value: type }])\n .GetUrl();\n return this.http.get<{ Items: PieDataItem[]; Service: ServiceType }>(url).pipe(map((x) => x.Items));\n }\n\n domainUsageDetails(id: string, type: ServiceType): Observable {\n const newOData = this.odataFactory.CreateService(`/Domains(${id})/UsageDetails`);\n const url = newOData\n .Query()\n .CustomQueryOptions([{ key: 'service', value: type }])\n .GetUrl();\n return this.http.get<{ Items: PieDataItem[]; Service: ServiceType }>(url).pipe(map((x) => x.Items));\n }\n\n domainUsageHistory(id: string, period: HistoryPeriods, units: HistoryUnits): Observable {\n const newOData = this.odataFactory.CreateService(`/Domains(${id})/UsageHistory`);\n return newOData\n .Query()\n .CustomQueryOptions([\n { key: 'period', value: period },\n { key: 'units', value: units }\n ])\n .Exec();\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BOOLEAN_OPERATOR, InvoiceStateByAPI } from '@common';\nimport { InvoiceOData, PayInvoicePayload } from '@common/models';\nimport { ODataPagedResult, ODataService, ODataServiceFactory } from '@common/odata';\nimport { SharedOdataService } from '@common/services';\nimport { PaymentsTagsEnum, PaymentsTagsMap } from '@common/services/smart-search';\nimport { currencyInvert } from '@common/utils';\nimport {\n FilterOptions,\n containsWrapper,\n filterByWords,\n getFilterByContains,\n getFilterByDate,\n getFilterByEq,\n getFilterByEqFromEnum\n} from '@common/utils/functions/search';\nimport { SmartSearchModel, SmartSearchModelField } from 'mbs-ui-kit';\nimport { Observable } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class InvoicesService extends SharedOdataService {\n readonly #paymentState = PaymentsTagsMap.get(PaymentsTagsEnum.state);\n readonly #quantity = PaymentsTagsMap.get(PaymentsTagsEnum.quantity);\n readonly #price = PaymentsTagsMap.get(PaymentsTagsEnum.price);\n readonly #amount = PaymentsTagsMap.get(PaymentsTagsEnum.amount);\n readonly #date = PaymentsTagsMap.get(PaymentsTagsEnum.date);\n readonly #expireDate = PaymentsTagsMap.get(PaymentsTagsEnum.expireDate);\n readonly #invoiceId = PaymentsTagsMap.get(PaymentsTagsEnum.invoiceId);\n\n private odataMethods: ODataService;\n\n constructor(odataFactory: ODataServiceFactory, private http: HttpClient) {\n super(odataFactory, 'Invoices');\n this.odataMethods = odataFactory.CreateService('');\n }\n\n getInvoices(): Observable> {\n const odataService = this.odataFactory.CreateService('Invoices');\n\n return this.fetchData(odataService);\n }\n\n payInvoice(payload: PayInvoicePayload): Observable {\n const endpoint = '/api/PayInvoice';\n\n return this.http.post(endpoint, payload);\n }\n\n updateFilter(obj: SmartSearchModel): void {\n const filter: string[] = [];\n\n if (obj[this.#paymentState.tag]) {\n const options: FilterOptions = {\n model: obj[this.#paymentState.tag] as SmartSearchModelField[],\n prop: this.#paymentState.prop,\n enumItems: InvoiceStateByAPI\n };\n\n filter.push(getFilterByEqFromEnum(options));\n }\n\n if (obj[this.#quantity.tag]) {\n const options: FilterOptions = {\n model: obj[this.#quantity.tag] as SmartSearchModelField[],\n prop: this.#quantity.prop\n };\n\n filter.push(getFilterByEq(options, false));\n }\n\n if (obj[this.#price.tag]) {\n const price = obj[this.#price.tag][0];\n price.value = currencyInvert(price.value);\n const options: FilterOptions = {\n model: obj[this.#price.tag] as SmartSearchModelField[],\n prop: this.#price.prop\n };\n\n filter.push(getFilterByEq(options, false));\n }\n\n if (obj[this.#amount.tag]) {\n const amount = obj[this.#amount.tag][0];\n amount.value = currencyInvert(amount.value);\n const options: FilterOptions = {\n model: obj[this.#amount.tag] as SmartSearchModelField[],\n prop: this.#amount.prop\n };\n\n filter.push(getFilterByEq(options, false));\n }\n\n if (obj[this.#date.tag]) {\n const options: FilterOptions = {\n model: obj[this.#date.tag] as SmartSearchModelField[],\n prop: this.#date.prop\n };\n\n filter.push(getFilterByDate(options));\n }\n\n if (obj[this.#expireDate.tag]) {\n const options: FilterOptions = {\n model: obj[this.#expireDate.tag] as SmartSearchModelField[],\n prop: this.#expireDate.prop\n };\n\n filter.push(getFilterByDate(options));\n }\n\n if (obj[this.#invoiceId.tag]) {\n const options: FilterOptions = {\n model: obj[this.#invoiceId.tag] as SmartSearchModelField[],\n prop: this.#invoiceId.prop\n };\n\n filter.push(getFilterByContains(options));\n }\n\n if (obj.words?.filter(Boolean)) {\n const term = filterByWords(obj);\n\n filter.push(containsWrapper(this.#invoiceId.prop, term));\n }\n\n this.filter = filter.length > 0 ? filter.join(` ${BOOLEAN_OPERATOR.and} `) : '';\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BOOLEAN_OPERATOR, COMPARISON_OPERATOR, MailFolderType, SINGLE_QUOTES_REGEX } from '@common';\nimport {\n Mail,\n MailAttachment,\n MailAttachmentConfigOData,\n MailFolder,\n OdataObject,\n RestoreMailFolder,\n RestoreToAnotherUser\n} from '@common/models';\nimport { ODataPagedResult, ODataService, ODataServiceFactory } from '@common/odata';\nimport { SharedOdataService } from '@common/services';\nimport { MailTagsEnum, MailTagsMap, sizeFilterEnum } from '@common/services/smart-search';\nimport { filterByWords, getOdataTop } from '@common/utils';\nimport {\n FilterOptions,\n containsWrapper,\n getFilterByContains,\n getFilterByDateRange,\n getFilterByEq,\n getFilterBySize\n} from '@common/utils/functions/search';\nimport { IKeyValue } from 'linq-collections';\nimport { isNil } from 'lodash';\nimport { SmartSearchModel, SmartSearchModelField } from 'mbs-ui-kit';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class MailOdataService extends SharedOdataService {\n #groupId: string;\n #userId: string;\n #customOptions: IKeyValue | IKeyValue[];\n\n readonly #from = MailTagsMap.get(MailTagsEnum.from);\n readonly #to = MailTagsMap.get(MailTagsEnum.to);\n readonly #sizeMore = MailTagsMap.get(MailTagsEnum.sizeMore);\n readonly #sizeLess = MailTagsMap.get(MailTagsEnum.sizeLess);\n readonly #subject = MailTagsMap.get(MailTagsEnum.subject);\n readonly #withAttachment = MailTagsMap.get(MailTagsEnum.withAttachment);\n readonly #backupArchive = MailTagsMap.get(MailTagsEnum.backupArchive);\n readonly #dateTo = MailTagsMap.get(MailTagsEnum.dateTo);\n readonly #dateFrom = MailTagsMap.get(MailTagsEnum.dateFrom);\n\n private odataMethods: ODataService;\n private mailMessagesService: ODataService;\n\n set groupId(id: string) {\n this.#groupId = id;\n }\n\n get groupId(): string {\n return this.#groupId;\n }\n\n set userId(id: string) {\n this.#userId = id;\n }\n\n get userId(): string {\n return this.#userId;\n }\n\n constructor(odataFactory: ODataServiceFactory, private http: HttpClient) {\n super(odataFactory, 'MailFolders');\n this.odataMethods = odataFactory.CreateService('');\n this.mailMessagesService = odataFactory.CreateService('MailMessages');\n }\n\n getMailsByGroupId(): Observable> {\n const newOdata = this.odataFactory.CreateService(`/MailFolders(${this.groupId})/MailMessages`);\n\n this.#customOptions = [{ key: 'UserId', value: this.userId }];\n\n return newOdata\n .Query()\n .CustomQueryOptions(this.#customOptions)\n .OrderBy(this.orderBy)\n .Filter(this.filter)\n .Top(this.pageSize)\n .Skip(this.pageSize * (this.page - 1))\n .ExecWithCount();\n }\n\n getMailFolders(userId: string, options?: { inbox?: boolean; search?: string; skip?: number }): Observable> {\n const { inbox, search, skip } = options || {};\n const filter = inbox\n ? `Type ${COMPARISON_OPERATOR.eq} '${MailFolderType.Inbox}'`\n : `Type ${COMPARISON_OPERATOR.ne} '${MailFolderType.Inbox}'`;\n\n return this.odataFactory\n .CreateService(`/BackupUsers(${userId})/MailFolders`)\n .Query()\n .OrderBy(inbox ? null : 'Name asc')\n .Top(getOdataTop(search || inbox))\n .Skip(skip)\n .Filter(search ? containsWrapper('Name', search) : filter)\n .ExecWithCount();\n }\n\n // eslint-disable-next-line sonarjs/cognitive-complexity\n updateFilter(searchObj: SmartSearchModel): void {\n if (this.groupId == null) return;\n\n const filter: string[] = [];\n this.#customOptions = null;\n\n if (searchObj[this.#from.tag]) {\n const options: FilterOptions = {\n model: searchObj[this.#from.tag] as SmartSearchModelField[],\n prop: this.#from.prop\n };\n\n filter.push(getFilterByContains(options));\n }\n\n if (searchObj[this.#to.tag]) {\n const options: FilterOptions = {\n model: searchObj[this.#to.tag] as SmartSearchModelField[],\n prop: this.#to.prop\n };\n\n filter.push(getFilterByContains(options));\n }\n\n if (searchObj[this.#subject.tag]) {\n const options: FilterOptions = {\n model: searchObj[this.#subject.tag] as SmartSearchModelField[],\n prop: this.#subject.prop\n };\n\n filter.push(getFilterByContains(options));\n }\n\n if (searchObj[this.#withAttachment.tag]) {\n const options: FilterOptions = {\n model: searchObj[this.#withAttachment.tag] as SmartSearchModelField[],\n prop: this.#withAttachment.prop\n };\n\n filter.push(getFilterByEq(options, false));\n }\n\n if (searchObj[this.#backupArchive.tag]) {\n const options: FilterOptions = {\n model: searchObj[this.#backupArchive.tag] as SmartSearchModelField[],\n prop: this.#backupArchive.prop\n };\n\n filter.push(getFilterByEq(options, false));\n }\n\n if (searchObj[this.#sizeMore.tag]) {\n const options: FilterOptions & { filter: sizeFilterEnum } = {\n model: searchObj[this.#sizeMore.tag] as SmartSearchModelField[],\n prop: this.#sizeMore.prop,\n filter: sizeFilterEnum.more\n };\n\n filter.push(getFilterBySize(options));\n }\n\n if (searchObj[this.#sizeLess.tag]) {\n const options: FilterOptions & { filter: sizeFilterEnum } = {\n model: searchObj[this.#sizeLess.tag] as SmartSearchModelField[],\n prop: this.#sizeLess.prop,\n filter: sizeFilterEnum.less\n };\n\n filter.push(getFilterBySize(options));\n }\n\n if (searchObj[this.#dateFrom.tag]) {\n const options: FilterOptions = {\n model: searchObj[this.#dateFrom.tag] as SmartSearchModelField[],\n prop: this.#dateFrom.prop\n };\n const value = getFilterByDateRange(options, 'from');\n\n value && filter.push(value);\n }\n\n if (searchObj[this.#dateTo.tag]) {\n const options: FilterOptions = {\n model: searchObj[this.#dateTo.tag] as SmartSearchModelField[],\n prop: this.#dateTo.prop\n };\n const value = getFilterByDateRange(options, 'to');\n\n value && filter.push(value);\n }\n\n if (searchObj.words?.filter(Boolean)) {\n const term = filterByWords(searchObj).replace(SINGLE_QUOTES_REGEX, '');\n const keys = [this.#subject.prop, this.#from.prop, this.#to.prop];\n const values = keys.map((k) => `(${containsWrapper(k, term)})`);\n\n filter.push('('.concat(values.join(` ${BOOLEAN_OPERATOR.or} `), ')'));\n }\n\n this.filter = filter.length > 0 ? filter.join(` ${BOOLEAN_OPERATOR.and} `) : '';\n }\n\n getMailBodyUrl(id: string): Observable {\n const url = this.mailMessagesService.Get(id).GetUrl() + '/MsgBody';\n\n return this.http.get(url, { responseType: 'blob' }).pipe(\n map((response) => {\n // change blob content type\n response = response.slice(0, response.size, 'text/html');\n return URL.createObjectURL(response);\n })\n );\n }\n\n getMailAttachment(mailId: string): Observable {\n return this.mailMessagesService.ItemProperty>(mailId, 'GetAttachments').pipe(\n map((result) => result.value),\n map((result) => result.map((a) => new MailAttachment(a.Name, a.MsgId, isNil(a.Num) ? null : `?num=${a.Num}`)))\n );\n }\n\n restoreAllMailbox(userId: string, restoreTo: RestoreToAnotherUser = null): Observable {\n return this.odataMethods.CustomCollectionAction('RestoreWholeMail', { UserId: userId, AnotherUser: restoreTo });\n }\n\n restoreFolder(options: { folderId: string; restoreTo?: RestoreToAnotherUser; subFolders?: boolean }): Observable {\n const { folderId, restoreTo, subFolders } = options || {};\n const postData: RestoreMailFolder = {\n FolderId: folderId,\n AnotherUser: restoreTo || null\n };\n\n if (!isNil(subFolders)) {\n postData.IncludeSubfolders = subFolders;\n }\n\n return this.odataMethods.CustomCollectionAction('RestoreMailFolder', postData);\n }\n\n restoreMessages(messageIds: string[], restoreTo: RestoreToAnotherUser = null): Observable {\n return this.odataMethods.CustomCollectionAction('RestoreMailMsgs', { MsgsIds: messageIds, AnotherUser: restoreTo });\n }\n\n /*\n * Get top 20 emails in 'From' section that match `containsValue`\n * @param {string} containsValue search string\n */\n getEmailsInFromSection(containsValue: string): Observable {\n return this.searchItems(MailTagsEnum.from, containsValue);\n }\n\n /*\n * Get top 20 emails in 'To' section that match `containsValue`\n * @param {string} containsValue search string\n */\n getEmailsInToSection(containsValue: string): Observable {\n return this.searchItems(MailTagsEnum.to, containsValue);\n }\n\n /*\n * Get top 20 subjects that match `containsValue`\n * @param {string} containsValue search string\n */\n getListOfSubjects(containsValue: string): Observable {\n return this.searchItems(MailTagsEnum.subject, containsValue);\n }\n\n private searchItems(searchFields: MailTagsEnum.from | MailTagsEnum.to | MailTagsEnum.subject, containsValue: string): Observable {\n this.#customOptions = [{ key: 'UserId', value: this.userId }];\n\n return this.odataFactory\n .CreateService(`/MailFolders(${this.groupId})/MailMessages`)\n .Query()\n .CustomQueryOptions(this.#customOptions)\n .Top(100)\n .Select(searchFields)\n .Filter(containsWrapper(searchFields, containsValue))\n .Exec();\n }\n\n deleteFolder(folderId: string, password: string): Observable {\n const options = {\n FolderId: folderId,\n Password: password\n };\n\n return this.odataMethods.CustomCollectionAction('DeleteMailFolder', options);\n }\n\n deleteMessages(messageIds: string[], password: string): Observable {\n const options = {\n MsgsIds: messageIds,\n Password: password\n };\n\n return this.odataMethods.CustomCollectionAction('DeleteMailMsgs', options);\n }\n}\n","import { HttpClient, HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport {\n AuthUser,\n BackupDestination,\n ExportSettings,\n MyAccountContactInfo,\n MyAccountPhone,\n OdataObject,\n Role,\n StorageStateEnum,\n hasAdminRole,\n hasDomainAdminRole,\n hasDomainUserRole,\n hasSingleUserRole\n} from '@common/models';\nimport { ODataService, ODataServiceFactory } from '@common/odata';\nimport { AuthService } from '@common/services';\nimport { isNil } from 'lodash';\nimport { Observable, forkJoin, of, throwError } from 'rxjs';\nimport { filter, map, switchMap } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MyAccountService {\n private errorRole$: Observable = throwError(() => 'Forbidden role');\n private user$: Observable;\n private roles$: Observable;\n private authData: Observable<[user: AuthUser, roles: Role[]]>;\n private odataDomains: ODataService;\n private odataSingleUsers: ODataService;\n private odataExportSettings: ODataService;\n\n constructor(private odataFactory: ODataServiceFactory, private http: HttpClient, private authService: AuthService) {\n this.odataDomains = odataFactory.CreateService('Domains');\n this.odataSingleUsers = odataFactory.CreateService('SingleUsers');\n this.odataExportSettings = odataFactory.CreateService('ExportSettings');\n this.user$ = authService.getAuthUser();\n this.roles$ = authService.getRoles();\n this.authData = forkJoin([this.user$, this.roles$]).pipe(filter(([user, roles]) => !isNil(user) || !isNil(roles)));\n }\n\n getContactInfo(): Observable {\n return this.authService.getAuthUser().pipe(\n switchMap((user) => {\n const odataService = this.odataFactory.CreateService(`/BackupUsers(${user.Id})/GetContactInfo`);\n return this.http.get(odataService.Query().GetUrl());\n })\n );\n }\n\n setContactInfo(payload: MyAccountPhone): Observable {\n return this.authService.getAuthUser().pipe(\n switchMap((user) => {\n const odataService = this.odataFactory.CreateService(`/BackupUsers(${user.Id})/SetContactInfo`);\n return this.http.post(odataService.Query().GetUrl(), payload);\n })\n );\n }\n\n deleteAccount(): Observable {\n return this.authData.pipe(\n switchMap(([user, roles]) => {\n const isDomainAdmin = hasDomainAdminRole(roles);\n const isSingleUser = hasSingleUserRole(roles);\n if (isDomainAdmin) {\n return this.deleteAccountDomainAdmin(user.DomainId);\n }\n if (isSingleUser) {\n return this.deleteAccountSingleUser(user.Id);\n }\n return this.errorRole$;\n })\n );\n }\n\n private deleteAccountDomainAdmin(id: string): Observable {\n const odataService = this.odataFactory.CreateService(`/Domains(${id})/DeleteAccount`);\n return odataService.Post(null).Exec();\n }\n\n private deleteAccountSingleUser(id: string): Observable {\n const odataService = this.odataFactory.CreateService(`/SingleUsers(${id})/DeleteAccount`);\n return odataService.Post(null).Exec();\n }\n\n getStorage(): Observable {\n return this.authData.pipe(\n switchMap(([user, roles]) => {\n const isAdmin = hasAdminRole(roles);\n const isSingleUser = hasSingleUserRole(roles);\n if (isAdmin) {\n return this.getStorageAdmin(user.DomainId);\n }\n if (isSingleUser) {\n return this.getStorageSingleUser(user.Id);\n }\n return this.errorRole$;\n })\n );\n }\n\n private getStorageAdmin(id: string): Observable {\n return this.odataDomains.CustomFunction(id, 'GetStorage').pipe(map((res: HttpResponse) => res.body));\n }\n\n private getStorageSingleUser(id: string): Observable {\n return this.odataSingleUsers.CustomFunction(id, 'GetStorage').pipe(map((res: HttpResponse) => res.body));\n }\n\n setStorage(payload: BackupDestination): Observable {\n return this.authData.pipe(\n switchMap(([user, roles]) => {\n const isAdmin = hasAdminRole(roles);\n const isSingleUser = hasSingleUserRole(roles);\n if (isAdmin) {\n return this.setStorageAdmin(user.DomainId, payload);\n }\n if (isSingleUser) {\n return this.setStorageSingleUser(user.Id, payload);\n }\n return this.errorRole$;\n })\n );\n }\n\n private setStorageAdmin(id: string, payload: BackupDestination): Observable {\n return this.odataDomains.CustomAction(id, 'SetStorage', payload).pipe(map((res: HttpResponse) => res.body));\n }\n\n private setStorageSingleUser(id: string, payload: BackupDestination): Observable {\n return this.odataSingleUsers.CustomAction(id, 'SetStorage', payload).pipe(map((res: HttpResponse) => res.body));\n }\n\n testStorage(payload: BackupDestination): Observable> {\n return this.authData.pipe(\n switchMap(([user, roles]) => {\n const isAdmin = hasAdminRole(roles);\n const isSingleUser = hasSingleUserRole(roles);\n if (isAdmin) {\n return this.testStorageAdmin(user.DomainId, payload);\n }\n if (isSingleUser) {\n return this.testStorageSingleUser(user.Id, payload);\n }\n\n return null;\n })\n );\n }\n\n private testStorageAdmin(id: string, payload: BackupDestination): Observable> {\n return this.odataDomains\n .CustomAction(id, 'TestStorage', payload)\n .pipe(map((res: HttpResponse>) => res.body));\n }\n\n private testStorageSingleUser(id: string, payload: BackupDestination): Observable> {\n return this.odataSingleUsers\n .CustomAction(id, 'TestStorage', payload)\n .pipe(map((res: HttpResponse>) => res.body));\n }\n\n deleteStorage(): Observable {\n return this.authData.pipe(\n switchMap(([user, roles]) => {\n const isAdmin = hasAdminRole(roles);\n const isSingleUser = hasSingleUserRole(roles);\n\n if (isAdmin) {\n return this.deleteStorageAdmin(user.DomainId);\n }\n\n if (isSingleUser) {\n return this.deleteStorageSingleUser(user.Id);\n }\n\n return this.errorRole$;\n })\n );\n }\n\n private deleteStorageAdmin(id: string): Observable {\n return this.odataDomains.CustomAction(id, 'DeleteStorage', null);\n }\n\n private deleteStorageSingleUser(id: string): Observable {\n return this.odataSingleUsers.CustomAction(id, 'DeleteStorage', null);\n }\n\n resetAlternatePassword(payload: { Email: string }): Observable {\n return this.authService.getAuthUser().pipe(\n switchMap((user) => {\n const odataService = this.odataFactory.CreateService(`/BackupUsers(${user.Id})/ResetAlternatePassword`);\n return this.http.post(odataService.Query().GetUrl(), payload);\n })\n );\n }\n\n getExportSettings(): Observable {\n return this.authData.pipe(\n switchMap(([user, roles]) => {\n const isAdmin = hasAdminRole(roles);\n const isDomainUser = hasDomainUserRole(roles);\n const isSingleUser = hasSingleUserRole(roles);\n\n if (isAdmin || isDomainUser) {\n return this.getExportSettingsCommon(user.DomainId);\n }\n\n if (isSingleUser) {\n return this.getExportSettingsCommon(user.Id);\n }\n\n return of(null) as Observable;\n })\n );\n }\n\n private getExportSettingsCommon(id: string): Observable {\n return this.odataExportSettings.Get(id).Exec();\n }\n\n setExportSettings(payload: ExportSettings): Observable {\n return this.authData.pipe(\n switchMap(([user, roles]) => {\n const isAdmin = hasAdminRole(roles);\n const isSingleUser = hasSingleUserRole(roles);\n\n if (isAdmin) {\n return this.setExportSettingsCommon(user.DomainId, payload);\n }\n\n if (isSingleUser) {\n return this.setExportSettingsCommon(user.Id, payload);\n }\n\n return this.errorRole$;\n })\n );\n }\n\n private setExportSettingsCommon(id: string, payload: ExportSettings): Observable {\n return this.odataExportSettings.Put(payload, id).Exec();\n }\n}\n","import { map } from './map';\nexport function pluck(...properties) {\n const length = properties.length;\n if (length === 0) {\n throw new Error('list of properties cannot be empty.');\n }\n return map((x) => {\n let currentProp = x;\n for (let i = 0; i < length; i++) {\n const p = currentProp === null || currentProp === void 0 ? void 0 : currentProp[properties[i]];\n if (typeof p !== 'undefined') {\n currentProp = p;\n }\n else {\n return undefined;\n }\n }\n return currentProp;\n });\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BOOLEAN_OPERATOR, COMPARISON_OPERATOR, FilterActionType, SINGLE_QUOTES_REGEX } from '@common';\nimport {\n AuthUser,\n BackupReport,\n ExportToCSVParams,\n ReportSendingOptions,\n Role,\n UserReport,\n UserReportsSummaryOData,\n hasAdminRole,\n hasSingleUserRole\n} from '@common/models';\nimport { ODataPagedResult, ODataService, ODataServiceFactory } from '@common/odata';\nimport { AuthService, SharedOdataService } from '@common/services';\nimport { ReportsUserTagsEnum, ReportsUserTagsMap } from '@common/services/smart-search';\nimport { filterByWords } from '@common/utils';\nimport { FilterOptions, containsWrapper, getFilterByContains, getFilterByDate } from '@common/utils/functions/search';\nimport { cloneDeep, isNil } from 'lodash';\nimport { SmartSearchModel, SmartSearchModelField } from 'mbs-ui-kit';\nimport { Observable, forkJoin, of } from 'rxjs';\nimport { filter, map, pluck, shareReplay, switchMap } from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class ReportsService extends SharedOdataService {\n private readonly me$: Observable<[user: AuthUser, roles: Role[]]>;\n private readonly user$: Observable;\n private readonly roles$: Observable;\n private readonly odataMethods: ODataService;\n\n readonly #userName = ReportsUserTagsMap.get(ReportsUserTagsEnum.userName);\n readonly #license = ReportsUserTagsMap.get(ReportsUserTagsEnum.license);\n readonly #userState = ReportsUserTagsMap.get(ReportsUserTagsEnum.userState);\n\n constructor(odataFactory: ODataServiceFactory, private http: HttpClient, private authService: AuthService) {\n super(odataFactory, 'Reports');\n this.odataMethods = odataFactory.CreateService('');\n this.user$ = authService.getAuthUser();\n this.roles$ = authService.getRoles();\n this.me$ = forkJoin([this.user$, this.roles$]).pipe(\n filter(([user, roles]) => !isNil(user) && !isNil(roles)),\n shareReplay(1)\n );\n }\n\n backupReports(): Observable {\n return this.me$.pipe(\n switchMap(([user, roles]) => (hasAdminRole(roles) ? this.domainBackupReport(user.DomainId) : this.userBackupReport(user.Id)))\n );\n }\n\n private domainBackupReport(id: string): Observable {\n const odataService = this.odataFactory.CreateService(`/Domains(${id})/BackupReport`);\n\n return this.http.get(odataService.Query().GetUrl());\n }\n\n private userBackupReport(id: string): Observable {\n const odataService = this.odataFactory.CreateService(`/SingleUsers(${id})/BackupReport`);\n\n return this.http.get(odataService.Query().GetUrl());\n }\n\n userReports(): Observable> {\n return this.me$.pipe(\n switchMap(([user, roles]) => {\n const id = hasAdminRole(roles) ? user.DomainId : user.Id;\n\n return hasAdminRole(roles) ? this.domainUserReport(id) : this.singleUserReport(id);\n }),\n switchMap((oDataUserReports: ODataPagedResult) => {\n const payload = {\n UserIds: oDataUserReports.data.map((user) => user.UserId)\n };\n\n return forkJoin([this.userReportLicences(payload), of(oDataUserReports)]);\n }),\n map(([licenses, oDataUserReports]) => {\n const clone = cloneDeep(oDataUserReports);\n\n clone.data = clone.data.map((item) => {\n const license = licenses.find((l) => l.UserId === item.UserId);\n\n return { ...item, ...license };\n });\n\n return clone;\n })\n );\n }\n\n private domainUserReport(id: string): Observable> {\n const odataService = this.odataFactory.CreateService(`/Domains(${id})/UserReports`);\n\n return this.fetchData(odataService);\n }\n\n private singleUserReport(id: string): Observable> {\n const odataService = this.odataFactory.CreateService(`/SingleUsers(${id})/UserReports`);\n\n return this.fetchData(odataService);\n }\n\n getReportSendingOptions(): Observable {\n return this.me$.pipe(switchMap(([user, roles]) => this.reportSendingOptions(hasAdminRole(roles) ? user.DomainId : user.Id)));\n }\n\n setReportSendingOptions(payload: ReportSendingOptions): Observable {\n return this.me$.pipe(switchMap(([user, roles]) => this.reportSendingOptions(hasAdminRole(roles) ? user.DomainId : user.Id, payload)));\n }\n\n private reportSendingOptions(id: string, payload?: ReportSendingOptions): Observable {\n const odataService = this.odataFactory.CreateService(`/ReportSendingOptions(${id})`);\n\n if (payload) {\n payload.Id = id;\n\n return this.http.put(odataService.Query().GetUrl(), payload);\n } else {\n return this.http.get(odataService.Query().GetUrl());\n }\n }\n\n getUserReportsSummary(): Observable {\n return this.me$.pipe(\n switchMap(([user, roles]) => (hasAdminRole(roles) ? this.domainSummary(user.DomainId) : this.singleUserSummary(user.Id)))\n );\n }\n\n private domainSummary(id: string): Observable {\n const odataService = this.odataFactory.CreateService(`/Domains(${id})/UserReportsSummary`);\n\n return this.http.get(odataService.Query().GetUrl());\n }\n\n private singleUserSummary(id: string): Observable {\n const odataService = this.odataFactory.CreateService(`/SingleUsers(${id})/UserReportsSummary`);\n\n return this.http.get(odataService.Query().GetUrl());\n }\n\n exportToCSV(report: 'backup' | 'user', params: ExportToCSVParams): Observable {\n return this.me$.pipe(\n switchMap(([user, roles]) => {\n const defaultOptions = { report, params };\n\n return hasAdminRole(roles)\n ? this.domainExportToCSV(Object.assign(defaultOptions, { id: user.DomainId }))\n : this.singleUserExportToCSV(Object.assign(defaultOptions, { id: user.Id }));\n })\n );\n }\n\n private domainExportToCSV(options: { id: string; report: 'backup' | 'user'; params: ExportToCSVParams }): Observable {\n const { id, report, params } = options;\n const paramsString = Object.entries(params)\n .map((key) => key.join('='))\n .join('&');\n let odataService: ODataService;\n\n if (report === 'backup') {\n odataService = this.odataFactory.CreateService(`/Domains(${id})/DownloadBackupReport?${paramsString}`);\n }\n\n if (report === 'user') {\n odataService = this.odataFactory.CreateService(`/Domains(${id})/DownloadUserReports?${paramsString}`);\n }\n\n return this.http.get(odataService.Query().GetUrl(), { responseType: 'blob' });\n }\n\n private singleUserExportToCSV(options: { id: string; report: 'backup' | 'user'; params: ExportToCSVParams }): Observable {\n const { id, report, params } = options;\n const paramsString = Object.entries(params)\n .map((key) => key.join('='))\n .join('&');\n let odataService: ODataService;\n\n if (report === 'backup') {\n odataService = this.odataFactory.CreateService(`/SingleUsers(${id})/DownloadBackupReport?${paramsString}`);\n }\n\n if (report === 'user') {\n odataService = this.odataFactory.CreateService(`/SingleUsers(${id})/DownloadUserReports?${paramsString}`);\n }\n\n return this.http.get(odataService.Query().GetUrl(), { responseType: 'blob' });\n }\n\n updateFilter(searchObj: SmartSearchModel): void {\n const filter: string[] = [];\n const isResetButtonClick = Object.keys(searchObj).length === 0;\n\n if (searchObj[this.#userName.tag]) {\n const options: FilterOptions = {\n model: searchObj[this.#userName.tag] as SmartSearchModelField[],\n prop: this.#userName.prop\n };\n\n filter.push(getFilterByContains(options));\n }\n\n if (searchObj[this.#license.tag]) {\n const options: FilterOptions = {\n model: searchObj[this.#license.tag] as SmartSearchModelField[],\n prop: this.#license.prop\n };\n\n filter.push(getFilterByDate(options));\n }\n\n if (searchObj[this.#userState.tag]) {\n const userState = searchObj[this.#userState.tag][0];\n\n switch (userState.value) {\n case FilterActionType.containsIssue:\n filter.push(`${this.#userState.prop} ${COMPARISON_OPERATOR.eq} true`);\n filter.push(`ContainsIssue ${COMPARISON_OPERATOR.eq} true`);\n break;\n case FilterActionType.enabledUsers:\n filter.push(`${this.#userState.prop} ${COMPARISON_OPERATOR.eq} true`);\n break;\n case FilterActionType.disabledUsers:\n filter.push(`${this.#userState.prop} ${COMPARISON_OPERATOR.eq} false`);\n break;\n }\n }\n\n if (searchObj.words?.filter(Boolean)) {\n const term = filterByWords(searchObj).replace(SINGLE_QUOTES_REGEX, '');\n\n filter.push(containsWrapper(this.#userName.prop, term));\n }\n\n if (isResetButtonClick) {\n filter.push(`${this.#userState.prop} ${COMPARISON_OPERATOR.eq} true`);\n }\n\n this.filter = filter.length > 0 ? filter.join(` ${BOOLEAN_OPERATOR.and} `) : '';\n }\n\n userReportLicences(payload: { UserIds: string[] }): Observable {\n return this.me$.pipe(\n switchMap(([user, roles]) =>\n hasSingleUserRole(roles) ? this.singleUserReportLicences(user.Id, payload) : this.domainReportLicences(user.DomainId, payload)\n )\n );\n }\n\n private domainReportLicences(domainId: string, payload: { UserIds: string[] }): Observable {\n const odataService = this.odataFactory.CreateService(`/Domains(${domainId})/UserLicenses`);\n\n return this.http.post(odataService.Query().GetUrl(), payload).pipe(pluck('value')) as Observable;\n }\n\n private singleUserReportLicences(userId: string, payload: { UserIds: string[] }): Observable {\n const odataService = this.odataFactory.CreateService(`/SingleUsers(${userId})/UserLicenses`);\n\n return this.http.post(odataService.Query().GetUrl(), payload).pipe(pluck('value')) as Observable;\n }\n}\n\ninterface UserReportLicence {\n ExpireDate: string;\n IsLicense: boolean;\n IsTrial: boolean;\n UserId: string;\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BOOLEAN_OPERATOR, SINGLE_QUOTES_REGEX } from '@common';\nimport { AttachedPolicies, DefaultParams, DisplayNameItemType, RetentionPolicyOdata, ServiceTypeByAPIEnum } from '@common/models';\nimport { ODataPagedResult, ODataServiceFactory } from '@common/odata';\nimport { SharedOdataService } from '@common/services';\nimport { RetentionPolicyTagsEnum, RetentionPolicyTagsMap } from '@common/services/smart-search';\nimport { filterByWords, getLoadingState, hasActionsQueue } from '@common/utils';\nimport { FilterOptions, containsWrapper, getFilterByContains, getFilterByEqFromEnum } from '@common/utils/functions/search';\nimport { extendedPolicies } from '@common/utils/helper/attached-policies';\nimport { I18NextPipe } from 'angular-i18next';\nimport { SmartSearchModel, SmartSearchModelField } from 'mbs-ui-kit';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { finalize, map } from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class RetentionPolicyService extends SharedOdataService {\n private baseUrl: string;\n\n public requestPending$: Observable;\n public loading$ = new BehaviorSubject(false);\n\n private readonly tagName = RetentionPolicyTagsMap.get(RetentionPolicyTagsEnum.policyName);\n private readonly tagType = RetentionPolicyTagsMap.get(RetentionPolicyTagsEnum.serviceType);\n private readonly tagLegalHold = RetentionPolicyTagsMap.get(RetentionPolicyTagsEnum.legalHold);\n\n private legalHoldType: Partial = {\n true: {\n displayName: this.i18nPipe.transform('common.yes', { format: 'title' })\n },\n false: {\n displayName: this.i18nPipe.transform('common.no', { format: 'title' })\n }\n };\n\n constructor(odataFactory: ODataServiceFactory, private http: HttpClient, private i18nPipe: I18NextPipe) {\n super(odataFactory, 'RetentionPolicy');\n this.baseUrl = `${odataFactory.CreateService('').Query().GetUrl()}/`;\n this.requestPending$ = getLoadingState([this.loading$.pipe(hasActionsQueue())]);\n }\n\n getPolicies(): Observable> {\n const odataService = this.odataFactory.CreateService(`/RetentionPolicy`);\n\n return this.fetchData(odataService);\n }\n\n getAttachedPolicies(userIds: string[] = []): Observable {\n return this.http\n .get(`${this.baseUrl}GetAttachedPolicies?userIds=${userIds.join(',')}`)\n .pipe(map((policies) => extendedPolicies(policies)));\n }\n\n createPolicy(policy: RetentionPolicyOdata): Observable {\n this.loading$.next(true);\n return this.odata\n .Post(policy)\n .Exec()\n .pipe(finalize(() => this.loading$.next(false)));\n }\n\n updatePolicy(policy: RetentionPolicyOdata): Observable {\n this.loading$.next(true);\n return this.odata\n .Put(policy, policy.Id)\n .Exec()\n .pipe(finalize(() => this.loading$.next(false)));\n }\n\n deletePolicy(id: string): Observable {\n this.loading$.next(true);\n return this.odata\n .Delete(id)\n .Exec()\n .pipe(finalize(() => this.loading$.next(false)));\n }\n\n setDefaultPolicy(policies: DefaultParams): Observable {\n this.loading$.next(true);\n return this.http\n .post(this.odataFactory.CreateService(`/RetentionPolicy/SetDefault`).Query().GetUrl(), policies)\n .pipe(finalize(() => this.loading$.next(false)));\n }\n\n updateFilter(searchObj: SmartSearchModel): void {\n const filter: string[] = [];\n\n if (searchObj?.[this.tagName.tag]) {\n const options: FilterOptions = {\n model: searchObj[this.tagName.tag] as SmartSearchModelField[],\n prop: this.tagName.prop\n };\n\n filter.push(getFilterByContains(options));\n }\n\n if (searchObj?.[this.tagType.tag]) {\n const options: FilterOptions = {\n model: searchObj[this.tagType.tag] as SmartSearchModelField[],\n prop: this.tagType.prop,\n enumItems: ServiceTypeByAPIEnum\n };\n\n filter.push(getFilterByEqFromEnum(options));\n }\n\n if (searchObj?.[this.tagLegalHold.tag]) {\n const options: FilterOptions = {\n model: searchObj[this.tagLegalHold.tag] as SmartSearchModelField[],\n prop: this.tagLegalHold.prop,\n enumItems: this.legalHoldType\n };\n\n filter.push(getFilterByEqFromEnum(options, false));\n }\n\n if (searchObj.words?.filter(Boolean)) {\n const term = filterByWords(searchObj).replace(SINGLE_QUOTES_REGEX, '');\n const keys = [this.tagName.prop];\n const values = keys.map((k) => containsWrapper(k, term));\n\n filter.push('('.concat(values.join(` ${BOOLEAN_OPERATOR.or} `), ')'));\n }\n\n this.filter = filter.length > 0 ? filter.join(` ${BOOLEAN_OPERATOR.and} `) : '';\n }\n}\n","import { HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BOOLEAN_OPERATOR, SINGLE_QUOTES_REGEX } from '@common';\nimport {\n PageDriveItemsPayload,\n PageSiteItemsPayload,\n RestoreSiteItemsPayload,\n SearchODataOptions,\n SearchType,\n SetupSitesBackupPayload,\n Site,\n SiteItemDetails,\n SiteItemODataModel\n} from '@common/models';\nimport { ODataPagedResult, ODataService, ODataServiceFactory } from '@common/odata';\nimport { SharedOdataService } from '@common/services';\nimport { SharePointTagsEnum, SharePointTagsMap } from '@common/services/smart-search/sharePoint';\nimport { filterByWords, getDefaultPaginationOptions } from '@common/utils';\nimport { containsWrapper } from '@common/utils/functions/search';\nimport { SmartSearchHelper } from '@common/utils/helper/smart-search.helper';\nimport { isArray } from 'lodash';\nimport { PaginationOptions, SmartSearchModel } from 'mbs-ui-kit';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class SiteItemsODataService extends SharedOdataService {\n private odataMethods: ODataService;\n private odataSiteLists: ODataService;\n private odataSiteListsItems: ODataService;\n private odataSiteDriveItems: ODataService;\n private odataSite: ODataService;\n\n public readonly defaultPaginationOptions: PaginationOptions;\n\n readonly #siteName = SharePointTagsMap.get(SharePointTagsEnum.SiteName);\n readonly #fileName = SharePointTagsMap.get(SharePointTagsEnum.FileName);\n readonly #mixinName = SharePointTagsMap.get(SharePointTagsEnum.Mixin);\n\n constructor(odataFactory: ODataServiceFactory) {\n super(odataFactory, 'SiteItems');\n this.odataMethods = odataFactory.CreateService('');\n this.odataSiteLists = odataFactory.CreateService('SiteLists');\n this.odataSiteListsItems = odataFactory.CreateService('SiteListItems');\n this.odataSite = odataFactory.CreateService('Sites');\n this.odataSiteDriveItems = odataFactory.CreateService('SiteDriveItems');\n this.defaultPaginationOptions = getDefaultPaginationOptions();\n }\n\n getSiteItems({ top = 50, skip = 0, orderBy = 'BackupOn desc, Name asc', filter = null } = {}): Observable<\n ODataPagedResult\n > {\n return this.odataFactory\n .CreateService('SiteItems')\n .Query()\n .Top(top)\n .Skip(skip)\n .OrderBy(orderBy)\n .Filter(filter)\n .ExecWithCount();\n }\n\n siteItems(options?: SearchODataOptions): Observable> {\n const { filter, orderBy, page, pageSize } = options || {};\n\n return this.odataFactory\n .CreateService('SiteItems/GetActiveSiteItems')\n .Query()\n .Top(pageSize || this.pageSize)\n .Skip((pageSize || this.pageSize) * ((page || this.page) - 1))\n .OrderBy(this.orderByForSearch(orderBy) || 'BackupOn desc, Name asc') // must be `orderByGlobal`\n .Filter(filter || this.filter)\n .ExecWithCount();\n }\n\n listsOfSiteItems(blockId: string, id?: string): Observable> {\n const newOdata = this.odataFactory.CreateService(`/SiteItems(${blockId})/Lists`);\n\n return newOdata\n .Query()\n .Top(this.pageSize)\n .Skip(this.pageSize * (this.page - 1))\n .OrderBy(this.orderBy) // must be `orderByGlobal`\n .CustomQueryOptions([{ key: 'Id', value: id }])\n .ExecWithCount();\n }\n\n driveItemsOfSiteLists(blockId: string, id: string): Observable> {\n const newOdata = this.odataFactory.CreateService(`/SiteLists(${blockId})/DriveItems`);\n\n return (\n newOdata\n .Query()\n .Top(this.pageSize)\n .Skip(this.pageSize * (this.page - 1))\n .OrderBy(this.orderBy) // must be `orderByForDriveItems`\n // .Filter(this.prepareFilter(searchTerm))\n .CustomQueryOptions([{ key: 'Id', value: id }])\n .ExecWithCount()\n );\n }\n\n getPageOfSiteItems(payload: PageSiteItemsPayload): Observable {\n const newOdata = this.odataFactory.CreateService(`/SiteItems/GetPage`);\n\n return newOdata\n .Query()\n .Top(this.pageSize)\n .OrderBy(this.orderBy) // must be `orderByForDriveItems`\n .CustomQueryOptions([{ key: 'siteId', value: payload.siteId }])\n .Exec() as unknown as Observable;\n }\n\n getPageDriveItemsOfSiteLists(payload: PageDriveItemsPayload): Observable {\n const newOdata = this.odataFactory.CreateService(`/SiteDriveItems/GetPage`);\n\n return newOdata\n .Query()\n .Top(this.pageSize)\n .OrderBy(this.orderBy) // must be `orderByForDriveItems`\n .CustomQueryOptions([\n { key: 'siteBlockId', value: payload.siteBlockId },\n { key: 'parentId', value: payload.parentId },\n { key: 'driveItemId', value: payload.driveItemId }\n ])\n .Exec() as unknown as Observable;\n }\n\n listItemsOfSiteLists(blockId: string, id: string): Observable> {\n const newOdata = this.odataFactory.CreateService(`/SiteLists(${blockId})/ListItems`);\n\n return (\n newOdata\n .Query()\n .Top(this.pageSize)\n .Skip(this.pageSize * (this.page - 1))\n .OrderBy(null) // must be `orderByGlobal`\n // .Filter(this.prepareFilter(searchTerm))\n .CustomQueryOptions([{ key: 'Id', value: id }])\n .ExecWithCount()\n );\n }\n\n findDriveItemsOfSiteList(options?: SearchODataOptions): Observable> {\n const { filter, orderBy, page, pageSize } = options || {};\n\n return this.odataSiteDriveItems\n .Query()\n .Top(pageSize || this.pageSize)\n .Skip((pageSize || this.pageSize) * ((page || this.page) - 1))\n .OrderBy(this.orderByForSearch(orderBy)) // this.searchTerm ? this.orderByForDriveItems : this.orderByGlobal\n .Filter(filter || this.filter)\n .ExecWithCount();\n }\n\n siteItemDetails(id: string): Observable {\n return this.odata.CustomFunction(id, 'GetDetails').pipe(map((res: HttpResponse) => res.body));\n }\n\n siteListsDetails(id: string): Observable {\n return this.odataSiteLists.CustomFunction(id, 'GetDetails').pipe(map((res: HttpResponse) => res.body));\n }\n\n siteDriveItemsDetails(id: string): Observable {\n return this.odataSiteDriveItems.CustomFunction(id, 'GetDetails').pipe(map((res: HttpResponse) => res.body));\n }\n\n siteListsItemsDetails(id: string): Observable {\n return this.odataSiteListsItems.CustomFunction(id, 'GetDetails').pipe(map((res: HttpResponse) => res.body));\n }\n\n setAllSitesBackup(value: boolean): Observable {\n return this.odataMethods\n .CustomCollectionAction('SetupAllSitesBackup', { addAllToBackup: value })\n .pipe(map((res: HttpResponse<{ body: any }>) => res.body));\n }\n\n getAutoAddSiteToBackupStatus(domainId: string): Observable {\n return this.odataSite.Get(domainId).Exec();\n }\n\n setAutoAddSiteToBackup(id: string, value: boolean): Observable<{ AutoAddSiteToBackup: boolean }> {\n return this.odataSite.Put({ AutoAddSiteToBackup: value }, id).Exec();\n }\n\n setupSitesBackup(payload: SetupSitesBackupPayload): Observable {\n return this.odataMethods.CustomCollectionAction(`SetupSitesBackup`, payload);\n }\n\n restoreSiteItems(data: RestoreSiteItemsPayload): Observable {\n return this.odataMethods.CustomCollectionAction('RestoreSiteItems', data);\n }\n\n updateFilter(data: SmartSearchModel | SmartSearchModel[]): string {\n const filter: string[] = [];\n\n if (isArray(data)) {\n for (const d of data) {\n filter.push(this.getFilter(d));\n }\n } else {\n filter.push(this.getFilter(data));\n }\n\n return filter.length > 0 ? filter.filter(Boolean).join(` ${BOOLEAN_OPERATOR.and} `) : '';\n }\n\n private getFilter(searchObj: SmartSearchModel): string {\n const filter: string[] = [];\n const values = SmartSearchHelper.getValues(searchObj);\n const type = this.getTypeFromSearchObj(searchObj);\n\n if (searchObj[this.#siteName.tag] && type === SearchType.SiteItems) {\n const value = SmartSearchHelper.getJoinedValue(values, this.#siteName.tag);\n\n filter.push(containsWrapper(this.#siteName.prop, value));\n }\n\n if (searchObj[this.#fileName.tag] && type === SearchType.Files) {\n const value = SmartSearchHelper.getJoinedValue(values, this.#fileName.tag);\n\n filter.push(containsWrapper(this.#fileName.prop, value));\n }\n\n if (type === SearchType.FilesInSiteItem) {\n const valueMixinName = SmartSearchHelper.getJoinedValue(values, this.#mixinName.tag);\n const valueSiteName = SmartSearchHelper.getJoinedValue(values, this.#siteName.tag);\n const valueFileName = SmartSearchHelper.getJoinedValue(values, this.#fileName.tag);\n\n searchObj[this.#mixinName.tag] && filter.push(containsWrapper(this.#mixinName.prop, valueMixinName));\n searchObj[this.#siteName.tag] && filter.push(containsWrapper(this.#mixinName.prop, valueSiteName));\n searchObj[this.#fileName.tag] && filter.push(containsWrapper(this.#fileName.prop, valueFileName));\n }\n\n if (searchObj.words?.filter(Boolean)) {\n const term = filterByWords(searchObj).replace(SINGLE_QUOTES_REGEX, '');\n const keys = [this.#fileName.prop];\n const values = keys.map((k) => containsWrapper(k, term));\n\n filter.push('('.concat(values.join(` ${BOOLEAN_OPERATOR.or} `), ')'));\n }\n\n return filter.length > 0 ? filter.filter(Boolean).join(` ${BOOLEAN_OPERATOR.and} `) : '';\n }\n\n getTypeFromSearchObj(searchObj: SmartSearchModel): SearchType {\n switch (true) {\n case searchObj[this.#siteName.tag] && !searchObj[this.#fileName.tag]:\n return SearchType.SiteItems;\n case searchObj[this.#fileName.tag] && !searchObj[this.#siteName.tag]:\n case !!searchObj.words?.filter(Boolean):\n return SearchType.Files;\n case !!(searchObj[this.#fileName.tag] && searchObj[this.#siteName.tag]):\n case !!searchObj[this.#mixinName.tag]:\n return SearchType.FilesInSiteItem;\n default:\n return null;\n }\n }\n\n private orderByForSearch(orderBy: string): string {\n return orderBy === '' ? null : this.orderBy;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { RoutePath } from '@common';\nimport { hasAdminRole, OdataObject, ServiceStatus, ServiceType } from '@common/models';\nimport { ODataService, ODataServiceFactory } from '@common/odata';\nimport { AuthService } from '@common/services';\nimport { isNil } from 'lodash';\nimport { forkJoin, Observable } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class StatisticsService {\n private readonly backupMethods: ODataService;\n private readonly domainMethods: ODataService;\n\n constructor(odataFactory: ODataServiceFactory, private authService: AuthService, private router: Router) {\n this.backupMethods = odataFactory.CreateService('BackupUsers');\n this.domainMethods = odataFactory.CreateService('Domains');\n }\n\n /*\n * @returns list of problems with services (payment, storage limit)\n */\n getServiceStatus(serviceType?: ServiceType | string): Observable {\n let methodName = 'ServiceStatus';\n\n if (!isNil(serviceType) && serviceType !== '') {\n methodName += `?service=${ServiceType[serviceType]}`;\n }\n\n if (this.router.url.includes(RoutePath.RetentionPolicy)) {\n methodName += `&isRetentionPage=true`;\n }\n\n return forkJoin([this.authService.getAuthUser(), this.authService.getRoles()]).pipe(\n switchMap(([user, roles]) => {\n const isAdmin: boolean = hasAdminRole(roles);\n const id: string = isAdmin ? user.DomainId : user.Id;\n const service$: ODataService = isAdmin ? this.domainMethods : this.backupMethods;\n\n return service$.ItemProperty>(id, methodName).pipe(map((res) => res.value));\n })\n );\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { CreateInvoicePayload, PlanInfoOdata, TariffsOdata, UnsubscribePayload } from '@common/models';\nimport { ODataService, ODataServiceFactory } from '@common/odata';\nimport { SharedOdataService } from '@common/services';\nimport { Observable, of } from 'rxjs';\nimport { map, pluck, tap } from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class TariffsService extends SharedOdataService {\n private odataMethods: ODataService;\n private _planInfo: PlanInfoOdata;\n\n constructor(odataFactory: ODataServiceFactory, private http: HttpClient) {\n super(odataFactory, 'Tariffs');\n this.odataMethods = odataFactory.CreateService('');\n }\n\n getPlanInfo(forceUpdate = false): Observable {\n if (this._planInfo && !forceUpdate) return of(this._planInfo);\n\n const odataService = this.odataFactory.CreateService(`/Me/PlanInfo`);\n\n return this.http.get(odataService.Query().GetUrl()).pipe(tap((planInfo: PlanInfoOdata) => (this._planInfo = planInfo)));\n }\n\n getTariffs(): Observable {\n const odataService = this.odataFactory.CreateService('Tariffs');\n\n return this.fetchData(odataService).pipe(map((res) => res.data));\n }\n\n createInvoices(payload: CreateInvoicePayload): Observable {\n const odataService = this.odataFactory.CreateService(`Tariffs/CreateInvoices`);\n\n return >odataService.Post(payload).Exec().pipe(pluck('value'));\n }\n\n // createInvoicesRedirect(data: AdditionPaymentPayload): Observable {\n // const formData = new FormData();\n // for (const prop in data.payload) {\n // formData.append(prop, data.payload[prop]);\n // }\n // return this.http.post(data.url, formData, {\n // headers: {\n // 'Content-Type': 'application/x-www-form-urlencoded'\n // }\n // });\n // }\n\n createInvoice(payload: CreateInvoicePayload, id: string): Observable {\n const odataService = this.odataFactory.CreateService(`Tariffs(${id})/CreateInvoice`);\n\n return >odataService.Post(payload).Exec().pipe(pluck('value'));\n }\n\n // payInvoice(payload: InvoiceIdPayload): Observable {\n // const url = `/api/PayInvoice`;\n // return this.http.post(url, payload);\n // }\n\n unsubscribeActivatedPlan(payload: UnsubscribePayload): Observable {\n const odataService = this.odataFactory.CreateService(`Tariffs/CancelSubscription`);\n\n return odataService.Post(payload).Exec() as unknown as Observable;\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BOOLEAN_OPERATOR, SINGLE_QUOTES_REGEX, TaskAction } from '@common';\nimport {\n AuthUser,\n DomainCancelAllPayload,\n OperationTypeByAPIEnum,\n Role,\n ServiceTypeByAPIEnum,\n TaskIds,\n TaskIdsResponse,\n TaskManagerOdata,\n UserCancelAllPayload,\n hasAdminRole\n} from '@common/models';\nimport { ODataPagedResult, ODataServiceFactory } from '@common/odata';\nimport { AuthService, SharedOdataService } from '@common/services';\nimport { TaskManagerTagsEnum, TaskManagerTagsMap } from '@common/services/smart-search';\nimport { filterByWords } from '@common/utils';\nimport { FilterOptions, containsWrapper, getFilterByContains, getFilterByEq, getFilterByEqFromEnum } from '@common/utils/functions/search';\nimport { isArray, isNil } from 'lodash';\nimport { SmartSearchModel, SmartSearchModelField } from 'mbs-ui-kit';\nimport { Observable, forkJoin, throwError } from 'rxjs';\nimport { filter, switchMap } from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class TaskManagerService extends SharedOdataService {\n readonly #userName = TaskManagerTagsMap.get(TaskManagerTagsEnum.userName);\n readonly #serviceType = TaskManagerTagsMap.get(TaskManagerTagsEnum.serviceType);\n readonly #task = TaskManagerTagsMap.get(TaskManagerTagsEnum.task);\n readonly #status = TaskManagerTagsMap.get(TaskManagerTagsEnum.status);\n\n private user$: Observable;\n private roles$: Observable;\n\n constructor(odataFactory: ODataServiceFactory, private http: HttpClient, private authService: AuthService) {\n super(odataFactory, 'Tasks');\n\n this.user$ = authService.getAuthUser();\n this.roles$ = authService.getRoles();\n }\n\n fetchAction(id: string | string[] | undefined, action: TaskAction): Observable {\n switch (action) {\n case TaskAction.Resume:\n case TaskAction.Restart: {\n const odataService = this.odataFactory.CreateService(`Tasks(${id})/Restart`);\n\n return odataService.Post(null).Exec();\n }\n case TaskAction.Pause: {\n const odataService = this.odataFactory.CreateService(`Tasks(${id})/Pause`);\n\n return odataService.Post(null).Exec();\n }\n case TaskAction.Cancel: {\n const odataService = this.odataFactory.CreateService(`Tasks(${id})/Cancel`);\n\n return odataService.Post(null).Exec();\n }\n case TaskAction.CancelAll: {\n return this.cancelAll() as unknown as Observable;\n }\n case TaskAction.CancelSelected: {\n const ids = isArray(id) ? id : [id];\n const payload: TaskIds = { TaskIds: ids };\n\n return this.cancelSelected(payload) as unknown as Observable;\n }\n default:\n return throwError(() => 'Unknown action');\n }\n }\n\n getTasks(): Observable> {\n return forkJoin([this.user$, this.roles$]).pipe(\n filter(([user, roles]) => !isNil(user) && !isNil(roles)),\n switchMap(([user, roles]) => (hasAdminRole(roles) ? this.domainTasks(user.DomainId) : this.userTasks(user.Id)))\n );\n }\n\n private userTasks(id: string): Observable> {\n const odataService = this.odataFactory.CreateService(`/BackupUsers(${id})/Tasks`);\n\n return this.fetchData(odataService);\n }\n\n private domainTasks(id: string): Observable> {\n const odataService = this.odataFactory.CreateService(`/Domains(${id})/Tasks`);\n\n return this.fetchData(odataService);\n }\n\n updateFilter(searchObj: SmartSearchModel): void {\n const filter: string[] = [];\n\n if (searchObj[this.#userName.tag]) {\n const options: FilterOptions = {\n model: searchObj[this.#userName.tag] as SmartSearchModelField[],\n prop: this.#userName.prop\n };\n\n filter.push(getFilterByContains(options));\n }\n\n if (searchObj[this.#task.tag]) {\n const options: FilterOptions = {\n model: searchObj[this.#task.tag] as SmartSearchModelField[],\n prop: this.#task.prop,\n enumItems: OperationTypeByAPIEnum\n };\n\n filter.push(getFilterByEqFromEnum(options));\n }\n\n if (searchObj[this.#serviceType.tag]) {\n const options: FilterOptions = {\n model: searchObj[this.#serviceType.tag] as SmartSearchModelField[],\n prop: this.#serviceType.prop,\n enumItems: ServiceTypeByAPIEnum\n };\n\n filter.push(getFilterByEqFromEnum(options));\n }\n\n if (searchObj[this.#status.tag]) {\n const options: FilterOptions = {\n model: searchObj[this.#status.tag] as SmartSearchModelField[],\n prop: this.#status.prop\n };\n\n filter.push(getFilterByEq(options));\n }\n\n if (searchObj.words?.filter(Boolean)) {\n const term = filterByWords(searchObj).replace(SINGLE_QUOTES_REGEX, '');\n\n filter.push(containsWrapper(this.#userName.prop, term));\n }\n\n this.filter = filter.length > 0 ? filter.join(` ${BOOLEAN_OPERATOR.and} `) : '';\n }\n\n cancelSelected(payload: TaskIds): Observable {\n const odataService = this.odataFactory.CreateService(`Tasks/CancelSelected`);\n\n return odataService.Post(payload).Exec() as unknown as Observable;\n }\n\n cancelAll(): Observable {\n return forkJoin([this.user$, this.roles$]).pipe(\n filter(([user, roles]) => !isNil(user) && !isNil(roles)),\n switchMap(([user, roles]) => {\n return hasAdminRole(roles) ? this.domainCancelAll(user.DomainId) : this.userCancelAll(user.Id);\n })\n );\n }\n\n private domainCancelAll(id: string): Observable {\n const odataService = this.odataFactory.CreateService(`Tasks/CancelAll`);\n\n return odataService.Post({ DomainId: id }).Exec() as unknown as Observable;\n }\n\n private userCancelAll(id: string): Observable {\n const odataService = this.odataFactory.CreateService(`Tasks/CancelAll`);\n\n return odataService.Post({ UserId: id }).Exec() as unknown as Observable;\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ChannelItem, DriveItemDetails, OperationType, ServiceType, TeamFile, TeamItem, TeamOdataPost, TeamPost } from '@common/models';\nimport { ODataPagedResult, ODataService, ODataServiceFactory } from '@common/odata';\nimport { SharedOdataService } from '@common/services/shared.odata.service';\nimport {\n RestoreTeamsItemsPayload,\n RestoreTeamsParameters,\n RestoreTeamsParametersPayload\n} from '@pages/teams/modals/restore-team-item-modal/restore-team-item-modal.model';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class TeamsOdataService extends SharedOdataService {\n private odataMethods: ODataService;\n\n private driveItemsService: ODataService;\n\n constructor(odataFactory: ODataServiceFactory, private http: HttpClient) {\n super(odataFactory, 'Teams');\n\n this.driveItemsService = odataFactory.CreateService('DriveItems');\n this.odataMethods = odataFactory.CreateService('');\n this.orderBy = 'Name asc';\n }\n\n getTeams(): Observable> {\n return this.odataFactory\n .CreateService('Teams')\n .Query()\n .Top(this.pageSize)\n .Skip(this.pageSize * (this.page - 1))\n .Filter(this.filter)\n .OrderBy(this.orderBy)\n .ExecWithCount();\n }\n\n getChannels(teamId: string): Observable> {\n return this.odataFactory\n .CreateService(`/Teams(${teamId})/Channels`)\n .Query()\n .Top(this.pageSize)\n .Skip(this.pageSize * (this.page - 1))\n .Filter(this.filter)\n .OrderBy(this.orderBy)\n .ExecWithCount();\n }\n\n getChannelItems(channelId: string): Observable {\n return this.odataFactory\n .CreateService(`/Channels(${channelId})/TeamThirdLevelItems`)\n .Query()\n .CustomQueryOptions([{ key: 'Id', value: channelId }])\n .Exec()\n .pipe(\n map((items: ChannelItem[]) =>\n items.map((item: ChannelItem) => {\n item.ChannelId = channelId;\n return item;\n })\n )\n );\n }\n\n getPosts(channelId: string): Observable {\n return this.odataFactory\n .CreateService(`/Channels(${channelId})/ChatMessages`)\n .Query()\n .Exec()\n .pipe(map((posts: TeamOdataPost[]) => posts.map((post) => new TeamPost(post)).sort((a, b) => a.date.getTime() - b.date.getTime())));\n }\n\n getReplies(messageId: number): Observable {\n return this.odataFactory\n .CreateService(`/ChatMessages(${messageId})/Replies`)\n .Query()\n .OrderBy('CreatedDate asc')\n .Exec()\n .pipe(\n map((posts: TeamOdataPost[]) => posts.map((post) => new TeamPost(post)).sort((a, b) => a.date.getTime() - b.date.getTime()))\n ) as Observable;\n }\n\n getFiles(channelId: string, treeId: string): Observable> {\n return this.odataFactory.CreateService(`Channels(${channelId})/Files?Id=${treeId}`).Query().ExecWithCount();\n }\n\n getFileDetails(id: string): Observable {\n return this.driveItemsService.CustomFunction(id, 'GetDetails', null).pipe(map((res) => res.body)) as Observable;\n }\n\n restoreTeamItems(payload: RestoreTeamsItemsPayload): Observable {\n return this.odataMethods.CustomCollectionAction('RestoreTeamsItems', payload);\n }\n\n restoreTeamsParameters(payload: RestoreTeamsParametersPayload): Observable {\n return this.odataMethods.CustomCollectionAction('RestoreTeamsParameters', payload).pipe(map((res) => res.body));\n }\n\n checkAppPermissions(serviceType: ServiceType, operationType: OperationType): Observable {\n const odataService = this.odataFactory.CreateService(\n `/CheckAppPermissions(serviceType='${serviceType}',operationType='${operationType}')`\n );\n\n return this.http.get<{ Allowed: boolean }>(odataService.Query().GetUrl()).pipe(map((res) => res.Allowed));\n }\n}\n","import { HttpClient, HttpErrorResponse, HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BOOLEAN_OPERATOR, COMPARISON_OPERATOR, ChangePassword, ConfirmAlternatePassword, PolicyType } from '@common';\nimport { BackupStatisticGrid } from '@common/components/delete-user-backup';\nimport {\n AddAlternateEmail,\n AlternateEmail,\n AutoActivationMode,\n AzureGroup,\n BackupSetting,\n BackupStatistic,\n DeleteBackup,\n OdataBackupSettingSaveRequest,\n OdataObject,\n OrganizationalUnit,\n Role,\n SelectedPolicies,\n ServiceFields,\n ServiceType,\n ServiceTypeByAPIEnum,\n TasksStateResponse,\n User,\n UserInfoForService,\n UsersPermissions,\n UsersServices,\n hasUserAccountAdminRole\n} from '@common/models';\nimport { ODataQuery, ODataService, ODataServiceFactory } from '@common/odata';\nimport { AuthService } from '@common/services';\nimport { OrganizationalUnitsService } from '@common/services/organizational-units.service';\nimport { getErrorText, getOdataTop, getServiceUiInfo, hasActionsQueue } from '@common/utils';\nimport { containsWrapper } from '@common/utils/functions/search';\nimport { I18NextPipe } from 'angular-i18next';\nimport { isArray } from 'lodash';\nimport { GuidEmpty, naturalSort } from 'mbs-ui-kit';\nimport { BehaviorSubject, Observable, forkJoin, throwError } from 'rxjs';\nimport { catchError, finalize, map, shareReplay } from 'rxjs/operators';\n\nconst includePolicyDataQueryOption = (value: boolean) => ({ key: 'includePolicyData', value });\n\nexport enum UserFiltersEnum {\n all = 'All',\n inDomain = 'InDomain',\n notInDomain = 'NotInDomain',\n suspended = 'Suspended'\n}\n\ninterface State {\n page: number;\n pageSize: number;\n searchTerm: string;\n orderBy: string;\n userProviderState: string;\n usersGroup: string;\n mailFilter: string;\n driveFilter: string;\n contactFilter: string;\n calendarFilter: string;\n inBackup: boolean;\n domainId: string;\n totalSize?: boolean;\n policyType: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class UserOdataService {\n #loading$: BehaviorSubject = new BehaviorSubject(false);\n #users$ = new BehaviorSubject([]);\n #total$ = new BehaviorSubject(0);\n\n public requestPending$: Observable;\n\n private readonly allUsersText = this.i18nPipe.transform('common.availableSelect.allUsers', { format: 'title' });\n\n private readonly state: State;\n private readonly baseUrl: string;\n private readonly myAvailableFilters: { value: string; text: string }[];\n\n private query: ODataQuery;\n private userService: ODataService;\n private odata: ODataService;\n\n private oDataFilter: string[] = [];\n\n constructor(\n private i18nPipe: I18NextPipe,\n private odataFactory: ODataServiceFactory,\n private http: HttpClient,\n private authService: AuthService,\n private orgUnitsService: OrganizationalUnitsService\n ) {\n this.userService = this.odataFactory.CreateService('BackupUsers');\n this.odata = this.odataFactory.CreateService('');\n this.baseUrl = `${this.odata.Query().GetUrl()}/`;\n\n this.myAvailableFilters = [\n { value: UserFiltersEnum.all, text: this.allUsersText },\n { value: UserFiltersEnum.inDomain, text: this.i18nPipe.transform('common.availableSelect.usersInDomain', { format: 'title' }) },\n { value: UserFiltersEnum.notInDomain, text: this.i18nPipe.transform('common.availableSelect.usersNotInDomain', { format: 'title' }) },\n { value: UserFiltersEnum.suspended, text: this.i18nPipe.transform('common.availableSelect.blockedSuspended', { format: 'title' }) }\n ];\n this.state = {\n page: 1,\n pageSize: 50,\n searchTerm: '',\n orderBy: 'Name',\n userProviderState: this.myAvailableFilters[0].value,\n usersGroup: '',\n mailFilter: null,\n driveFilter: null,\n contactFilter: null,\n calendarFilter: null,\n inBackup: null,\n domainId: null,\n policyType: null\n };\n\n this.requestPending$ = this.#loading$.pipe(hasActionsQueue(), shareReplay(1));\n }\n\n get users() {\n return this.#users$.asObservable();\n }\n\n get total() {\n return this.#total$.asObservable();\n }\n\n get availableFilters() {\n return this.myAvailableFilters;\n }\n\n get pageSize() {\n return this.state.pageSize;\n }\n\n set pageSize(pageSize: number) {\n this._set({ pageSize });\n }\n\n get page() {\n return this.state.page;\n }\n set page(page: number) {\n this._set({ page });\n }\n\n get userProviderState() {\n return this.state.userProviderState;\n }\n\n set userProviderState(userProviderState: string) {\n this.state.totalSize = null;\n this._set({ userProviderState });\n }\n\n set userProviderStateWithTotalSize({ userProviderState, totalSize }) {\n const query = { userProviderState };\n\n if (totalSize) {\n query['totalSize'] = totalSize;\n }\n\n this._set(query);\n }\n\n get usersGroup(): string {\n return this.state.usersGroup;\n }\n set usersGroup(usersGroup: string) {\n this._set({ usersGroup });\n }\n\n get orderBy() {\n return this.state.orderBy;\n }\n set orderBy(orderBy) {\n this._set({ orderBy });\n }\n\n set policyType(type) {\n this._set({ policyType: type });\n }\n get policyType() {\n return this.state.policyType;\n }\n\n get mailFilter() {\n return this.state.mailFilter;\n }\n set mailFilter(mailFilter) {\n this._set({ mailFilter });\n }\n\n get driveFilter() {\n return this.state.driveFilter;\n }\n set driveFilter(driveFilter) {\n this._set({ driveFilter });\n }\n\n get contactFilter() {\n return this.state.contactFilter;\n }\n set contactFilter(contactFilter) {\n this._set({ contactFilter });\n }\n\n get calendarFilter() {\n return this.state.calendarFilter;\n }\n set calendarFilter(calendarFilter) {\n this._set({ calendarFilter });\n }\n\n get searchTerm() {\n return this.state.searchTerm;\n }\n set searchTerm(searchTerm) {\n this.state.page = 1;\n this.state.searchTerm = searchTerm;\n }\n\n set domainId(domainId: string) {\n this.state.page = 1;\n this.state.domainId = domainId;\n }\n\n set inBackup(v: boolean) {\n this.state.page = 1;\n this.state.inBackup = v;\n }\n\n private _set(patch: Partial) {\n if (!patch.page) {\n this.state.page = 1;\n }\n\n Object.assign(this.state, patch);\n this.getUsers();\n }\n\n // eslint-disable-next-line sonarjs/cognitive-complexity\n getUsers() {\n this.#loading$.next(true);\n\n const skip = (this.state.page - 1) * this.state.pageSize;\n\n this.query = this.userService\n .Query()\n .Top(this.state.pageSize)\n .Skip(skip)\n .OrderBy(this.state.orderBy)\n .CustomQueryOptions(includePolicyDataQueryOption(true));\n\n this.oDataFilter = [];\n if (this.state.domainId) {\n // this.oDataFilter.push(`(DomainId eq ${this.state.domainId})`);\n // APPS-1039\n // TODO: APPS-1055\n }\n\n switch (this.state.userProviderState) {\n case UserFiltersEnum.all: {\n if (this.state.inBackup === false && this.state.totalSize) {\n this.oDataFilter.push(`TotalSize ${COMPARISON_OPERATOR.eq} 0`);\n }\n\n break;\n }\n case UserFiltersEnum.notInDomain: {\n this.oDataFilter.push(`(UserProviderState ${COMPARISON_OPERATOR.eq} '${this.state.userProviderState}')`);\n\n if (this.state.totalSize) {\n this.oDataFilter.push(`TotalSize ${COMPARISON_OPERATOR.gt} 0`);\n }\n\n break;\n }\n case UserFiltersEnum.inDomain:\n case UserFiltersEnum.suspended: {\n this.oDataFilter.push(`(UserProviderState ${COMPARISON_OPERATOR.eq} '${this.state.userProviderState}')`);\n }\n }\n\n if (this.state.searchTerm) {\n this.oDataFilter.push(\n `(${containsWrapper('Name', this.state.searchTerm)} ${BOOLEAN_OPERATOR.or} ${containsWrapper('Email', this.state.searchTerm)})`\n );\n }\n\n if (this.state.mailFilter !== null) {\n if (this.state.mailFilter) {\n this.oDataFilter.push(`MailEnable ${COMPARISON_OPERATOR.eq} ${this.state.mailFilter}`);\n } else {\n this.oDataFilter.push(\n `MailEnable ${COMPARISON_OPERATOR.eq} ${this.state.mailFilter} ${BOOLEAN_OPERATOR.or} UserProviderState ${COMPARISON_OPERATOR.eq} '${UserFiltersEnum.notInDomain}' ${BOOLEAN_OPERATOR.or} InBackup ${COMPARISON_OPERATOR.eq} false`\n );\n }\n }\n\n if (this.state.driveFilter !== null) {\n if (this.state.driveFilter) {\n this.oDataFilter.push(`DriveEnable ${COMPARISON_OPERATOR.eq} ${this.state.driveFilter}`);\n } else {\n this.oDataFilter.push(\n `DriveEnable ${COMPARISON_OPERATOR.eq} ${this.state.driveFilter} ${BOOLEAN_OPERATOR.or} UserProviderState ${COMPARISON_OPERATOR.eq} '${UserFiltersEnum.notInDomain}' ${BOOLEAN_OPERATOR.or} InBackup ${COMPARISON_OPERATOR.eq} false`\n );\n }\n }\n\n if (this.state.contactFilter !== null) {\n if (this.state.contactFilter) {\n this.oDataFilter.push(`ContactsEnable ${COMPARISON_OPERATOR.eq} ${this.state.contactFilter}`);\n } else {\n this.oDataFilter.push(\n `ContactsEnable ${COMPARISON_OPERATOR.eq} ${this.state.contactFilter} ${BOOLEAN_OPERATOR.or} UserProviderState ${COMPARISON_OPERATOR.eq} '${UserFiltersEnum.notInDomain}' ${BOOLEAN_OPERATOR.or} InBackup ${COMPARISON_OPERATOR.eq} false`\n );\n }\n }\n\n if (this.state.calendarFilter !== null) {\n if (this.state.calendarFilter) {\n this.oDataFilter.push(`CalendarEnable ${COMPARISON_OPERATOR.eq} ${this.state.calendarFilter}`);\n } else {\n this.oDataFilter.push(\n `CalendarEnable ${COMPARISON_OPERATOR.eq} ${this.state.calendarFilter} ${BOOLEAN_OPERATOR.or} UserProviderState ${COMPARISON_OPERATOR.eq} '${UserFiltersEnum.notInDomain}' ${BOOLEAN_OPERATOR.or} InBackup ${COMPARISON_OPERATOR.eq} false`\n );\n }\n }\n\n this.updatePolicyTypeFilter();\n\n const anyFilters = this.state.mailFilter || this.state.driveFilter || this.state.contactFilter || this.state.calendarFilter;\n\n if (anyFilters) {\n this.oDataFilter.push(`UserProviderState ${COMPARISON_OPERATOR.ne} '${this.myAvailableFilters[2].value}'`);\n }\n\n if (anyFilters) {\n this.oDataFilter.push(`InBackup ${COMPARISON_OPERATOR.eq} ${this.state.inBackup === false ? String(this.state.inBackup) : 'true'}`);\n } else if (this.state.inBackup !== null) {\n this.oDataFilter.push(`InBackup ${COMPARISON_OPERATOR.eq} ${String(this.state.inBackup)}`);\n }\n\n if (this.oDataFilter.length > 0) {\n this.query = this.query.Filter(this.oDataFilter.join(` ${BOOLEAN_OPERATOR.and} `));\n }\n\n if (this.state.usersGroup) {\n this.query = this.query.CustomQueryOptions([{ key: 'folderId', value: this.state.usersGroup }, includePolicyDataQueryOption(true)]);\n }\n\n this.query\n .ExecWithCount()\n .pipe(finalize(() => this.#loading$.next(false)))\n .subscribe({\n next: (res) => {\n this.#total$.next(res.count);\n this.#users$.next(res.data);\n this.#loading$.next(false);\n }\n });\n }\n\n private updatePolicyTypeFilter(): void {\n const getFiltersFn = (property, operator, separator) => {\n const filters = ['MailPolicyType', 'DrivePolicyType', 'ContactPolicyType', 'CalendarPolicyType'];\n\n if (this.authService.isOffice) {\n filters.push('SharePointPolicyType');\n }\n\n if (this.authService.isGoogle) {\n filters.push('TeamDrivePolicyType');\n }\n\n return filters.map((prop: string) => `${prop} ${operator} '${property}'`).join(` ${separator} `);\n };\n\n switch (this.state.policyType) {\n case 'All':\n break;\n case PolicyType.none:\n this.oDataFilter.push(getFiltersFn(PolicyType.none, `${COMPARISON_OPERATOR.eq}`, `${BOOLEAN_OPERATOR.and}`));\n break;\n case PolicyType.default:\n this.oDataFilter.push(\n '(' +\n getFiltersFn(PolicyType.default, `${COMPARISON_OPERATOR.eq}`, `${BOOLEAN_OPERATOR.and}`) +\n ')' +\n ` ${BOOLEAN_OPERATOR.or} ` +\n '((' +\n getFiltersFn(PolicyType.default, `${COMPARISON_OPERATOR.eq}`, `${BOOLEAN_OPERATOR.or}`) +\n `) ${BOOLEAN_OPERATOR.and} ` +\n '(' +\n getFiltersFn(PolicyType.custom, `${COMPARISON_OPERATOR.ne}`, `${BOOLEAN_OPERATOR.and}`) +\n '))'\n );\n break;\n case PolicyType.custom:\n this.oDataFilter.push(getFiltersFn(PolicyType.custom, `${COMPARISON_OPERATOR.eq}`, `${BOOLEAN_OPERATOR.or}`));\n break;\n }\n }\n\n /*\n *\n * @param serviceType\n * @param search - contains in user email\n * @param includeUsersId - array of user isd that return object should contain\n */\n getUserWithServiceInfo(serviceType: ServiceType, search: string = null, includeUsersId: string[] = []): Observable {\n this.#loading$.next(true);\n const fields = new ServiceFields(serviceType);\n const selectedFields = ['Id', 'Email', 'Name', ...fields.filteredArrayValues()];\n const filter: string[] = [];\n\n if (search) {\n filter.push(`(${containsWrapper('Email', search)} ${BOOLEAN_OPERATOR.or} ${containsWrapper('Name', search)})`);\n }\n\n const query = this.userService.Query().Top(500).Select(selectedFields);\n const req: { users?: Observable; selectedUsers?: Observable } = {\n users: query.Filter(filter.join(` ${BOOLEAN_OPERATOR.and} `)).Exec()\n };\n\n if (includeUsersId.length > 0) {\n req.selectedUsers = query.Filter(`Id in (${includeUsersId.join(', ')})`).Exec();\n }\n\n return forkJoin(req).pipe(\n finalize(() => this.#loading$.next(false)),\n map((req: { users: User[]; selectedUsers: User[] }) => {\n const users = req.users;\n const selected = req.selectedUsers;\n\n if (selected && !search) {\n selected.forEach((user) => {\n if (!users.some((u) => u.Id == user.Id)) {\n users.unshift(user);\n }\n });\n }\n\n return users;\n }),\n map((users) => {\n return users.map((u) => {\n return {\n Id: u.Id,\n Name: u.Name,\n Email: u.Email,\n LastBackupDate: u[fields.LastBackupDate] as string,\n TotalSize: (fields.Size ? u[fields.Size] : 0) as number\n };\n });\n })\n );\n }\n\n deleteUser(ids: string | string[]): Observable {\n const request$ = isArray(ids)\n ? this.userService.CustomCollectionAction('DeleteSelected', { Ids: ids })\n : this.userService.CustomAction(ids, 'Delete', null);\n\n this.#loading$.next(true);\n return request$.pipe(finalize(() => this.#loading$.next(false)));\n }\n\n updatePermissions(user: User, userIds?: string[]): Observable {\n const options = {\n Ids: userIds ? userIds : [user.Id],\n SignInEnable: user.SignInEnable,\n RestoreEnable: user.RestoreEnable\n };\n\n return this.odata.CustomCollectionAction('SetUsersPermissions', options);\n }\n\n getUsersPermissions(userIds: string[]): Observable {\n return this.http.get(`${this.baseUrl}GetUsersPermissions?userIds=${userIds.join(',')}`);\n }\n\n getUsersServices(userIds: string[]): Observable {\n return this.http.get(`${this.baseUrl}GetUsersServices?userIds=${userIds.join(',')}`);\n }\n\n configureServices(userIds: string[], backupSettings: BackupSetting[]): Observable {\n const postData: OdataBackupSettingSaveRequest = {\n Ids: userIds,\n Services: backupSettings.map((s) => {\n return { Service: ServiceType[s.serviceType], Enabled: s.enabled };\n })\n };\n\n return this.odata.CustomCollectionAction('ConfigureServices', postData);\n }\n\n updateAttachedPolicies(userIds: string[], policy: SelectedPolicies): Observable {\n const options = {\n UserIds: userIds,\n EmailPolicyId: this.convertPolicyId(policy.emailPolicyId),\n DrivePolicyId: this.convertPolicyId(policy.drivePolicyId),\n ContactPolicyId: this.convertPolicyId(policy.contactPolicyId),\n CalendarPolicyId: this.convertPolicyId(policy.calendarPolicyId),\n SitePolicyId: this.convertPolicyId(policy.sitePolicyId),\n TeamDrivePolicyId: this.convertPolicyId(policy.teamDriveId),\n TeamsPolicyId: this.convertPolicyId(policy.teamsPolicyId)\n };\n\n return this.odata.CustomCollectionAction('SetAttachedPolicies', options);\n }\n\n /* Need for get normalize value from method getEmptyAttachedPolicy() */\n private convertPolicyId = (id: string): string => id || null;\n\n deleteBackup(deleteModel: DeleteBackup): Observable {\n this.#loading$.next(true);\n return this.odata.CustomCollectionAction('DeleteBackup', deleteModel).pipe(\n catchError((err: HttpErrorResponse) => throwError(() => getErrorText(err))),\n finalize(() => this.#loading$.next(false))\n );\n }\n\n getBackupStatistic(userIds: string[], include: boolean): Observable {\n return this.http\n .get(`${this.baseUrl}GetBackupStatistic?userIds=${userIds.join(',')}&includeTeamDriveSharePoint=${include}`)\n .pipe(map((res: OdataObject) => res.value));\n }\n\n getTasksState(userId: string): Observable {\n return this.userService.CustomFunction(userId, 'GetTasksState').pipe(map((res: HttpResponse) => res.body));\n }\n\n getAlternateEmail(userId: string): Observable {\n return this.userService.CustomFunction(userId, 'GetAlternateEmail').pipe(map((res: HttpResponse) => res.body));\n }\n\n addAlternateEmail(model: AddAlternateEmail): Observable {\n const options = {\n Email: model.email,\n Password: model.password,\n ConfirmPassword: model.confirmPassword\n };\n\n return this.userService.CustomAction(model.userId, 'AddAlternateEmail', options).pipe(\n map((res: HttpResponse<{ body: any }>) => res.body),\n catchError((err: HttpErrorResponse) => {\n const _error = err && (err.error as { value: string }).value;\n const errorMessage = _error ? _error : 'Error adding alternate Email';\n\n return throwError(() => errorMessage);\n })\n );\n }\n\n editAlternateEmail(userId: string, email: string, password: string): Observable {\n const options = {\n Email: email,\n Password: password\n };\n\n return this.userService.CustomAction(userId, 'EditAlternateEmail', options).pipe(map((res: HttpResponse<{ body: any }>) => res.body));\n }\n\n editAlternatePassword(userId: string, password: string, newPassword: string, confirmPassword: string) {\n const options = {\n Password: password,\n NewPassword: newPassword,\n ConfirmPassword: confirmPassword\n } as ChangePassword;\n\n return this.userService\n .CustomAction(userId, 'EditAlternatePassword', options)\n .pipe(map((res: HttpResponse<{ body: any }>) => res.body));\n }\n\n deleteAlternateEmail(userId: string, password?: string) {\n return this.userService\n .CustomAction(userId, 'DeleteAlternateEmail', password ? { Password: password } : {})\n .pipe(map((res: HttpResponse<{ body: any }>) => res.body));\n }\n\n getSecretForAlternate(userId: string): Observable {\n return this.userService.CustomFunction(userId, 'GetTwoStepSecret').pipe(map((res: HttpResponse<{ value: string }>) => res.body.value));\n }\n\n enableAlternateTwoStep(userId: string, password: string, responseCode: string) {\n const options = {\n Password: password,\n ResponseCode: responseCode\n };\n\n return this.userService\n .CustomAction(userId, 'EnableAlternateTwoStep', options)\n .pipe(map((res: HttpResponse<{ bode: any }>) => res.body));\n }\n\n getUserGroups(): Observable {\n this.#loading$.next(true);\n\n return this.odata.CustomCollectionFunction('AzureGroups').pipe(\n map((res: HttpResponse<{ value: AzureGroup[] }>) => {\n const groups = res.body.value;\n\n groups.sort((a, b) => naturalSort(a.Name, b.Name));\n groups.unshift({\n Id: '',\n Name: this.allUsersText,\n AutoActivationMode: AutoActivationMode.Disabled\n });\n\n return groups;\n }),\n finalize(() => this.#loading$.next(false))\n );\n }\n\n getOrganizationalUnitsGroups(search?: string): Observable {\n this.orgUnitsService.orderBy = search ? 'Path asc' : null;\n this.orgUnitsService.pageSize = getOdataTop(search);\n this.orgUnitsService.filter = search ? containsWrapper('Path', search) : '';\n\n !search && this.#loading$.next(true);\n return this.orgUnitsService.fetchGroups().pipe(\n map((res) => res.data),\n map((units) => this.transformPath(search ? units : this.insertAllUsers(units))),\n finalize(() => !search && this.#loading$.next(false))\n );\n }\n\n private insertAllUsers(units: OrganizationalUnit[]): OrganizationalUnit[] {\n const notInUnits = units.find((u) => u.Id === GuidEmpty);\n\n units = units.filter((u) => u.Id !== GuidEmpty).sort((a, b) => naturalSort(a.Path, b.Path));\n units.unshift(\n ...[\n {\n Id: '',\n Path: this.allUsersText,\n AutoActivationMode: AutoActivationMode.Disabled\n } as OrganizationalUnit,\n notInUnits\n ].filter(Boolean)\n );\n\n return units;\n }\n\n private transformPath(units: OrganizationalUnit[]): OrganizationalUnit[] {\n return units.map((u) => {\n if (this.authService.isGoogle) {\n u.Path = u?.Path || u?.Name;\n }\n\n return u;\n });\n }\n\n disableAlternateTwoStep(userId: string, password: string): Observable {\n const options = {\n Password: password\n };\n\n return this.userService\n .CustomAction(userId, 'DisableAlternateTwoStep', options)\n .pipe(map((res: HttpResponse<{ body: any }>) => res.body));\n }\n\n addAllUsersToBackup(): Observable {\n this.#loading$.next(true);\n\n return this.odata.CustomCollectionAction('AddAllUsersToBackup', null).pipe(finalize(() => this.#loading$.next(false)));\n }\n\n setAutoAddUserToBackup(autoAddUserToBackup: boolean): Observable {\n return this.odata.CustomCollectionAction(`SetAutoAddUserToBackup?autoAddUserToBackup=${String(autoAddUserToBackup)}`, null);\n }\n\n setAutoAddGroupToBackup(autoAddGroupToBackup: boolean): Observable {\n return this.odata.CustomCollectionAction(`SetAutoAddGroupToBackup?autoAddGroupToBackup=${String(autoAddGroupToBackup)}`, null);\n }\n\n clearCache(): void {\n this.#users$.next([]);\n this.#total$.next(0);\n }\n\n mapBackupStatisticToGridList(stats: BackupStatistic[], roles: Role[], isGlobalAdmin = true): BackupStatisticGrid[] {\n const getServiceType = (type: string): ServiceType => ServiceTypeByAPIEnum[type].serviceType;\n\n return stats\n .filter((stat) => {\n const serviceType = getServiceType(stat.Type);\n\n return (\n (serviceType === ServiceType.SharePoint && !hasUserAccountAdminRole(roles) && isGlobalAdmin) ||\n serviceType !== ServiceType.SharePoint\n );\n })\n .map((stat) => {\n const serviceType = getServiceType(stat.Type);\n\n return {\n name: getServiceUiInfo(serviceType).displayName,\n size: stat.Size,\n count: serviceType === ServiceType.Contacts ? stat.ItemCount || 0 : stat.ItemCount,\n serviceType: serviceType\n };\n });\n }\n\n confirmAlternatePassword(token: string, newPassword: string) {\n const options = {\n NewPassword: newPassword,\n Token: token\n } as ConfirmAlternatePassword;\n\n return this.odata.CustomCollectionAction('ConfirmAlternatePassword', options).pipe(map((res: HttpResponse<{ body: any }>) => res.body));\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BOOLEAN_OPERATOR, SINGLE_QUOTES_REGEX } from '@common';\nimport { AutoActivationSettings, NewGroupSettings, OrganizationalUnit } from '@common/models';\nimport { ODataPagedResult, ODataServiceFactory } from '@common/odata';\nimport { AuthService } from '@common/services/auth.service';\nimport { SharedOdataService } from '@common/services/shared.odata.service';\nimport { UserGroupsTagsEnum, UserGroupsTagsMap } from '@common/services/smart-search/user-groups';\nimport { FilterOptions, containsWrapper, filterByWords, getFilterByContains, getFilterByEq } from '@common/utils/functions/search';\nimport { I18NextPipe } from 'angular-i18next';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { GuidEmpty, SmartSearchModel, SmartSearchModelField } from 'mbs-ui-kit';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class OrganizationalUnitsService extends SharedOdataService {\n readonly #name = UserGroupsTagsMap.get(UserGroupsTagsEnum.Path);\n readonly #autoActivation = UserGroupsTagsMap.get(UserGroupsTagsEnum.AutoActivation);\n\n public readonly moduleUsers = I18_NAMESPACE_APPS_UI.users;\n\n get name(): { tagKey: string; prop: string } {\n return this.#name;\n }\n\n get isGoogle(): boolean {\n return this.authService.isGoogle;\n }\n\n constructor(\n odataFactory: ODataServiceFactory,\n private http: HttpClient,\n private i18nPipe: I18NextPipe,\n private authService: AuthService\n ) {\n super(odataFactory, 'OrgUnits');\n }\n\n fetchGroups(): Observable> {\n const odataService = this.odataFactory.CreateService(`/OrgUnits(${GuidEmpty})/GetAllOrgUnits`);\n\n return this.fetchData(odataService);\n }\n\n getNewGroupSettings(): Observable {\n const url = this.odataFactory.CreateService(`/NewGroupSettings`).Query().GetUrl();\n\n return this.http.get(url);\n }\n\n updateNewGroupSettings(payload: NewGroupSettings): Observable {\n const url = this.odataFactory.CreateService(`/NewGroupSettings`).Query().GetUrl();\n\n return this.http.post(url, payload);\n }\n\n updateAutoActivation(payload: AutoActivationSettings): Observable {\n return this.odataFactory.CreateService(`/OrgUnits/AutoActivationMode`).Post(payload).Exec();\n }\n\n updateFilter(searchObj: SmartSearchModel): void {\n const filter: string[] = [];\n const nameTag = this.i18nPipe.transform(this.moduleUsers + this.#name.tagKey, { format: 'title' });\n const autoActivateTag = this.i18nPipe.transform(this.moduleUsers + this.#autoActivation.tagKey, {\n format: 'title'\n });\n\n if (searchObj[nameTag]) {\n const options: FilterOptions = {\n model: searchObj[nameTag] as SmartSearchModelField[],\n prop: this.#name.prop\n };\n\n filter.push(getFilterByContains(options));\n }\n\n if (searchObj[autoActivateTag]) {\n const options: FilterOptions = {\n model: searchObj[autoActivateTag] as SmartSearchModelField[],\n prop: this.#autoActivation.prop\n };\n\n filter.push(getFilterByEq(options, true));\n }\n\n if (searchObj.words?.filter(Boolean)) {\n const term = filterByWords(searchObj).replace(SINGLE_QUOTES_REGEX, '');\n\n filter.push(containsWrapper(this.#name.prop, term));\n }\n\n this.filter = filter.length > 0 ? filter.join(` ${BOOLEAN_OPERATOR.and} `) : '';\n }\n}\n","import { Inject, Injectable, InjectionToken } from '@angular/core';\nimport { ODataPagedResult, ODataQuery, ODataService, ODataServiceFactory } from '@common/odata';\nimport { IKeyValue } from 'linq-collections';\nimport { Observable } from 'rxjs';\n\nconst TYPE_NAME = new InjectionToken('type name');\n\ninterface State {\n page: number;\n pageSize: number;\n orderBy: string;\n filter: string;\n customQueryOptions: Map;\n}\n\n@Injectable()\nexport class SharedOdataService {\n #state: State;\n protected odata: ODataService;\n\n set state(state: State) {\n this.#state = state;\n }\n\n get state(): State {\n return this.#state;\n }\n\n set page(page: number) {\n this.state.page = page;\n }\n\n get page(): number {\n return this.state.page;\n }\n\n set pageSize(pageSize: number) {\n this.state.pageSize = pageSize;\n }\n\n get pageSize(): number {\n return this.state.pageSize;\n }\n\n set orderBy(orderBy: string) {\n this.state.orderBy = orderBy;\n }\n\n get orderBy(): string {\n return this.state.orderBy;\n }\n\n set filter(filter: string) {\n this.state.filter = filter;\n }\n\n get filter(): string {\n return this.state.filter;\n }\n\n get customQueryOptions(): Map {\n return this.state.customQueryOptions;\n }\n\n constructor(protected odataFactory: ODataServiceFactory, @Inject(TYPE_NAME) protected typeName: string) {\n this.odata = this.odataFactory.CreateService(typeName);\n this.state = this.getDefaultState();\n }\n\n protected addCustomQueryOption(key: string, value: any) {\n this.state.customQueryOptions.set(key, value);\n }\n\n protected removeCustomQueryOption(key: string) {\n this.state.customQueryOptions.delete(key);\n }\n\n protected getQuery(service: ODataService): ODataQuery {\n const defaultOrderBy = this.getDefaultState().orderBy;\n const orderBy = this.orderBy || defaultOrderBy;\n const skip = (this.page - 1) * this.pageSize;\n\n return service\n .Query()\n .OrderBy(orderBy)\n .Filter(this.filter)\n .Top(this.pageSize)\n .Skip(skip)\n .CustomQueryOptions(this.getCustomQueryOptions());\n }\n\n private getCustomQueryOptions(): IKeyValue[] {\n if (this.customQueryOptions?.size > 0) {\n return Array.from(this.customQueryOptions)\n .map(([key, value]) => ({ key, value }))\n .filter((i) => i.value !== null);\n }\n\n return null;\n }\n\n protected getQueryParams(service: ODataService): string {\n const query = this.getQuery(service);\n\n return new URL(query.GetUrl() + '&$count=true', location.origin).searchParams.toString();\n }\n\n protected fetchData(service: ODataService): Observable> {\n return this.getQuery(service).ExecWithCount();\n }\n\n clearCache(): void {\n this.state = this.getDefaultState();\n }\n\n private getDefaultState = (): State => ({\n page: 1,\n pageSize: 50,\n orderBy: '',\n filter: '',\n customQueryOptions: new Map()\n });\n}\n","export enum CalendarServiceTag {\n Event = 1,\n Descr\n}\n\nexport const CalendarServiceTagsMap: Map = new Map([\n [\n CalendarServiceTag.Event,\n {\n tag: 'Event Name',\n prop: 'Name'\n }\n ],\n [\n CalendarServiceTag.Descr,\n {\n tag: 'Description',\n prop: 'Descr'\n }\n ]\n]);\n","import { Injectable } from '@angular/core';\nimport { SINGLE_QUOTES_REGEX } from '@common';\nimport { CalendarEventModel } from '@common/models';\nimport { SortOrderByPipe } from '@common/pipes';\nimport { CalendarOdataService } from '@common/services';\nimport { getUniqueListByProp } from '@common/services/smart-search';\nimport { CalendarServiceTag, CalendarServiceTagsMap } from '@common/services/smart-search/calendar/smart-search-tags-calendar.model';\nimport SmartSearchTemplatesBase from '@common/services/smart-search/smart-search-template-base';\nimport { smartSearchModelFactory } from '@common/utils/functions/search';\nimport { isNil } from 'lodash';\nimport { ModelTemplate, SmartSearchState } from 'mbs-ui-kit';\nimport { Observable, asapScheduler, scheduled } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable()\nexport class SmartSearchModelTemplateCalendarService extends SmartSearchTemplatesBase {\n readonly #event = CalendarServiceTagsMap.get(CalendarServiceTag.Event);\n // readonly #description = CalendarServiceTagsMap.get(CalendarServiceTag.Descr);\n\n constructor(private calendarOdataService: CalendarOdataService, private sortOrderByPipe: SortOrderByPipe) {\n super();\n }\n\n public readonly EventTag: ModelTemplate = {\n tag: this.#event.tag,\n items: (state: SmartSearchState): Observable => {\n const term = state.leftCaretValue?.replace(SINGLE_QUOTES_REGEX, '');\n const searchObj = smartSearchModelFactory(this.#event.tag, term);\n const filter = this.calendarOdataService.updateFilter(searchObj);\n\n return scheduled(\n this.calendarOdataService.searchEvents(filter).pipe(\n map((events) => {\n const filtered = events.filter((event) => !isNil(event.Name) && event.Name.includes(term));\n const uniqueList = getUniqueListByProp(filtered, this.#event.prop).slice(0, 10);\n\n return this.sortOrderByPipe.transform(uniqueList, this.#event.prop);\n })\n ),\n asapScheduler\n );\n },\n itemFormatter: ({ Name }): string => Name,\n addGroupBrackets: true\n };\n\n // public readonly DescriptionTag: ModelTemplate = {\n // tag: this.#description.tag,\n // items: (state: SmartSearchState): Observable => {\n // const term = state.leftCaretValue?.replace(SINGLE_QUOTES_REGEX, '');\n // const searchObj = smartSearchModelFactory(this.#description.tag, term);\n // const filter = this.calendarOdataService.updateFilter(searchObj);\n //\n // return scheduled(\n // this.calendarOdataService.searchEvents(filter).pipe(\n // map((events) => {\n // const filtered = events.filter((event) => !isNil(event.Descr) && event.Descr.includes(term));\n // const uniqueList = getUniqueListByProp(filtered, this.#description.prop).slice(0, 10);\n //\n // return this.sortOrderByPipe.transform(uniqueList, this.#description.prop);\n // })\n // ),\n // asapScheduler\n // );\n // },\n // itemFormatter: ({ Descr }): string => Descr,\n // addGroupBrackets: true\n // };\n}\n","export enum ContactsServiceTag {\n FirstName = 1,\n LastName,\n PrimaryEmail,\n PhoneNumber\n}\n\nexport const ContactsServiceTagsMap: Map = new Map([\n [\n ContactsServiceTag.FirstName,\n {\n tag: 'First Name',\n prop: 'FirstName'\n }\n ],\n [\n ContactsServiceTag.LastName,\n {\n tag: 'Last Name',\n prop: 'LastName'\n }\n ],\n [\n ContactsServiceTag.PrimaryEmail,\n {\n tag: 'Primary Email',\n prop: 'PrimaryEmail'\n }\n ],\n [\n ContactsServiceTag.PhoneNumber,\n {\n tag: 'Phone Number',\n prop: 'PhoneNumber'\n }\n ]\n]);\n","import { Injectable } from '@angular/core';\nimport { SINGLE_QUOTES_REGEX } from '@common';\nimport { ContactODataItem } from '@common/models';\nimport { SortOrderByPipe } from '@common/pipes';\nimport { ContactsService } from '@common/services';\nimport { getUniqueListByProp } from '@common/services/smart-search';\nimport { ContactsServiceTag, ContactsServiceTagsMap } from '@common/services/smart-search/contacts/smart-search-tags-contacts.model';\nimport SmartSearchTemplatesBase from '@common/services/smart-search/smart-search-template-base';\nimport { FilterOptions, getFilterByContains } from '@common/utils/functions/search';\nimport { isNil } from 'lodash';\nimport { ModelTemplate, SmartSearchModelField, SmartSearchState } from 'mbs-ui-kit';\nimport { Observable, asapScheduler, scheduled } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable()\nexport class SmartSearchModelTemplateContactsService extends SmartSearchTemplatesBase {\n readonly #firstName = ContactsServiceTagsMap.get(ContactsServiceTag.FirstName);\n readonly #lastName = ContactsServiceTagsMap.get(ContactsServiceTag.LastName);\n readonly #primaryEmail = ContactsServiceTagsMap.get(ContactsServiceTag.PrimaryEmail);\n readonly #phoneNumber = ContactsServiceTagsMap.get(ContactsServiceTag.PhoneNumber);\n\n constructor(private contactsService: ContactsService, private sortOrderByPipe: SortOrderByPipe) {\n super();\n }\n\n public readonly FirstNameTag: ModelTemplate = {\n tag: this.#firstName.tag,\n items: (state: SmartSearchState): Observable => {\n const term = state.leftCaretValue?.replace(SINGLE_QUOTES_REGEX, '');\n const options: FilterOptions = {\n model: [{ value: term }] as SmartSearchModelField[],\n prop: this.#firstName.prop\n };\n\n this.contactsService.filter = term\n ? this.contactsService.convertFiltersToStr(this.#firstName.prop, getFilterByContains(options))\n : '';\n\n return scheduled(\n this.contactsService.getContactsItemsByGroupId(this.contactsService.groupId).pipe(\n map((res) => res.data),\n map((contacts: ContactODataItem[]) => {\n const filtered = contacts.filter((contact) => !isNil(contact.FirstName) && contact.FirstName.includes(term));\n const uniqueList = getUniqueListByProp(filtered, this.#firstName.prop).slice(0, 10);\n\n return this.sortOrderByPipe.transform(uniqueList, this.#firstName.prop);\n })\n ),\n asapScheduler\n );\n },\n itemFormatter: ({ FirstName }): string => FirstName,\n addGroupBrackets: true\n };\n\n public readonly LastNameTag: ModelTemplate = {\n tag: this.#lastName.tag,\n items: (state: SmartSearchState): Observable => {\n const term = state.leftCaretValue?.replace(SINGLE_QUOTES_REGEX, '');\n const options: FilterOptions = {\n model: [{ value: term }] as SmartSearchModelField[],\n prop: this.#lastName.prop\n };\n\n this.contactsService.filter = term ? this.contactsService.convertFiltersToStr(this.#lastName.prop, getFilterByContains(options)) : '';\n\n return scheduled(\n this.contactsService.getContactsItemsByGroupId(this.contactsService.groupId).pipe(\n map((res) => res.data),\n map((contacts: ContactODataItem[]) => {\n const filtered = contacts.filter((contact) => !isNil(contact.LastName) && contact.LastName.includes(term));\n const uniqueList = getUniqueListByProp(filtered, this.#lastName.prop).slice(0, 10);\n\n return this.sortOrderByPipe.transform(uniqueList, this.#lastName.prop);\n })\n ),\n asapScheduler\n );\n },\n itemFormatter: ({ LastName }): string => LastName,\n addGroupBrackets: true\n };\n\n public readonly PrimaryEmailTag: ModelTemplate = {\n tag: this.#primaryEmail.tag,\n items: (state: SmartSearchState): Observable => {\n const term = state.leftCaretValue?.replace(SINGLE_QUOTES_REGEX, '');\n const options: FilterOptions = {\n model: [{ value: term }] as SmartSearchModelField[],\n prop: this.#primaryEmail.prop\n };\n\n this.contactsService.filter = term\n ? this.contactsService.convertFiltersToStr(this.#primaryEmail.prop, getFilterByContains(options))\n : '';\n\n return scheduled(\n this.contactsService.getContactsItemsByGroupId(this.contactsService.groupId).pipe(\n map((res) => res.data),\n map((contacts: ContactODataItem[]) => {\n const filtered = contacts.filter((contact) => !isNil(contact.PrimaryEmail) && contact.PrimaryEmail.includes(term));\n const uniqueList = getUniqueListByProp(filtered, this.#primaryEmail.prop).slice(0, 10);\n\n return this.sortOrderByPipe.transform(uniqueList, this.#primaryEmail.prop);\n })\n ),\n asapScheduler\n );\n },\n itemFormatter: ({ PrimaryEmail }): string => PrimaryEmail,\n addGroupBrackets: true\n };\n\n public readonly PhoneNumberTag: ModelTemplate = {\n tag: this.#phoneNumber.tag,\n items: (state: SmartSearchState): Observable => {\n const term = state.leftCaretValue?.replace(SINGLE_QUOTES_REGEX, '');\n const options: FilterOptions = {\n model: [{ value: term }] as SmartSearchModelField[],\n prop: this.#phoneNumber.prop\n };\n\n this.contactsService.filter = term\n ? this.contactsService.convertFiltersToStr(this.#phoneNumber.prop, getFilterByContains(options))\n : '';\n\n return scheduled(\n this.contactsService.getContactsItemsByGroupId(this.contactsService.groupId).pipe(\n map((res) => res.data),\n map((contacts: ContactODataItem[]) => {\n const filtered = contacts.filter((contact) => !isNil(contact.PhoneNumber) && contact.PhoneNumber.includes(term));\n const uniqueList = getUniqueListByProp(filtered, this.#phoneNumber.prop).slice(0, 10);\n\n return this.sortOrderByPipe.transform(uniqueList, this.#phoneNumber.prop);\n })\n ),\n asapScheduler\n );\n },\n itemFormatter: ({ PhoneNumber }): string => PhoneNumber,\n addGroupBrackets: true\n };\n}\n","export enum DriveBaseTagsEnum {\n Folder,\n File,\n Name\n}\n\nexport const DriveBaseTagsMap: Map = new Map([\n [DriveBaseTagsEnum.Folder, { tag: 'Folder', prop: 'Type' }],\n [DriveBaseTagsEnum.File, { tag: 'File', prop: 'Type' }],\n [DriveBaseTagsEnum.Name, { tag: 'Name', prop: 'Name' }]\n]);\n","import { Injectable } from '@angular/core';\nimport { AuditODataItem, UserActionType, UserActionTypeArea } from '@common/models';\nimport { ODataPagedResult } from '@common/odata';\nimport { UserActionTypeAreaPipe, UserActionTypePipe } from '@common/pipes';\nimport { AuditService } from '@common/services';\nimport { AuditLogTagsEnum, AuditLogTagsMap, getUniqueListByProp } from '@common/services/smart-search';\nimport SmartSearchTemplatesBase from '@common/services/smart-search/smart-search-template-base';\nimport { FilterOptions, getFilterByContains, getFilterByEqFromEnum } from '@common/utils/functions/search';\nimport { ModelTemplate, SmartSearchState } from 'mbs-ui-kit';\nimport { Observable, asapScheduler, of, scheduled } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\n\n@Injectable()\nexport class SmartSearchModelTemplateAuditLogService extends SmartSearchTemplatesBase {\n readonly #userName = AuditLogTagsMap.get(AuditLogTagsEnum.userName);\n readonly #event = AuditLogTagsMap.get(AuditLogTagsEnum.event);\n readonly #action = AuditLogTagsMap.get(AuditLogTagsEnum.action);\n readonly #from = AuditLogTagsMap.get(AuditLogTagsEnum.from);\n readonly #to = AuditLogTagsMap.get(AuditLogTagsEnum.to);\n\n private keyCache = 'audit-log-name_';\n\n private readonly auditLogService$: Observable>;\n private readonly userActionTypePipe = new UserActionTypePipe();\n private readonly userActionTypeAreaPipe = new UserActionTypeAreaPipe();\n\n constructor(private auditService: AuditService) {\n super();\n this.auditLogService$ = auditService.getAuditLog();\n }\n\n public readonly UserNameTag: ModelTemplate = {\n tag: this.#userName.tag,\n items: (state: SmartSearchState): Observable => {\n const term = state.leftCaretValue;\n const options: FilterOptions = {\n model: [{ value: term }],\n prop: this.#userName.prop\n };\n\n this.auditService.filter = term ? getFilterByContains(options) : '';\n\n // if (this.cache[this.keyCache + term]) {\n // return of(this.cache[this.keyCache + term]) as Observable;\n // }\n\n return scheduled(\n this.auditLogService$.pipe(\n map((res) => res.data),\n map((items: AuditODataItem[]) => {\n const filtered = items.filter((item) => item.UserName.toLowerCase().includes(term));\n\n return getUniqueListByProp(filtered, this.#userName.prop).slice(0, 10);\n }),\n tap(this.writeToCache(this.keyCache + term))\n ),\n asapScheduler\n );\n },\n itemFormatter: ({ UserName }): string => UserName,\n addGroupBrackets: true\n };\n\n public readonly EventTag: ModelTemplate = {\n tag: this.#event.tag,\n items: (state: SmartSearchState): Observable => {\n const term = state.leftCaretValue;\n const options: FilterOptions = {\n model: [{ value: term }],\n prop: this.#event.prop,\n enumItems: UserActionTypeArea\n };\n\n this.auditService.filter = term ? getFilterByEqFromEnum(options) : '';\n\n // if (this.cache[this.keyCache + term]) {\n // return of(this.cache[this.keyCache + term]) as Observable;\n // }\n\n return scheduled(\n this.auditLogService$.pipe(\n map((res) => res.data),\n map((items: AuditODataItem[]) => {\n const filtered = items.filter((item) => item.UserActionTypeArea.toLowerCase().includes(term));\n\n return getUniqueListByProp(filtered, this.#event.prop).slice(0, 10);\n }),\n tap(this.writeToCache(this.keyCache + term))\n ),\n asapScheduler\n );\n },\n itemFormatter: ({ UserActionTypeArea }): string => this.userActionTypeAreaPipe.transform(UserActionTypeArea),\n addGroupBrackets: true\n };\n\n public readonly ActionTag: ModelTemplate = {\n tag: this.#action.tag,\n items: (state: SmartSearchState): Observable => {\n const term = state.leftCaretValue;\n const options: FilterOptions = {\n model: [{ value: term }],\n prop: this.#action.prop,\n enumItems: UserActionType\n };\n\n this.auditService.filter = term ? getFilterByEqFromEnum(options) : '';\n\n // if (this.cache[this.keyCache + term]) {\n // return of(this.cache[this.keyCache + term]) as Observable;\n // }\n\n return scheduled(\n this.auditLogService$.pipe(\n map((res) => res.data),\n map((items: AuditODataItem[]) => {\n const filtered = items.filter((item) => item.UserActionType.toLowerCase().includes(term));\n\n return getUniqueListByProp(filtered, this.#action.prop).slice(0, 10);\n }),\n tap(this.writeToCache(this.keyCache + term))\n ),\n asapScheduler\n );\n },\n itemFormatter: ({ UserActionType }): string => this.userActionTypePipe.transform(UserActionType),\n addGroupBrackets: true\n };\n\n public readonly FromTag: ModelTemplate = {\n tag: this.#from.tag,\n items: (state: SmartSearchState): Observable => of([]) as Observable,\n addGroupBrackets: true\n };\n\n public readonly ToTag: ModelTemplate = {\n tag: this.#to.tag,\n items: (state: SmartSearchState): Observable => of([]) as Observable,\n addGroupBrackets: true\n };\n}\n","export enum AuditLogTagsEnum {\n event = 'event',\n action = 'action',\n userName = 'userName',\n from = 'from',\n to = 'to'\n}\n\nexport const AuditLogTagsMap: Map = new Map([\n [\n AuditLogTagsEnum.event,\n {\n tag: 'Event',\n prop: 'UserActionTypeArea'\n }\n ],\n [\n AuditLogTagsEnum.action,\n {\n tag: 'Action',\n prop: 'UserActionType'\n }\n ],\n [\n AuditLogTagsEnum.userName,\n {\n tag: 'User Name',\n prop: 'UserName'\n }\n ],\n [\n AuditLogTagsEnum.from,\n {\n tag: 'Date From',\n prop: 'Date'\n }\n ],\n [\n AuditLogTagsEnum.to,\n {\n tag: 'To Date',\n prop: 'Date'\n }\n ]\n]);\n","import { DatePipe } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport { ExportResultsOdata, ServiceTypeByAPIEnum } from '@common/models';\nimport { ODataPagedResult } from '@common/odata';\nimport { ServiceTypeToDisplayNamePipe } from '@common/pipes';\nimport { ExportResultsService } from '@common/services';\nimport { ExportResultsTagsEnum, ExportResultsTagsMap, getCustomSizeItems, getUniqueListByProp } from '@common/services/smart-search';\nimport SmartSearchTemplatesBase from '@common/services/smart-search/smart-search-template-base';\nimport { FilterOptions, getFilterByContains, getFilterByDate, getFilterByEqFromEnum } from '@common/utils/functions/search';\nimport { cloneDeep } from 'lodash';\nimport { ModelTemplate, SmartSearchState } from 'mbs-ui-kit';\nimport { Observable, asapScheduler, scheduled } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\n\n@Injectable()\nexport class SmartSearchModelTemplateExportResultsService extends SmartSearchTemplatesBase {\n readonly #userName = ExportResultsTagsMap.get(ExportResultsTagsEnum.userName);\n readonly #fileName = ExportResultsTagsMap.get(ExportResultsTagsEnum.fileName);\n readonly #serviceType = ExportResultsTagsMap.get(ExportResultsTagsEnum.serviceType);\n readonly #dateFrom = ExportResultsTagsMap.get(ExportResultsTagsEnum.dateFrom);\n readonly #dateTo = ExportResultsTagsMap.get(ExportResultsTagsEnum.dateTo);\n readonly #sizeMore = ExportResultsTagsMap.get(ExportResultsTagsEnum.sizeMore);\n readonly #sizeLess = ExportResultsTagsMap.get(ExportResultsTagsEnum.sizeLess);\n\n private keyCache = 'export-results-name_';\n\n private readonly exportResultsService$: Observable>;\n private readonly serviceTypeToDisplayNamePipe: ServiceTypeToDisplayNamePipe = new ServiceTypeToDisplayNamePipe();\n\n constructor(private exportResults: ExportResultsService, private date: DatePipe) {\n super();\n this.exportResultsService$ = exportResults.getExportResults();\n }\n\n public readonly UserNameTag: ModelTemplate = {\n tag: this.#userName.tag,\n items: (state: SmartSearchState): Observable => {\n const term = state.leftCaretValue;\n const options: FilterOptions = {\n model: [{ value: term }],\n prop: this.#userName.prop\n };\n\n this.exportResults.filter = term ? getFilterByContains(options) : '';\n\n // if (this.cache[this.keyCache + term]) {\n // return of(this.cache[this.keyCache + term]) as Observable;\n // }\n\n return scheduled(\n this.exportResultsService$.pipe(\n map((res) => res.data),\n map((results: ExportResultsOdata[]) => {\n const filtered = results.filter((result) => result.UserName.toLowerCase().includes(term));\n\n return getUniqueListByProp(filtered, this.#userName.prop).slice(0, 10);\n }),\n tap(this.writeToCache(this.keyCache + term))\n ),\n asapScheduler\n );\n },\n itemFormatter: ({ UserName }): string => UserName,\n addGroupBrackets: true\n };\n\n public readonly FileNameTag: ModelTemplate = {\n tag: this.#fileName.tag,\n items: (state: SmartSearchState): Observable => {\n const term = state.leftCaretValue;\n const options: FilterOptions = {\n model: [{ value: term }],\n prop: this.#fileName.prop\n };\n\n this.exportResults.filter = term ? getFilterByContains(options) : '';\n\n // if (this.cache[this.keyCache + term]) {\n // return of(this.cache[this.keyCache + term]) as Observable;\n // }\n\n return scheduled(\n this.exportResultsService$.pipe(\n map((res) => res.data),\n map((results: ExportResultsOdata[]) => {\n const filtered = results.filter((result) => result.Name.toLowerCase().includes(term));\n\n return getUniqueListByProp(filtered, this.#fileName.prop).slice(0, 10);\n }),\n tap(this.writeToCache(this.keyCache + term))\n ),\n asapScheduler\n );\n },\n itemFormatter: ({ Name }): string => Name,\n addGroupBrackets: true\n };\n\n public readonly ServiceTypeTag: ModelTemplate = {\n tag: this.#serviceType.tag,\n items: (state: SmartSearchState): Observable => {\n const term = state.leftCaretValue;\n const options: FilterOptions = {\n model: [{ value: term }],\n prop: this.#serviceType.prop,\n enumItems: ServiceTypeByAPIEnum\n };\n\n this.exportResults.filter = term ? getFilterByEqFromEnum(options) : '';\n\n // if (this.cache[this.keyCache + term]) {\n // return of(this.cache[this.keyCache + term]) as Observable;\n // }\n\n return scheduled(\n this.exportResultsService$.pipe(\n map((res) => res.data),\n map((results: ExportResultsOdata[]) => {\n const filtered = results.filter((result) => result.ServiceType.toLowerCase().includes(term));\n\n return getUniqueListByProp(filtered, this.#serviceType.prop).slice(0, 10);\n }),\n tap(this.writeToCache(this.keyCache + term))\n ),\n asapScheduler\n );\n },\n itemFormatter: ({ ServiceType }): string => this.serviceTypeToDisplayNamePipe.transform(ServiceType),\n addGroupBrackets: true\n };\n\n public readonly DateFromTag: ModelTemplate = {\n tag: this.#dateFrom.tag,\n items: (state: SmartSearchState): Observable => {\n const term = state.leftCaretValue;\n const options: FilterOptions = {\n model: [{ value: term }],\n prop: this.#dateFrom.prop\n };\n\n this.exportResults.filter = term ? getFilterByDate(options) : '';\n\n // if (this.cache[this.keyCache + term]) {\n // return of(this.cache[this.keyCache + term]) as Observable;\n // }\n\n return scheduled(\n this.exportResultsService$.pipe(\n map((res) => res.data),\n map((results: ExportResultsOdata[]) => {\n const cloneResults = cloneDeep(results).map((result) => ({ ...result, CreateDate: this.date.transform(result.CreateDate) }));\n const filtered = cloneResults.filter((result) => result.CreateDate.includes(term));\n\n return getUniqueListByProp(filtered, this.#dateFrom.prop).slice(0, 10);\n }),\n tap(this.writeToCache(this.keyCache + term))\n ),\n asapScheduler\n );\n },\n itemFormatter: ({ CreateDate }): string => this.date.transform(CreateDate, 'mediumDate'),\n addGroupBrackets: true\n };\n\n public readonly DateToTag: ModelTemplate = {\n tag: this.#dateTo.tag,\n items: (state: SmartSearchState): Observable => {\n const term = state.leftCaretValue;\n const options: FilterOptions = {\n model: [{ value: term }],\n prop: this.#dateTo.prop\n };\n\n this.exportResults.filter = term ? getFilterByDate(options) : '';\n\n // if (this.cache[this.keyCache + term]) {\n // return of(this.cache[this.keyCache + term]) as Observable;\n // }\n\n return scheduled(\n this.exportResultsService$.pipe(\n map((res) => res.data),\n map((results: ExportResultsOdata[]) => {\n const cloneResults = cloneDeep(results).map((result) => ({ ...result, CreateDate: this.date.transform(result.CreateDate) }));\n const filtered = cloneResults.filter((result) => result.CreateDate.includes(term));\n\n return getUniqueListByProp(filtered, this.#dateTo.prop).slice(0, 10);\n }),\n tap(this.writeToCache(this.keyCache + term))\n ),\n asapScheduler\n );\n },\n itemFormatter: ({ CreateDate }): string => this.date.transform(CreateDate, 'mediumDate'),\n addGroupBrackets: true\n };\n\n public readonly SizeMoreThanTag: ModelTemplate = {\n tag: this.#sizeMore.tag,\n items: (state: SmartSearchState): Observable => getCustomSizeItems(state, this.updateExportResultsFilter.bind(this)),\n itemFormatter: (value: string): string => value,\n addGroupBrackets: true\n };\n\n public readonly SizeMoreLessTag: ModelTemplate = {\n tag: this.#sizeLess.tag,\n items: (state: SmartSearchState): Observable => getCustomSizeItems(state, this.updateExportResultsFilter.bind(this)),\n itemFormatter: (value: string): string => value,\n addGroupBrackets: true\n };\n\n private updateExportResultsFilter(term: string): void {\n this.exportResults.filter = term || '';\n }\n}\n","export enum ExportResultsTagsEnum {\n userName = 'User Name',\n fileName = 'File Name',\n serviceType = 'Service Type',\n dateFrom = 'Date From',\n dateTo = 'Date To',\n sizeMore = 'Size More',\n sizeLess = 'Size Less'\n}\n\nexport const ExportResultsTagsMap: Map = new Map([\n [\n ExportResultsTagsEnum.userName,\n {\n tag: 'User Name',\n prop: 'UserName'\n }\n ],\n [\n ExportResultsTagsEnum.fileName,\n {\n tag: 'File Name',\n prop: 'Name'\n }\n ],\n [\n ExportResultsTagsEnum.serviceType,\n {\n tag: 'Service Type',\n prop: 'ServiceType'\n }\n ],\n [\n ExportResultsTagsEnum.dateFrom,\n {\n tag: 'Date From',\n prop: 'CreateDate'\n }\n ],\n [\n ExportResultsTagsEnum.dateTo,\n {\n tag: 'To Date',\n prop: 'CreateDate'\n }\n ],\n [\n ExportResultsTagsEnum.sizeMore,\n {\n tag: 'Size More Than',\n prop: 'Size'\n }\n ],\n [\n ExportResultsTagsEnum.sizeLess,\n {\n tag: 'Size Less Than',\n prop: 'Size'\n }\n ]\n]);\n","import { Injectable } from '@angular/core';\nimport { Mail } from '@common/models';\nimport { MailOdataService } from '@common/services';\nimport { getCustomSizeItems, getUniqueListByProp, MailTagsEnum, MailTagsMap } from '@common/services/smart-search';\nimport SmartSearchTemplatesBase from '@common/services/smart-search/smart-search-template-base';\nimport { I18NextPipe } from 'angular-i18next';\nimport { ModelTemplate, naturalSort, SmartSearchState } from 'mbs-ui-kit';\nimport { asapScheduler, Observable, of, scheduled } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\n\n@Injectable()\nexport class SmartSearchModelTemplateMailService extends SmartSearchTemplatesBase {\n readonly #from = MailTagsMap.get(MailTagsEnum.from);\n readonly #to = MailTagsMap.get(MailTagsEnum.to);\n readonly #subject = MailTagsMap.get(MailTagsEnum.subject);\n readonly #sizeMore = MailTagsMap.get(MailTagsEnum.sizeMore);\n readonly #sizeLess = MailTagsMap.get(MailTagsEnum.sizeLess);\n readonly #withAttachment = MailTagsMap.get(MailTagsEnum.withAttachment);\n readonly #backupArchive = MailTagsMap.get(MailTagsEnum.backupArchive);\n readonly #dateTo = MailTagsMap.get(MailTagsEnum.dateTo);\n readonly #dateFrom = MailTagsMap.get(MailTagsEnum.dateFrom);\n\n readonly #optionYes = this.i18nPipe.transform('common.yes', { format: 'title' });\n readonly #optionNo = this.i18nPipe.transform('common.no', { format: 'title' });\n\n private keyCache = 'mail-name_';\n\n constructor(private mailService: MailOdataService, private i18nPipe: I18NextPipe) {\n super();\n }\n\n public readonly FromTag: ModelTemplate = {\n tag: this.#from.tag,\n items: (state: SmartSearchState): Observable => this.getSearchMails(state, this.#from.prop),\n itemFormatter: ({ From }): string => From,\n addGroupBrackets: true\n };\n\n public readonly ToTag: ModelTemplate = {\n tag: this.#to.tag,\n items: (state: SmartSearchState): Observable => this.getSearchMails(state, this.#to.prop),\n itemFormatter: ({ To }): string => To,\n addGroupBrackets: true\n };\n\n public readonly SubjectTag: ModelTemplate = {\n tag: this.#subject.tag,\n items: (state: SmartSearchState): Observable => this.getSearchMails(state, this.#subject.prop),\n itemFormatter: ({ Subject }): string => Subject,\n addGroupBrackets: true\n };\n\n public readonly SizeMoreThanTag: ModelTemplate = {\n tag: this.#sizeMore.tag,\n items: (state: SmartSearchState): Observable => getCustomSizeItems(state, this.updateMailFilter.bind(this)),\n itemFormatter: (value: string): string => value,\n addGroupBrackets: true\n };\n\n public readonly SizeMoreLessTag: ModelTemplate = {\n tag: this.#sizeLess.tag,\n items: (state: SmartSearchState): Observable => getCustomSizeItems(state, this.updateMailFilter.bind(this)),\n itemFormatter: (value: string): string => value,\n addGroupBrackets: true\n };\n\n public readonly WithAttachmentTag: ModelTemplate = {\n tag: this.#withAttachment.tag,\n items: (): Observable => of([this.#optionYes, this.#optionNo]) as Observable,\n itemFormatter: (model): string => model\n };\n\n public readonly BackupArchiveTag: ModelTemplate = {\n tag: this.#backupArchive.tag,\n items: (): Observable => of([this.#optionYes, this.#optionNo]) as Observable,\n itemFormatter: (model): string => model\n };\n\n public readonly DateToTag: ModelTemplate = {\n tag: this.#dateTo.tag,\n items: (): Observable => of([]) as Observable,\n addGroupBrackets: true\n };\n\n public readonly DateFromTag: ModelTemplate = {\n tag: this.#dateFrom.tag,\n items: (): Observable => of([]) as Observable,\n addGroupBrackets: true\n };\n\n private getSearchMails(state: SmartSearchState, prop: string): Observable {\n const term: string = state.leftCaretValue;\n const request = this.getSearchRequest(term, prop);\n\n return scheduled(\n request.pipe(\n tap(() => this.writeToCache(this.keyCache + term)),\n map((statistics: Mail[]) => {\n const filtered = statistics.filter((stat) => (stat[prop] as string).toLowerCase().includes(term));\n return getUniqueListByProp(filtered, prop)\n .sort((a, b) => naturalSort((a[prop] as string).toLowerCase(), (b[prop] as string).toLowerCase()))\n .slice(0, 10);\n })\n ),\n asapScheduler\n );\n }\n\n private getSearchRequest(term: string, prop: string): Observable {\n switch (prop) {\n case MailTagsEnum.from:\n return this.mailService.getEmailsInFromSection(term);\n case MailTagsEnum.to:\n return this.mailService.getEmailsInToSection(term);\n case MailTagsEnum.subject:\n return this.mailService.getListOfSubjects(term);\n default:\n return of([]);\n }\n }\n\n private updateMailFilter(term: string): void {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.mailService.filter = term || '';\n }\n}\n","export enum MailTagsEnum {\n from = 'From',\n to = 'To',\n subject = 'Subject',\n size = 'Size',\n sizeFilter = 'Filter',\n sizeValue = 'Value',\n sizeMagnitude = 'Magnitude',\n dateTo = 'Date To',\n dateFrom = 'Date From',\n sizeMore = 'Size More',\n sizeLess = 'Size Less',\n withAttachment = 'With Attachments',\n backupArchive = 'Backup Archive'\n}\n\nexport const MailTagsMap: Map = new Map([\n [\n MailTagsEnum.from,\n {\n tag: 'From',\n prop: 'From'\n }\n ],\n [\n MailTagsEnum.to,\n {\n tag: 'To',\n prop: 'To'\n }\n ],\n [\n MailTagsEnum.sizeMore,\n {\n tag: 'Size More Than',\n prop: 'Size'\n }\n ],\n [\n MailTagsEnum.sizeLess,\n {\n tag: 'Size Less Than',\n prop: 'Size'\n }\n ],\n [\n MailTagsEnum.subject,\n {\n tag: 'Subject',\n prop: 'Subject'\n }\n ],\n [\n MailTagsEnum.withAttachment,\n {\n tag: 'With Attachments',\n prop: 'HasAttach'\n }\n ],\n [\n MailTagsEnum.backupArchive,\n {\n tag: 'Backup Archive',\n prop: 'IsArchived'\n }\n ],\n [\n MailTagsEnum.dateTo,\n {\n tag: 'To Date',\n prop: 'ReceiveDate'\n }\n ],\n [\n MailTagsEnum.dateFrom,\n {\n tag: 'Date From',\n prop: 'ReceiveDate'\n }\n ]\n]);\n","import { CurrencyPipe, DatePipe } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport { InvoiceOData } from '@common/models';\nimport { ODataPagedResult } from '@common/odata';\nimport { InvoiceStateToDisplayNamePipe, SortOrderByPipe } from '@common/pipes';\nimport { InvoicesService } from '@common/services';\nimport { PaymentsTagsEnum, PaymentsTagsMap, getUniqueListByProp } from '@common/services/smart-search';\nimport SmartSearchTemplatesBase from '@common/services/smart-search/smart-search-template-base';\nimport { cloneDeep, isNil } from 'lodash';\nimport { ModelTemplate, SmartSearchState } from 'mbs-ui-kit';\nimport { Observable, asapScheduler, scheduled } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\n\n@Injectable()\nexport class SmartSearchModelTemplatePaymentsService extends SmartSearchTemplatesBase {\n readonly #state = PaymentsTagsMap.get(PaymentsTagsEnum.state);\n readonly #quantity = PaymentsTagsMap.get(PaymentsTagsEnum.quantity);\n readonly #price = PaymentsTagsMap.get(PaymentsTagsEnum.price);\n readonly #amount = PaymentsTagsMap.get(PaymentsTagsEnum.amount);\n readonly #date = PaymentsTagsMap.get(PaymentsTagsEnum.date);\n readonly #expireDate = PaymentsTagsMap.get(PaymentsTagsEnum.expireDate);\n readonly #invoiceId = PaymentsTagsMap.get(PaymentsTagsEnum.invoiceId);\n\n private keyCache = 'payments-name_';\n private paymentsService$: Observable>;\n\n constructor(\n private paymentsService: InvoicesService,\n private currencyPipe: CurrencyPipe,\n private datePipe: DatePipe,\n private sortOrderByPipe: SortOrderByPipe,\n private invoiceStateToDisplayNamePipe: InvoiceStateToDisplayNamePipe\n ) {\n super();\n this.paymentsService$ = this.paymentsService.getInvoices();\n }\n\n public readonly StateTag: ModelTemplate = {\n tag: this.#state.tag,\n items: (state: SmartSearchState): Observable => {\n const term = state.leftCaretValue;\n\n this.paymentsService.filter = term || '';\n\n // if (this.cache[this.keyCache + term]) {\n // return of(this.cache[this.keyCache + term]) as Observable;\n // }\n\n return scheduled(\n this.paymentsService$.pipe(\n map((res) => res.data),\n map((invoices: InvoiceOData[]) => {\n const filtered = invoices.filter((invoice) => !isNil(invoice.State) && invoice.State.includes(term));\n const uniqueList = getUniqueListByProp(filtered, this.#state.prop).slice(0, 10);\n\n return this.sortOrderByPipe.transform(uniqueList, this.#state.prop);\n }),\n tap(this.writeToCache(this.keyCache + term))\n ),\n asapScheduler\n );\n },\n itemFormatter: ({ State }): string => this.invoiceStateToDisplayNamePipe.transform(State),\n addGroupBrackets: true\n };\n\n public readonly QuantityTag: ModelTemplate = {\n tag: this.#quantity.tag,\n items: (state: SmartSearchState): Observable => {\n const term = state.leftCaretValue;\n\n this.paymentsService.filter = term || '';\n\n // if (this.cache[this.keyCache + term]) {\n // return of(this.cache[this.keyCache + term]) as Observable;\n // }\n\n return scheduled(\n this.paymentsService$.pipe(\n map((res) => res.data),\n map((invoices: InvoiceOData[]) => {\n const filtered = invoices.filter((invoice) => !isNil(invoice.Quantity) && String(invoice.Quantity).includes(term));\n const uniqueList = getUniqueListByProp(filtered, this.#quantity.prop).slice(0, 10);\n\n return this.sortOrderByPipe.transform(uniqueList, 'Quantity', 'number');\n }),\n tap(this.writeToCache(this.keyCache + term))\n ),\n asapScheduler\n );\n },\n itemFormatter: ({ Quantity }): string => `${Quantity}`,\n addGroupBrackets: true\n };\n\n public readonly PriceTag: ModelTemplate = {\n tag: this.#price.tag,\n items: (state: SmartSearchState): Observable => {\n const term = state.leftCaretValue;\n\n this.paymentsService.filter = term || '';\n\n // if (this.cache[this.keyCache + term]) {\n // return of(this.cache[this.keyCache + term]) as Observable;\n // }\n\n return scheduled(\n this.paymentsService$.pipe(\n map((res) => res.data),\n map((invoices: InvoiceOData[]) => {\n const filtered = invoices.filter((invoice) => !isNil(invoice.Price) && String(invoice.Price).includes(term));\n const uniqueList = getUniqueListByProp(filtered, this.#price.prop).slice(0, 10);\n\n return this.sortOrderByPipe.transform(uniqueList, 'Price', 'number');\n }),\n tap(this.writeToCache(this.keyCache + term))\n ),\n asapScheduler\n );\n },\n itemFormatter: ({ Price }): string => this.currencyPipe.transform(Price / 100, 'USD', 'symbol'),\n addGroupBrackets: true\n };\n\n public readonly AmountTag: ModelTemplate = {\n tag: this.#amount.tag,\n items: (state: SmartSearchState): Observable => {\n const term = state.leftCaretValue;\n\n this.paymentsService.filter = term || '';\n\n // if (this.cache[this.keyCache + term]) {\n // return of(this.cache[this.keyCache + term]) as Observable;\n // }\n\n return scheduled(\n this.paymentsService$.pipe(\n map((res) => res.data),\n map((invoices: InvoiceOData[]) => {\n const filtered = invoices.filter((invoice) => !isNil(invoice.Amount) && String(invoice.Amount).includes(term));\n const uniqueList = getUniqueListByProp(filtered, this.#amount.prop).slice(0, 10);\n\n return this.sortOrderByPipe.transform(uniqueList, 'Amount', 'number');\n }),\n tap(this.writeToCache(this.keyCache + term))\n ),\n asapScheduler\n );\n },\n itemFormatter: ({ Amount }): string => this.currencyPipe.transform(Amount / 100, 'USD', 'symbol'),\n addGroupBrackets: true\n };\n\n public readonly DateTag: ModelTemplate = {\n tag: this.#date.tag,\n items: (state: SmartSearchState): Observable => {\n const term = state.leftCaretValue;\n\n this.paymentsService.filter = term || '';\n\n // if (this.cache[this.keyCache + term]) {\n // return of(this.cache[this.keyCache + term]) as Observable;\n // }\n\n return scheduled(\n this.paymentsService$.pipe(\n map((res) => res.data),\n map((invoices: InvoiceOData[]) => {\n const cloneInvoices = cloneDeep(invoices).map((invoice) => ({ ...invoice, Date: this.datePipe.transform(invoice.Date) }));\n const filtered = cloneInvoices.filter((invoice) => invoice.Date && invoice.Date.includes(term));\n const uniqueList = getUniqueListByProp(filtered, this.#date.prop).slice(0, 10);\n\n return this.sortOrderByPipe.transform(uniqueList, 'Date', 'Date');\n }),\n tap(this.writeToCache(this.keyCache + term))\n ),\n asapScheduler\n );\n },\n itemFormatter: ({ Date }): string => this.datePipe.transform(Date, 'mediumDate'),\n addGroupBrackets: true\n };\n\n public readonly ExpireDateTag: ModelTemplate = {\n tag: this.#expireDate.tag,\n items: (state: SmartSearchState): Observable => {\n const term = state.leftCaretValue;\n\n this.paymentsService.filter = term || '';\n\n // if (this.cache[this.keyCache + term]) {\n // return of(this.cache[this.keyCache + term]) as Observable;\n // }\n\n return scheduled(\n this.paymentsService$.pipe(\n map((res) => res.data),\n map((invoices: InvoiceOData[]) => {\n const cloneInvoices = cloneDeep(invoices).map((invoice) => ({\n ...invoice,\n ExpireDate: this.datePipe.transform(invoice.ExpireDate)\n }));\n const filtered = cloneInvoices.filter((invoice) => invoice.ExpireDate && invoice.ExpireDate.includes(term));\n const uniqueList = getUniqueListByProp(filtered, this.#expireDate.prop).slice(0, 10);\n\n return this.sortOrderByPipe.transform(uniqueList, 'ExpireDate', 'Date');\n }),\n tap(this.writeToCache(this.keyCache + term))\n ),\n asapScheduler\n );\n },\n itemFormatter: ({ ExpireDate }): string => this.datePipe.transform(ExpireDate, 'mediumDate'),\n addGroupBrackets: true\n };\n\n public readonly InvoiceIdTag: ModelTemplate = {\n tag: this.#invoiceId.tag,\n items: (state: SmartSearchState): Observable => {\n const term = state.leftCaretValue;\n\n this.paymentsService.filter = term || '';\n\n // if (this.cache[this.keyCache + term]) {\n // return of(this.cache[this.keyCache + term]) as Observable;\n // }\n\n return scheduled(\n this.paymentsService$.pipe(\n map((res) => res.data),\n map((invoices: InvoiceOData[]) => {\n const filtered = invoices.filter((invoice) => invoice.OrderId?.includes(term));\n const uniqueList = getUniqueListByProp(filtered, this.#invoiceId.prop).slice(0, 10);\n\n return this.sortOrderByPipe.transform(uniqueList, 'OrderId');\n }),\n tap(this.writeToCache(this.keyCache + term))\n ),\n asapScheduler\n );\n },\n itemFormatter: ({ OrderId }): string => OrderId,\n addGroupBrackets: true\n };\n}\n","export enum PaymentsTagsEnum {\n state = 'state',\n quantity = 'quantity',\n price = 'price',\n amount = 'amount',\n date = 'date',\n expireDate = 'expireDate',\n invoiceId = 'invoiceId'\n}\n\nexport const PaymentsTagsMap: Map = new Map([\n [\n PaymentsTagsEnum.state,\n {\n tag: 'State',\n prop: 'State'\n }\n ],\n [\n PaymentsTagsEnum.quantity,\n {\n tag: 'Quantity',\n prop: 'Quantity'\n }\n ],\n [\n PaymentsTagsEnum.price,\n {\n tag: 'Price',\n prop: 'Price'\n }\n ],\n [\n PaymentsTagsEnum.amount,\n {\n tag: 'Amount',\n prop: 'Amount'\n }\n ],\n [\n PaymentsTagsEnum.date,\n {\n tag: 'Date',\n prop: 'Date'\n }\n ],\n [\n PaymentsTagsEnum.expireDate,\n {\n tag: 'Expires',\n prop: 'ExpireDate'\n }\n ],\n [\n PaymentsTagsEnum.invoiceId,\n {\n tag: 'Invoice Id',\n prop: 'OrderId'\n }\n ]\n]);\n","import { DatePipe } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport { FilterActionType } from '@common';\nimport { UserReport } from '@common/models';\nimport { SortOrderByPipe } from '@common/pipes';\nimport { ReportsService } from '@common/services';\nimport { getUniqueListByProp, ReportsUserTagsEnum, ReportsUserTagsMap } from '@common/services/smart-search';\nimport SmartSearchTemplatesBase from '@common/services/smart-search/smart-search-template-base';\nimport { cloneDeep, isNil } from 'lodash';\nimport { ModelTemplate, SmartSearchState } from 'mbs-ui-kit';\nimport { asapScheduler, Observable, scheduled } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\n\n@Injectable()\nexport class SmartSearchModelTemplateReportsService extends SmartSearchTemplatesBase {\n readonly #userName = ReportsUserTagsMap.get(ReportsUserTagsEnum.userName);\n readonly #license = ReportsUserTagsMap.get(ReportsUserTagsEnum.license);\n readonly #userState = ReportsUserTagsMap.get(ReportsUserTagsEnum.userState);\n\n private keyCache = 'reports-name_';\n private userReport$: Observable;\n\n constructor(private reportsService: ReportsService, private datePipe: DatePipe, private sortOrderByPipe: SortOrderByPipe) {\n super();\n this.userReport$ = reportsService.userReports().pipe(map((res) => res.data));\n }\n\n public readonly UserName: ModelTemplate = {\n tag: this.#userName.tag,\n items: (state: SmartSearchState): Observable => {\n const term = state.leftCaretValue;\n\n this.reportsService.filter = term || '';\n\n // if (this.cache[this.keyCache + term]) {\n // return of(this.cache[this.keyCache + term]) as Observable;\n // }\n\n return scheduled(\n this.userReport$.pipe(\n map((reports: UserReport[]) => {\n const filtered = reports.filter((report) => !isNil(report.UserName) && report.UserName.includes(term));\n const uniqueList = getUniqueListByProp(filtered, this.#userName.prop).slice(0, 10);\n\n return this.sortOrderByPipe.transform(uniqueList, this.#userName.prop);\n }),\n tap(this.writeToCache(this.keyCache + term))\n ),\n asapScheduler\n );\n },\n itemFormatter: ({ UserName }): string => UserName,\n addGroupBrackets: true\n };\n\n public readonly License: ModelTemplate = {\n tag: this.#license.tag,\n items: (state: SmartSearchState): Observable => {\n const term = state.leftCaretValue;\n\n this.reportsService.filter = term || '';\n\n // if (this.cache[this.keyCache + term]) {\n // return of(this.cache[this.keyCache + term]) as Observable;\n // }\n\n return scheduled(\n this.userReport$.pipe(\n map((reports: UserReport[]) => {\n const cloneInvoices = cloneDeep(reports).map((report) => ({\n ...report,\n LicenseExpireDate: this.datePipe.transform(report.LicenseExpireDate)\n }));\n const filtered = cloneInvoices.filter((report) => report.LicenseExpireDate?.includes(term));\n const uniqueList = getUniqueListByProp(filtered, this.#license.prop).slice(0, 10);\n\n return this.sortOrderByPipe.transform(uniqueList, this.#license.prop, 'Date');\n }),\n tap(this.writeToCache(this.keyCache + term))\n ),\n asapScheduler\n );\n },\n itemFormatter: ({ LicenseExpireDate }): string => this.datePipe.transform(LicenseExpireDate, 'mediumDate'),\n addGroupBrackets: true\n };\n\n public readonly UserState: ModelTemplate = {\n tag: this.#userState.tag,\n items: (state: SmartSearchState): Observable => {\n const term = state.leftCaretValue;\n\n this.reportsService.filter = term || '';\n\n // if (this.cache[this.keyCache + term]) {\n // return of(this.cache[this.keyCache + term]) as Observable;\n // }\n\n return scheduled(\n this.userReport$.pipe(\n map((reports: UserReport[]) => {\n const filtered = reports.filter((report) => !isNil(report.InBackup));\n\n return getUniqueListByProp(filtered, this.#userState.prop).slice(0, 10);\n }),\n tap(this.writeToCache(this.keyCache + term))\n ),\n asapScheduler\n );\n },\n itemFormatter: ({ InBackup }): string => (InBackup ? FilterActionType.enabledUsers : FilterActionType.disabledUsers),\n addGroupBrackets: true\n };\n}\n","export enum ReportsServiceTagsEnum {\n service = 'Service',\n serviceStatus = 'Service Status',\n lastBackupDate = 'Last Backup Date',\n size = 'Size',\n backupStatus = 'Backup Status'\n}\n\nexport const ReportsServiceTagsMap: Map = new Map([\n [\n ReportsServiceTagsEnum.service,\n {\n tag: 'Service',\n prop: 'Service'\n }\n ],\n [\n ReportsServiceTagsEnum.serviceStatus,\n {\n tag: 'Service Status',\n prop: 'ServiceStatus'\n }\n ],\n [\n ReportsServiceTagsEnum.lastBackupDate,\n {\n tag: 'Last Backup Date',\n prop: 'LastBackupDate'\n }\n ],\n [\n ReportsServiceTagsEnum.size,\n {\n tag: 'Size',\n prop: 'Size'\n }\n ],\n [\n ReportsServiceTagsEnum.backupStatus,\n {\n tag: 'Backup Status',\n prop: 'BackupStatus'\n }\n ]\n]);\n\nexport enum ReportsUserTagsEnum {\n userName = 'User Name',\n license = 'License',\n userState = 'User State',\n mail = 'Mail',\n drive = 'Drive',\n contacts = 'Contacts',\n calendar = 'Calendar'\n}\n\nexport const ReportsUserTagsMap: Map = new Map([\n [\n ReportsUserTagsEnum.userName,\n {\n tag: 'User Name',\n prop: 'UserName'\n }\n ],\n [\n ReportsUserTagsEnum.license,\n {\n tag: 'License',\n prop: 'ExpireDate'\n }\n ],\n [\n ReportsUserTagsEnum.userState,\n {\n tag: 'User',\n prop: 'InBackup'\n }\n ],\n [\n ReportsUserTagsEnum.mail,\n {\n tag: 'Mail',\n prop: 'Mail'\n }\n ],\n [\n ReportsUserTagsEnum.drive,\n {\n tag: 'Drive',\n prop: 'Drive'\n }\n ],\n [\n ReportsUserTagsEnum.contacts,\n {\n tag: 'Contacts',\n prop: 'Contacts'\n }\n ],\n [\n ReportsUserTagsEnum.calendar,\n {\n tag: 'Calendar',\n prop: 'Calendar'\n }\n ]\n]);\n","import { Injectable } from '@angular/core';\nimport { RetentionPolicyOdata, ServiceTypeByAPIEnum } from '@common/models';\nimport { ODataPagedResult } from '@common/odata';\nimport { ServiceTypeToDisplayNamePipe } from '@common/pipes';\nimport { RetentionPolicyService } from '@common/services';\nimport { RetentionPolicyTagsEnum, RetentionPolicyTagsMap, getNestedObjectByPath, getUniqueListByProp } from '@common/services/smart-search';\nimport SmartSearchTemplatesBase from '@common/services/smart-search/smart-search-template-base';\nimport { FilterOptions, getFilterByContains, getFilterByEq, getFilterByEqFromEnum } from '@common/utils/functions/search';\nimport { I18NextPipe } from 'angular-i18next';\nimport { ModelTemplate, SmartSearchState, naturalSort } from 'mbs-ui-kit';\nimport { Observable, asapScheduler, scheduled } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable()\nexport class SmartSearchModelTemplateRetentionPolicyService extends SmartSearchTemplatesBase {\n readonly #serviceType = RetentionPolicyTagsMap.get(RetentionPolicyTagsEnum.serviceType);\n readonly #policyName = RetentionPolicyTagsMap.get(RetentionPolicyTagsEnum.policyName);\n readonly #legalHold = RetentionPolicyTagsMap.get(RetentionPolicyTagsEnum.legalHold);\n\n readonly #optionYes = this.i18nPipe.transform('common.yes', { format: 'title' });\n readonly #optionNo = this.i18nPipe.transform('common.no', { format: 'title' });\n\n private readonly retentionPolicy$: Observable>;\n private readonly serviceTypeToDisplayNamePipe: ServiceTypeToDisplayNamePipe = new ServiceTypeToDisplayNamePipe();\n\n constructor(private retentionPolicyService: RetentionPolicyService, private i18nPipe: I18NextPipe) {\n super();\n this.retentionPolicy$ = retentionPolicyService.getPolicies();\n }\n\n public readonly NameTag: ModelTemplate = {\n tag: this.#policyName.tag,\n items: (state: SmartSearchState): Observable => {\n const term = state.leftCaretValue;\n const options: FilterOptions = {\n model: [{ value: term }],\n prop: this.#policyName.prop\n };\n\n this.retentionPolicyService.filter = term ? getFilterByContains(options) : '';\n\n return scheduled(\n this.retentionPolicy$.pipe(\n map((res) => res.data),\n map((policies) => {\n const filtered = policies.filter((policy) => policy.Name.toLowerCase().includes(term));\n const uniqueList = getUniqueListByProp(filtered, this.#policyName.prop).slice(0, 10);\n\n return uniqueList.sort((a, b) =>\n naturalSort(\n getNestedObjectByPath(a, this.#policyName.prop).toLowerCase(),\n getNestedObjectByPath(b, this.#policyName.prop).toLowerCase()\n )\n );\n })\n ),\n asapScheduler\n ) as Observable;\n },\n itemFormatter: ({ Name }): string => Name,\n addGroupBrackets: true\n };\n\n public readonly TypeTag: ModelTemplate = {\n tag: this.#serviceType.tag,\n items: (state: SmartSearchState): Observable => {\n const term = state.leftCaretValue;\n const options: FilterOptions = {\n model: [{ value: term }],\n prop: this.#serviceType.prop,\n enumItems: ServiceTypeByAPIEnum\n };\n\n this.retentionPolicyService.filter = term ? getFilterByEqFromEnum(options) : '';\n\n return scheduled(\n this.retentionPolicy$.pipe(\n map((res) => res.data),\n map((policies) => {\n const filtered = policies.filter((policy: RetentionPolicyOdata) => policy.ServiceType.toLowerCase().includes(term));\n const uniqueList = getUniqueListByProp(filtered, this.#serviceType.prop).slice(0, 10);\n\n return uniqueList.sort((a, b) =>\n naturalSort(\n getNestedObjectByPath(a, this.#serviceType.prop).toLowerCase(),\n getNestedObjectByPath(b, this.#serviceType.prop).toLowerCase()\n )\n );\n })\n ),\n asapScheduler\n ) as Observable;\n },\n itemFormatter: ({ ServiceType }): string => this.serviceTypeToDisplayNamePipe.transform(ServiceType),\n addGroupBrackets: true\n };\n\n public readonly LegalHoldTag: ModelTemplate = {\n tag: this.#legalHold.tag,\n items: (state: SmartSearchState): Observable => {\n const term = state.leftCaretValue;\n const options: FilterOptions = {\n model: [{ value: term }],\n prop: this.#legalHold.prop\n };\n\n this.retentionPolicyService.filter = term ? getFilterByEq(options, false) : '';\n\n return scheduled(\n this.retentionPolicy$.pipe(\n map((res) => res.data),\n map((policies) => {\n const filtered = policies.filter((policy: RetentionPolicyOdata) => String(policy.HasLegalHold).includes(term));\n const uniqueList = getUniqueListByProp(filtered, this.#legalHold.prop).slice(0, 10);\n\n return uniqueList.sort((a, b) =>\n naturalSort(\n getNestedObjectByPath(a, this.#legalHold.prop).toLowerCase(),\n getNestedObjectByPath(b, this.#legalHold.prop).toLowerCase()\n )\n );\n })\n ),\n asapScheduler\n ) as Observable;\n },\n itemFormatter: ({ HasLegalHold }): string => (HasLegalHold ? this.#optionYes : this.#optionNo),\n addGroupBrackets: true\n };\n}\n","export enum RetentionPolicyTagsEnum {\n policyName = 'policyName',\n serviceType = 'serviceType',\n legalHold = 'legalHold'\n}\nexport const RetentionPolicyTagsMap: Map = new Map([\n [\n RetentionPolicyTagsEnum.policyName,\n {\n tag: 'Policy Name',\n prop: 'Name'\n }\n ],\n [\n RetentionPolicyTagsEnum.serviceType,\n {\n tag: 'Service Type',\n prop: 'ServiceType'\n }\n ],\n [\n RetentionPolicyTagsEnum.legalHold,\n {\n tag: 'Disabled',\n prop: 'HasLegalHold'\n }\n ]\n]);\n","import { Injectable } from '@angular/core';\nimport { ServiceTypeByAPIEnum, TaskManagerOdata } from '@common/models';\nimport { ODataPagedResult } from '@common/odata';\nimport { OperationTypeToDisplayNamePipe, ServiceTypeToDisplayNamePipe } from '@common/pipes';\nimport { TaskManagerService } from '@common/services';\nimport { TaskManagerTagsEnum, TaskManagerTagsMap, getUniqueListByProp } from '@common/services/smart-search';\nimport SmartSearchTemplatesBase from '@common/services/smart-search/smart-search-template-base';\nimport { FilterOptions, getFilterByContains, getFilterByEq, getFilterByEqFromEnum } from '@common/utils/functions/search';\nimport { ModelTemplate, SmartSearchState } from 'mbs-ui-kit';\nimport { Observable, asapScheduler, scheduled } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\n\n@Injectable()\nexport class SmartSearchModelTemplateTaskManagerService extends SmartSearchTemplatesBase {\n readonly #userName = TaskManagerTagsMap.get(TaskManagerTagsEnum.userName);\n readonly #serviceType = TaskManagerTagsMap.get(TaskManagerTagsEnum.serviceType);\n readonly #task = TaskManagerTagsMap.get(TaskManagerTagsEnum.task);\n readonly #status = TaskManagerTagsMap.get(TaskManagerTagsEnum.status);\n\n private keyCache = 'task-manger-name_';\n\n private readonly taskManagerService$: Observable>;\n private readonly serviceTypeToDisplayNamePipe: ServiceTypeToDisplayNamePipe = new ServiceTypeToDisplayNamePipe();\n private readonly operationTypeToDisplayNamePipe: OperationTypeToDisplayNamePipe = new OperationTypeToDisplayNamePipe();\n\n constructor(private taskManagerService: TaskManagerService) {\n super();\n this.taskManagerService$ = taskManagerService.getTasks();\n }\n\n public readonly UserNameTag: ModelTemplate = {\n tag: this.#userName.tag,\n items: (state: SmartSearchState): Observable => {\n const term = state.leftCaretValue;\n const options: FilterOptions = {\n model: [{ value: term }],\n prop: this.#userName.prop\n };\n\n this.taskManagerService.filter = term ? getFilterByContains(options) : '';\n\n // if (this.cache[this.keyCache + term]) {\n // return of(this.cache[this.keyCache + term]) as Observable;\n // }\n\n return scheduled(\n this.taskManagerService$.pipe(\n map((res) => res.data),\n map((tasks: TaskManagerOdata[]) => {\n const filtered = tasks.filter((task) => task.UserName.toLowerCase().includes(term));\n\n return getUniqueListByProp(filtered, this.#userName.prop).slice(0, 10);\n }),\n tap(this.writeToCache(this.keyCache + term))\n ),\n asapScheduler\n ) as Observable;\n },\n itemFormatter: ({ UserName }): string => UserName,\n addGroupBrackets: true\n };\n\n public readonly ServiceTypeTag: ModelTemplate = {\n tag: this.#serviceType.tag,\n items: (state: SmartSearchState): Observable => {\n const term = state.leftCaretValue;\n const options: FilterOptions = {\n model: [{ value: term }],\n prop: this.#serviceType.prop,\n enumItems: ServiceTypeByAPIEnum\n };\n\n this.taskManagerService.filter = term ? getFilterByEqFromEnum(options) : '';\n\n // if (this.cache[this.keyCache + term]) {\n // return of(this.cache[this.keyCache + term]) as Observable;\n // }\n\n return scheduled(\n this.taskManagerService$.pipe(\n map((res) => res.data),\n map((tasks: TaskManagerOdata[]) => {\n const filtered = tasks.filter((task) => task.ServiceType.toLowerCase().includes(term));\n\n return getUniqueListByProp(filtered, this.#serviceType.prop).slice(0, 10);\n }),\n tap(this.writeToCache(this.keyCache + term))\n ),\n asapScheduler\n ) as Observable;\n },\n itemFormatter: ({ ServiceType }): string => this.serviceTypeToDisplayNamePipe.transform(ServiceType),\n addGroupBrackets: true\n };\n\n public readonly TaskTag: ModelTemplate = {\n tag: this.#task.tag,\n items: (state: SmartSearchState): Observable => {\n const term = state.leftCaretValue;\n const options: FilterOptions = {\n model: [{ value: term }],\n prop: this.#task.prop\n };\n\n this.taskManagerService.filter = term ? getFilterByEq(options) : '';\n\n // if (this.cache[this.keyCache + term]) {\n // return of(this.cache[this.keyCache + term]) as Observable;\n // }\n\n return scheduled(\n this.taskManagerService$.pipe(\n map((res) => res.data),\n map((tasks: TaskManagerOdata[]) => {\n const filtered = tasks.filter((task) => task.OperationType.toLowerCase().includes(term));\n\n return getUniqueListByProp(filtered, this.#task.prop).slice(0, 10);\n }),\n tap(this.writeToCache(this.keyCache + term))\n ),\n asapScheduler\n ) as Observable;\n },\n itemFormatter: ({ OperationType }): string => this.operationTypeToDisplayNamePipe.transform(OperationType),\n addGroupBrackets: true\n };\n\n public readonly StatusTag: ModelTemplate = {\n tag: this.#status.tag,\n items: (state: SmartSearchState): Observable => {\n const term = state.leftCaretValue;\n const options: FilterOptions = {\n model: [{ value: term }],\n prop: this.#status.prop\n };\n\n this.taskManagerService.filter = term ? getFilterByEq(options) : '';\n\n // if (this.cache[this.keyCache + term]) {\n // return of(this.cache[this.keyCache + term]) as Observable;\n // }\n\n return scheduled(\n this.taskManagerService$.pipe(\n map((res) => res.data),\n map((tasks: TaskManagerOdata[]) => {\n const filtered = tasks.filter((task) => task.State.toLowerCase().includes(term));\n\n return getUniqueListByProp(filtered, this.#status.prop).slice(0, 10);\n }),\n tap(this.writeToCache(this.keyCache + term))\n ),\n asapScheduler\n ) as Observable;\n },\n itemFormatter: ({ State }): string => State,\n addGroupBrackets: true\n };\n}\n","export enum TaskManagerTagsEnum {\n userName = 'userName',\n serviceType = 'serviceType',\n task = 'task',\n status = 'status'\n}\n\nexport const TaskManagerTagsMap: Map = new Map([\n [\n TaskManagerTagsEnum.userName,\n {\n tag: 'User Name',\n prop: 'UserName'\n }\n ],\n [\n TaskManagerTagsEnum.serviceType,\n {\n tag: 'Service Type',\n prop: 'ServiceType'\n }\n ],\n [\n TaskManagerTagsEnum.task,\n {\n tag: 'Task',\n prop: 'OperationType'\n }\n ],\n [\n TaskManagerTagsEnum.status,\n {\n tag: 'Status',\n prop: 'State'\n }\n ]\n]);\n","import { Injectable } from '@angular/core';\nimport { SearchODataOptions, SiteItemODataModel } from '@common/models';\nimport { ODataPagedResult } from '@common/odata';\nimport { SortOrderByPipe } from '@common/pipes';\nimport { SiteItemsODataService } from '@common/services';\nimport { getUniqueListByProp } from '@common/services/smart-search';\nimport { SharePointTagsEnum, SharePointTagsMap } from '@common/services/smart-search/sharePoint/smart-search-tags-sharepoint.model';\nimport SmartSearchTemplatesBase from '@common/services/smart-search/smart-search-template-base';\nimport { smartSearchModelFactory } from '@common/utils/functions/search';\nimport { isNil } from 'lodash';\nimport { ModelTemplate, SmartSearchState } from 'mbs-ui-kit';\nimport { Observable, asapScheduler, scheduled } from 'rxjs';\nimport { map, take } from 'rxjs/operators';\n\n@Injectable()\nexport class SmartSearchModelTemplateSharePointService extends SmartSearchTemplatesBase {\n readonly #siteName = SharePointTagsMap.get(SharePointTagsEnum.SiteName);\n readonly #fileName = SharePointTagsMap.get(SharePointTagsEnum.FileName);\n readonly #mixinName = SharePointTagsMap.get(SharePointTagsEnum.Mixin);\n\n constructor(private siteItemsService: SiteItemsODataService, private sortOrderByPipe: SortOrderByPipe) {\n super();\n }\n\n public readonly SiteNameTag: ModelTemplate = {\n tag: this.#siteName.tag,\n items: (state: SmartSearchState): Observable => {\n const term = state.leftCaretValue;\n const options: SearchODataOptions = this.getSearchODataOptions({\n filter: this.siteItemsService.updateFilter(smartSearchModelFactory(this.#siteName.tag, term)) || '',\n orderBy: ''\n });\n\n return scheduled(\n this.siteItemsService.siteItems(options).pipe(\n take(1),\n map((res: ODataPagedResult) => res.data),\n map((sites: SiteItemODataModel[]) => {\n const filtered = sites.filter((site) => !isNil(site.Name) && site.Name.toLowerCase().includes(term));\n const uniqueList = getUniqueListByProp(filtered, this.#siteName.prop).slice(0, 10);\n\n return this.sortOrderByPipe.transform(uniqueList, this.#siteName.prop);\n })\n ),\n asapScheduler\n );\n },\n itemFormatter: ({ Name }): string => Name,\n addGroupBrackets: true\n };\n\n public readonly FileNameTag: ModelTemplate = {\n tag: this.#fileName.tag,\n items: (state: SmartSearchState): Observable => {\n const term = state.leftCaretValue;\n const options: SearchODataOptions = this.getSearchODataOptions({\n filter: this.getFileFilter(state, term) || '',\n orderBy: 'Type asc'\n });\n\n return scheduled(\n this.siteItemsService.findDriveItemsOfSiteList(options).pipe(\n take(1),\n map((res: ODataPagedResult) => res.data),\n map((files: SiteItemODataModel[]) => {\n const filtered = files.filter((file) => !isNil(file.Name) && file.Name.toLowerCase().includes(term));\n const uniqueList = getUniqueListByProp(filtered, this.#fileName.prop).slice(0, 10);\n\n return this.sortOrderByPipe.transform(uniqueList, this.#fileName.prop);\n })\n ),\n asapScheduler\n );\n },\n itemFormatter: ({ Name }): string => Name,\n addGroupBrackets: true\n };\n\n private getFileFilter(state: SmartSearchState, term: string): string {\n if (state.usedTags[0] === this.#siteName.tag.toLowerCase()) {\n // we need check first position `SiteName` tag for search file in site\n const smartSearchObjs = [];\n const value = state.model.find((i) => i['tagValue'] === this.#siteName.tag)['fields'][0].value;\n\n smartSearchObjs.push(smartSearchModelFactory(this.#mixinName.tag, value));\n smartSearchObjs.push(smartSearchModelFactory(this.#fileName.tag, term));\n\n return this.siteItemsService.updateFilter(smartSearchObjs);\n } else {\n return this.siteItemsService.updateFilter(smartSearchModelFactory(this.#fileName.tag, term));\n }\n }\n\n private getSearchODataOptions(options: { filter: string; orderBy: string }): SearchODataOptions {\n const { filter, orderBy } = options || {};\n\n return {\n filter,\n orderBy,\n page: 1,\n pageSize: 50\n };\n }\n}\n","export enum SharePointTagsEnum {\n Mixin,\n SiteName,\n FileName\n}\n\nexport const SharePointTagsMap: Map }> = new Map([\n [SharePointTagsEnum.Mixin, { tag: 'Folder/File of Site', prop: 'SiteName' }],\n [SharePointTagsEnum.SiteName, { tag: 'Site Name', prop: 'Name' }],\n [SharePointTagsEnum.FileName, { tag: 'Folder/File Name', prop: 'Name' }]\n]);\n","export default abstract class SmartSearchTemplatesBase {\n protected readonly storedTimeout = 4 * 60 * 60 * 1000;\n\n protected cache: {\n [key: string]: any[];\n } = {};\n protected cacheTimeout: {\n [key: string]: any;\n } = {};\n\n /*\n * Save API results in memory\n * @param term current term\n */\n protected writeToCache(term: string): (x: TData[]) => void {\n return (res: TData[]) => {\n this.cache[term] = res;\n clearTimeout(this.cacheTimeout[term + '_timeout']);\n this.cacheTimeout[term + '_timeout'] = setTimeout(() => delete this.cache[term], this.storedTimeout);\n };\n }\n}\n","import { replaceNbsps } from '@common/utils';\nimport { get } from 'lodash';\nimport { SmartSearchModel, SmartSearchModelField, SmartSearchState } from 'mbs-ui-kit';\nimport { Observable, of } from 'rxjs';\n\nexport function getUniqueListByProp(items: T[], prop: string): T[] {\n return items.reduce((uniqueList: T[], item: T): T[] => {\n return uniqueList.some((uniqueItem: T) => getNestedObjectByPath(uniqueItem, prop) === getNestedObjectByPath(item, prop))\n ? uniqueList\n : [...uniqueList, item];\n }, [] as T[]);\n}\n\nexport function getNestedObjectByPath(obj: any, path: string): any {\n const parsedPath = path.split('/');\n\n parsedPath.forEach((path) => {\n obj = obj?.[path];\n });\n\n return obj;\n}\n\nexport function getSizeFilter(tag: string, defaultTagName = 'Size Less Than'): sizeFilterEnum {\n return tag === defaultTagName ? sizeFilterEnum.less : sizeFilterEnum.more;\n}\n\nexport function getSize(value: string): string {\n if (!value) return '';\n\n return value.replace(/[^0-9]/g, '');\n}\n\nexport function getSizeMagnitude(value: string): sizeMagnitudesEnum {\n if (!value) return sizeMagnitudesEnum.Mb;\n\n const magnitude = value.replace(/[^a-z]/gi, '').toLowerCase();\n switch (magnitude) {\n case sizeMagnitudesEnum.Gb.toLowerCase():\n return sizeMagnitudesEnum.Gb;\n case sizeMagnitudesEnum.Mb.toLowerCase():\n return sizeMagnitudesEnum.Mb;\n case sizeMagnitudesEnum.Kb.toLowerCase():\n return sizeMagnitudesEnum.Kb;\n case sizeMagnitudesEnum.b.toLowerCase():\n return sizeMagnitudesEnum.b;\n default:\n return sizeMagnitudesEnum.Mb;\n }\n}\n\nexport const getStringItemFormatter = (prop: string): string => (prop.split(/\\s/).length > 1 ? `{${prop}}` : prop);\n\nexport const getDefaultStringItemFormatter = (prop: unknown): string => String(prop);\n\nexport function getCustomSizeItems(state: SmartSearchState, callback: (t) => void): Observable {\n const sizes = ['500 KB', '1 MB', '10 MB', '50 MB', '100 MB', '500 MB', '1 GB', '10 GB', '50 GB', '100 GB', '150 GB'];\n const term = state.leftCaretValue;\n\n callback(term);\n\n return of(sizes.filter((size: string) => size.toLowerCase().includes(term.toLowerCase())));\n}\n\nexport const convertToPropSmartSearchModel = (data: string): SmartSearchModelField[] => new Array({ value: data });\n\nexport function getValueFromSmartSearchModel(model: SmartSearchModel, prop: string): string {\n const value = get(model[prop], '[0].value', null) as string;\n return typeof value === 'string' ? replaceNbsps(value) : value;\n}\n\nexport enum sizeFilterEnum {\n more = 'more',\n less = 'less'\n}\n\nexport enum sizeMagnitudesEnum {\n Gb = 'Gb',\n Mb = 'Mb',\n Kb = 'Kb',\n b = 'b'\n}\n\nexport function isSmartSearchPersist(): (curr: SmartSearchModel) => boolean {\n let last: SmartSearchModel = {};\n\n return function (curr: SmartSearchModel) {\n const isPersist = !curr || (Object.keys(last).length === 0 && Object.keys(curr).length === 0);\n\n last = curr;\n\n return isPersist;\n };\n}\n","export enum UserGroupsTagsEnum {\n Path = 1,\n Name,\n AutoActivation\n}\n\nexport const UserGroupsTagsMap: Map = new Map([\n [UserGroupsTagsEnum.Path, { tagKey: ':grid.path', prop: 'Path' }],\n [UserGroupsTagsEnum.Name, { tagKey: ':grid.name', prop: 'Name' }],\n [\n UserGroupsTagsEnum.AutoActivation,\n {\n tagKey: ':grid.autoActivate',\n prop: 'AutoActivationMode'\n }\n ]\n]);\n","import { Injectable } from '@angular/core';\nimport { AzureGroup, OrganizationalUnit } from '@common/models';\nimport { SortOrderByPipe } from '@common/pipes';\nimport { AuthService, AzureGroupsService } from '@common/services';\nimport { OrganizationalUnitsService } from '@common/services/organizational-units.service';\nimport { getUniqueListByProp } from '@common/services/smart-search';\nimport SmartSearchTemplatesBase from '@common/services/smart-search/smart-search-template-base';\nimport { UserGroupsTagsEnum, UserGroupsTagsMap } from '@common/services/smart-search/user-groups/smart-search-tags-user-groups.model';\nimport { I18NextPipe } from 'angular-i18next';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { isNil } from 'lodash';\nimport { ModelTemplate, SmartSearchState } from 'mbs-ui-kit';\nimport { Observable, asapScheduler, scheduled } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable()\nexport class SmartSearchModelTemplateUserGroupsService extends SmartSearchTemplatesBase {\n readonly #name = this.isGoogle ? UserGroupsTagsMap.get(UserGroupsTagsEnum.Path) : UserGroupsTagsMap.get(UserGroupsTagsEnum.Name);\n\n public readonly moduleUsers = I18_NAMESPACE_APPS_UI.users;\n\n get isGoogle(): boolean {\n return this.authService.isGoogle;\n }\n\n constructor(\n private authService: AuthService,\n private i18nPipe: I18NextPipe,\n private sortOrderByPipe: SortOrderByPipe,\n private azureGroupsService: AzureGroupsService,\n private orgUnitsService: OrganizationalUnitsService\n ) {\n super();\n }\n\n public readonly NameTag: ModelTemplate = {\n tag: this.i18nPipe.transform(this.moduleUsers + this.#name.tagKey, { format: 'title' }),\n items: (state: SmartSearchState): Observable => {\n const term = state.leftCaretValue;\n\n this.groupService().filter = term || '';\n\n return scheduled(\n this.groupService()\n .fetchGroups()\n .pipe(\n map((res) => res.data),\n map((groups: AzureGroup[] | OrganizationalUnit[]) => {\n const filtered = groups.filter((group) =>\n this.isGoogle\n ? !isNil(group['Path']) && group['Path'].includes(term)\n : !isNil(group['Name']) && group['Name'].includes(term)\n );\n const uniqueList = getUniqueListByProp(filtered, this.#name.prop).slice(0, 10);\n\n return this.sortOrderByPipe.transform(uniqueList, this.#name.prop);\n })\n ),\n asapScheduler\n );\n },\n itemFormatter: (value): string => (this.isGoogle ? value['Path'] : value['Name']),\n addGroupBrackets: true\n };\n\n private groupService(): OrganizationalUnitsService | AzureGroupsService {\n return this.isGoogle ? this.orgUnitsService : this.azureGroupsService;\n }\n}\n","import { Inject } from '@angular/core';\nimport { BrowserStorage, WINDOW } from '@common';\n\nexport abstract class AbstractStorage {\n protected readonly prefix = BrowserStorage.Prefix;\n\n protected constructor(@Inject(WINDOW) protected window: Window) {}\n\n abstract set(key: string, data: T): void;\n\n abstract get(key: string): T;\n\n abstract remove(key: string): void;\n}\n","import { EventEmitter, Inject, Injectable } from '@angular/core';\nimport { WINDOW } from '@common';\nimport { AbstractStorage } from '@common/services/storage/abstract-storage';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LocalStorageService extends AbstractStorage {\n #change = new EventEmitter();\n\n get change(): Observable {\n return this.#change.asObservable();\n }\n\n constructor(@Inject(WINDOW) protected window: Window) {\n super(window);\n }\n\n listenStorageChange(): void {\n this.window.addEventListener('storage', (event) => {\n if (event.storageArea === localStorage) {\n this.#change.emit(event);\n }\n });\n }\n\n set(key: string, data: T): void {\n this.window.localStorage.setItem(this.prefix + key, JSON.stringify(data));\n }\n\n get(key: string): T {\n try {\n return JSON.parse(this.window.localStorage.getItem(this.prefix + key)) as T;\n } catch (e) {\n throw new Error(`${String(e.name)}: ${String(e.message)}`);\n }\n }\n\n remove(key: string): void {\n this.window.localStorage.removeItem(this.prefix + key);\n }\n\n removeAllListeners(): void {\n this.window.removeAllListeners('storage');\n }\n}\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { BrowserStorage, CustomerProblem } from '@common';\nimport {\n GridFiltersLStorageStateBHistory,\n SPanelFiltersLStorageStateBHistory\n} from '@common/models/backup-history/filters-backupHistory.model';\nimport { PersistentStateServiceBase } from 'mbs-ui-kit';\n\nexport class PersistentState {\n [BrowserStorage.CustomerProblem]: CustomerProblem[] = [];\n [BrowserStorage.BHistoryGridFilters]: GridFiltersLStorageStateBHistory = null;\n [BrowserStorage.BHistorySPanelFilters]: SPanelFiltersLStorageStateBHistory = null;\n [BrowserStorage.SPointDisabled] = null;\n [BrowserStorage.SPointNoSiteBackup] = null;\n [BrowserStorage.SkippedItemsHistory] = null;\n [BrowserStorage.UpdateInterval] = 30;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class PersistentStateService extends PersistentStateServiceBase {\n public readonly eventEmitter$: EventEmitter;\n\n constructor() {\n super(PersistentState, new EventEmitter());\n this.eventEmitter$ = this.getEmitterInstance();\n this.eventEmitter$.emit(BrowserStorage.Prefix);\n this.listenStorageChange();\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { WINDOW } from '@common';\nimport { AbstractStorage } from '@common/services/storage/abstract-storage';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SessionStorageService extends AbstractStorage {\n constructor(@Inject(WINDOW) protected window: Window) {\n super(window);\n }\n\n public set(key: string, data: T): void {\n this.window.sessionStorage.setItem(this.prefix + key, JSON.stringify(data));\n }\n\n public get(key: string): T {\n try {\n return JSON.parse(this.window.sessionStorage.getItem(this.prefix + key)) as T;\n } catch (e) {\n console.error(`${String(e.name)}: ${String(e.message)}`);\n return null;\n }\n }\n\n public remove(key: string): void {\n this.window.sessionStorage.removeItem(this.prefix + key);\n }\n}\n","import { ElementRef } from '@angular/core';\nimport { BOOLEAN_OPERATOR, COMPARISON_OPERATOR } from '@common';\nimport { DisplayNameItemType } from '@common/models';\nimport { getSize, getSizeMagnitude, sizeFilterEnum, sizeMagnitudesEnum } from '@common/services/smart-search/smart-search.helper';\nimport { isValidDate, quoteODataEncoding } from '@common/utils';\nimport { isArray } from 'lodash';\nimport { SmartSearchModel, SmartSearchModelField, Template } from 'mbs-ui-kit';\nimport { Observable, of } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, switchMap } from 'rxjs/operators';\n\nexport type FilterOptions = {\n model: SmartSearchModelField[];\n prop: string;\n enumItems?: DisplayNameItemType;\n};\n\nexport const containsWrapper = (prop: string, term: string): string => {\n return `contains(tolower(${prop}),'${quoteODataEncoding(term).toLowerCase()}')`;\n};\n\nexport const getFilterByContains = (options: FilterOptions): string => {\n const { model, prop } = options;\n const term = isArray(model) ? model.map((word) => word.value).join(' ') : '';\n\n return containsWrapper(prop, term);\n};\nexport const getFilterByEq = (options: FilterOptions, quotes = true): string => {\n const { model, prop } = options;\n const term = isArray(model) ? model.map((word) => word.value).join(' ') : '';\n\n return quotes ? `${prop} ${COMPARISON_OPERATOR.eq} '${term}'` : `${prop} ${COMPARISON_OPERATOR.eq} ${term}`;\n};\n\nexport const getFilterByDate = (options: FilterOptions): string => {\n const { model, prop } = options;\n const term = isArray(model) ? model.map((word) => word.value).join(' ') : '';\n const date = new Date(term);\n\n if (isValidDate(date)) {\n const formattedFrom = new Date(date.setHours(0, 0, 0, 0));\n const formattedTo = new Date(date.setHours(23, 59, 59, 999));\n\n return `${prop} ${COMPARISON_OPERATOR.gt} ${formattedFrom.toISOString()} ${BOOLEAN_OPERATOR.and} ${prop} ${\n COMPARISON_OPERATOR.lt\n } ${formattedTo.toISOString()}`;\n }\n\n return `${prop} ${COMPARISON_OPERATOR.lt} '${term}' ${BOOLEAN_OPERATOR.and} ${prop} ${COMPARISON_OPERATOR.gt} '${term}'`;\n};\n\nexport const getFilterByDateRange = (options: FilterOptions, direction: 'from' | 'to'): string => {\n const { model, prop } = options;\n const term = isArray(model) ? model.map((word) => word.value).join(' ') : '';\n const date = new Date(term);\n\n if (isValidDate(date)) {\n const formattedFrom = new Date(date.setHours(0, 0, 0, 0));\n const formattedTo = new Date(date.setHours(23, 59, 59, 999));\n\n switch (direction) {\n case 'from':\n return `${prop} ${COMPARISON_OPERATOR.gt} ${formattedFrom.toISOString()}`;\n case 'to':\n return `${prop} ${COMPARISON_OPERATOR.lt} ${formattedTo.toISOString()}`;\n default:\n return '';\n }\n }\n\n return '';\n};\n\nexport const getFilterByEqFromEnum = (options: FilterOptions, quotes = true): string => {\n const { model, prop, enumItems } = options;\n const term = isArray(model)\n ? model\n .map((word: { value: string }) => {\n const pair = Object.entries(enumItems).find(([, value]) => value.displayName.toLowerCase() === word.value.toLowerCase());\n\n return pair ? pair[0] : word.value;\n })\n .join('')\n : '';\n\n return quotes ? `${prop} ${COMPARISON_OPERATOR.eq} '${term}'` : `${prop} ${COMPARISON_OPERATOR.eq} ${term}`;\n};\n\nexport const getFilterBySize = (options: FilterOptions & { filter: sizeFilterEnum }): string => {\n const { model, prop, filter } = options;\n const term = isArray(model) ? model.map((word) => word.value).join(' ') : '';\n const sign = filter == sizeFilterEnum.less ? COMPARISON_OPERATOR.lt : COMPARISON_OPERATOR.gt;\n const size = getSize(term);\n const magnitude = getSizeMagnitude(term);\n let bytes = +size;\n\n if (size && magnitude) {\n if (magnitude.toLowerCase() == sizeMagnitudesEnum.Gb.toLowerCase()) bytes = +size * 1024 * 1024 * 1024;\n if (magnitude.toLowerCase() == sizeMagnitudesEnum.Mb.toLowerCase()) bytes = +size * 1024 * 1024;\n if (magnitude.toLowerCase() == sizeMagnitudesEnum.Kb.toLowerCase()) bytes = +size * 1024;\n }\n\n return `${prop} ${sign} ${Math.trunc(bytes)}`;\n};\n\nexport const filterByWords = (obj: SmartSearchModel): string => {\n return obj.words.map((word) => word.value).join(' ');\n};\n\nexport function createTemplate(tag: string, getItems: (string) => Observable = null): Template {\n if (getItems == null) {\n getItems = () => of([]);\n }\n\n return {\n tag,\n items: (text$: Observable) => {\n return text$.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n switchMap((text) => getItems(text))\n );\n },\n itemFormatter: (value: string) => (typeof value === 'string' && value.split(/\\s/).length > 1 ? `{${value.trim()}}` : value)\n };\n}\n\nexport function firstOrDefault(arr: string[]): string | null {\n return arr?.length > 0 ? arr[0] : null;\n}\n\nexport function addTypeResetToInputSearch(elRef: ElementRef): (events: string) => void {\n let flag = false;\n\n return function (event: string): void {\n if (event) {\n if (flag) return;\n\n queueMicrotask(() => {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n const button = elRef.nativeElement.querySelector('.ctrl-clear') as HTMLElement;\n\n button && button.setAttribute('type', 'reset');\n flag = true;\n });\n } else {\n flag = false;\n }\n };\n}\n\nexport function smartSearchModelFactory(key: string, data: string | string[]): SmartSearchModel {\n if (!data) new Error('Something wrong. There is no data to convert to search model. Look smartSearchModelFactory function');\n\n if (isArray(data)) {\n return {\n [key]: data.map((v) => ({ value: v }))\n };\n } else {\n return {\n [key]: [{ value: data }]\n };\n }\n}\n","import { AttachedPolicies, AttachedPolicy } from '@common/models';\nimport { cloneDeep, isArray } from 'lodash';\n\nexport function extendedPolicies(p: AttachedPolicies): AttachedPolicies {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n const policies = cloneDeep(removeOdataContext(p));\n\n for (const key in policies) {\n if (!Object.prototype.hasOwnProperty.call(policies, key) || key === '@odata.context') continue;\n\n const p = policies[key] as AttachedPolicy[];\n\n p.sort((a, b) => (a.Text > b.Text ? -1 : 1));\n p.unshift(\n ...p.splice(\n p.findIndex((i) => i.IsDefault),\n 1\n )\n );\n\n if (isArray(p) && p.length > 0 && p.some((p) => p.Selected)) {\n p.unshift(getEmptyAttachedPolicy());\n }\n\n if (isArray(p) && p.length > 0 && p.some((p) => p.IsDefault)) {\n p.forEach((policy: AttachedPolicy) => (policy.IsDefault ? (policy.Text = policy.Text + ' (Default)') : policy));\n }\n\n if (isArray(p) && p.length > 0 && p.some((p) => p.HasLegalHold)) {\n p.forEach((policy: AttachedPolicy) => (policy.HasLegalHold ? (policy.Text = policy.Text + ' (Disabled)') : policy));\n }\n }\n\n return policies;\n}\n\nfunction removeOdataContext(policies: AttachedPolicies) {\n const { '@odata.context': context, ...rest } = policies;\n\n return rest;\n}\n\nfunction getEmptyAttachedPolicy(): AttachedPolicy {\n return {\n Disabled: false,\n HasLegalHold: false,\n IsDefault: false,\n Selected: false,\n Text: 'No Retention Policy / Domain Default',\n Value: undefined // Don't use `null` because null is reserved for no value at all in method `getSelectedPolicyId(policies)`.\n };\n}\n","import { Injectable } from '@angular/core';\nimport { ToastSettings } from '@common';\nimport { I18NextPipe } from 'angular-i18next';\nimport { MbsPopupType, ToastService } from 'mbs-ui-kit';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ToastFactory {\n constructor(private i18nPipe: I18NextPipe, private toastService: ToastService) {}\n\n showToast(settings: ToastSettings): void {\n const toastTitle = this.#getToastTitle(settings);\n const toastBody = this.#getToastBody(settings);\n const toastMethod = this.#getToastMethod(settings);\n\n if (toastMethod) {\n this.toastService[toastMethod](toastBody, toastTitle);\n }\n }\n\n #getToastTitle(settings: ToastSettings): string {\n switch (settings.type) {\n case MbsPopupType.success:\n return this.i18nPipe.transform('toast.success.title', { format: 'title' });\n case MbsPopupType.danger:\n return this.i18nPipe.transform('toast.error.title', { format: 'title' });\n case MbsPopupType.info:\n return this.i18nPipe.transform('toast.info.title', { format: 'title' });\n case MbsPopupType.warning:\n return this.i18nPipe.transform('toast.warning.title', { format: 'title' });\n default:\n return null;\n }\n }\n\n #getToastBody(settings: ToastSettings): string {\n return settings.body.key\n ? this.i18nPipe.transform(\n settings.nameSpace ? settings.nameSpace + settings.body.key : settings.body.key,\n settings.body.options ? settings.body.options : { format: 'capitalize' }\n )\n : null;\n }\n\n #getToastMethod(settings: ToastSettings): string {\n switch (settings.type) {\n case MbsPopupType.success:\n return 'success';\n case MbsPopupType.danger:\n return 'error';\n case MbsPopupType.info:\n return 'info';\n case MbsPopupType.warning:\n return 'warn';\n default:\n throw new Error('Unknown toast service method!');\n }\n }\n\n showForbiddenPermissionToast(event: Event, isAvailable: boolean): void {\n if (isAvailable) return;\n\n event.preventDefault();\n\n this.showToast({\n type: MbsPopupType.danger,\n body: { key: 'toast.body.fileDownload' }\n });\n }\n}\n","import { SmartSearchValues } from '@common/models';\nimport { SmartSearchModel, SmartSearchModelField } from 'mbs-ui-kit';\nimport { SPACE_REGEX } from 'mbs-ui-kit/utils/constants';\n\nexport class SmartSearchHelper {\n public static getValues(model: SmartSearchModel, separator = ' '): SmartSearchValues {\n return Object.fromEntries(\n Object.entries(model).map(([key, value]) => [\n key,\n (value as SmartSearchModelField[]).map((d) => (d.condition || '') + d.value.replace(SPACE_REGEX, separator))\n ])\n );\n }\n\n public static getJoinedValue(value: SmartSearchValues, key: string, separator = ' '): string {\n return value?.[key]?.join(separator) || '';\n }\n}\n","import { COLORS, getRandomHEX } from '@common/utils';\n\nexport function getColors(requiredLength: number): string[] {\n if (COLORS.length >= requiredLength) return COLORS;\n\n const missingColors: string[] = [];\n const countOfMissing: number = requiredLength - COLORS.length;\n\n for (let i = 0; i < countOfMissing; i++) {\n missingColors.push(getRandomHEX());\n }\n\n return COLORS.concat(missingColors);\n}\n","export function getRandomHEX(): string {\n return '#' + (((1 << 24) * Math.random()) | 0).toString(16);\n}\n","export enum ServiceColors {\n Mail = '#4285F4',\n Email = '#4285F4',\n Drive = '#EA4335',\n Contacts = '#34A853',\n Calendar = '#FBBC05',\n SharePoint = '#4dbfd9',\n TeamDrives = '#4dbfd9'\n}\n\nexport const COLORS = [\n '#3366cc',\n '#dc3912',\n '#109618',\n '#990099',\n '#0099c6',\n '#dd4477',\n '#66aa00',\n '#b82e2e',\n '#316395',\n '#994499',\n '#22aa99',\n '#aaaa11',\n '#6633cc',\n '#e67300',\n '#8b0707',\n '#329262',\n '#5574a6',\n '#3b3eac',\n '#b77322'\n];\n\nexport interface PieChartData {\n count: {\n label: string[];\n data: number[];\n };\n size: {\n label: string[];\n data: number[];\n };\n}\n","import { Chart } from 'chart.js';\nimport { isNil } from 'lodash';\n\nexport function noItemDisplayChart(baseChart: Chart): void {\n if (isNil(baseChart)) {\n throw new Error('Caught error manually: The `noItemDisplayChart` method has been null or undefined');\n }\n\n const { datasets } = baseChart.data;\n let hasData = false;\n\n for (let i = 0; i < datasets.length; i += 1) {\n const dataset = datasets[i];\n const { data } = dataset;\n\n hasData = data.length > 0 || !data.every((item) => item === 0);\n }\n\n // TODO: after release 4.0 need delete\n // const chartData = baseChart.data;\n // const chartDataSets = chartData?.datasets?.[0]?.data as number[];\n // const isNotData: boolean = isArray(chartDataSets) && (chartDataSets.length === 0 || chartDataSets.every((item) => item === 0));\n\n if (!hasData) {\n const { ctx, width, height } = baseChart;\n\n baseChart.clear();\n ctx.save();\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n ctx.fillText('No Data to Display', width / 2, height / 2);\n ctx.restore();\n }\n}\n","import { BackupHistoryItem, ServiceType } from '@common/models';\nimport { ServiceColors, getServiceUiInfo, toFixed } from '@common/utils';\nimport { ChartDataset } from 'chart.js';\n\nexport function prepareLastDaysBackupSizeDataSet(\n data: BackupHistoryItem[],\n serviceType: ServiceType,\n allowedTypes: ServiceType[] = []\n): ChartDataset[] {\n if (serviceType === ServiceType.All && data?.length > 0) {\n const allTypes: ServiceType[] = [];\n\n for (const [key] of Object.entries(data[0].Usage)) {\n if (ServiceType[key] >= 0 && allowedTypes.includes(ServiceType[key])) {\n allTypes.push(ServiceType[key]);\n }\n }\n\n return allTypes.map((type: ServiceType) => {\n const arrayData = data.reduce(\n (acc: BackupHistoryItem[], item: BackupHistoryItem) => [...acc, toFixed(item.Usage[ServiceType[type]])],\n []\n );\n\n return {\n data: arrayData,\n label: getServiceUiInfo(type).displayName,\n backgroundColor: ServiceColors[ServiceType[type]] as ServiceColors,\n hoverBackgroundColor: ServiceColors[ServiceType[type]] as ServiceColors\n };\n }) as ChartDataset[];\n } else {\n const arrayData = data.reduce(\n (acc: BackupHistoryItem[], item: BackupHistoryItem) => [...acc, toFixed(item.Usage[ServiceType[serviceType]])],\n []\n );\n return [\n {\n data: arrayData,\n label: getServiceUiInfo(serviceType).displayName,\n backgroundColor: ServiceColors[ServiceType[serviceType]] as ServiceColors,\n hoverBackgroundColor: ServiceColors[ServiceType[serviceType]] as ServiceColors\n }\n ] as ChartDataset[];\n }\n}\n","import { PieDataItem } from '@common/models';\nimport { PieChartData, toFixed } from '@common/utils';\n\nexport function preparePieDataAndLabels(pieData: PieDataItem[]): PieChartData {\n const labelsCount: string[] = [];\n const labelsSize: string[] = [];\n const dataCount: number[] = [];\n const dataSize: number[] = [];\n\n pieData.forEach((item) => {\n if (item.Count > 0) {\n labelsCount.push(item.Name);\n dataCount.push(item.Count);\n }\n\n if (item.Size > 0) {\n labelsSize.push(item.Name);\n dataSize.push(toFixed(item.Size));\n }\n });\n\n return {\n count: {\n label: labelsCount,\n data: dataCount\n },\n size: {\n label: labelsSize,\n data: dataSize\n }\n };\n}\n","export function toFixed(value: number, count = 1): number {\n return Number(value.toFixed(count));\n}\n","import { formatDate as ngFormatDate } from '@angular/common';\nimport { DateFormat } from 'mbs-ui-kit';\n\nexport function formatDate(value: string | Date): string {\n try {\n if (typeof value === 'string' || value instanceof Date) {\n return ngFormatDate(value, DateFormat.mediumDate, 'en-US');\n } else {\n // eslint-disable-next-line no-throw-literal\n throw 'non-data and non-string';\n }\n } catch (error) {\n console.error('Caught error manually: Error formatting date', error);\n\n return '';\n }\n}\n","import { CustomTreeElement, DriveTreeElement, SiteItemTreeElement, TeamTreeElement } from '@common';\nimport { DriveOdataItem, SiteItemODataModel, TeamItem } from '@common/models';\n\nexport function createTreeFromDrives(items: DriveOdataItem[]): DriveTreeElement[] {\n return items.map((item) => ({\n id: item.Id,\n label: item.Name,\n value: item,\n checked: true\n }));\n}\n\nexport function createTreeFromSiteItem(items: SiteItemODataModel[]): SiteItemTreeElement[] {\n return items.map((item) => ({\n id: item.Id,\n label: item.Name,\n value: item,\n checked: item.BackupOn\n }));\n}\n\nexport function createTreeFromTeamItem(items: TeamItem[]): TeamTreeElement[] {\n return items.map((item) => ({\n id: item.Id,\n label: item.Name,\n value: item\n }));\n}\n\nexport function getTreeElementById(tree: CustomTreeElement[], id: string): CustomTreeElement | undefined {\n for (const item of tree) {\n const temp = getTreeElementInChildren(item, id);\n\n if (temp != undefined) {\n return temp;\n }\n }\n\n return void 0;\n}\n\nfunction getTreeElementInChildren(tree: CustomTreeElement, id: string): CustomTreeElement | null {\n if (tree.id === id) {\n return tree;\n }\n\n if (tree.children) {\n for (const item of tree.children) {\n if (item.id === id) {\n return item;\n } else {\n const temp = getTreeElementInChildren(item, id);\n\n if (temp != undefined) {\n return temp;\n }\n }\n }\n }\n\n return null;\n}\n\nexport function getArrayParentsForTreeElement(treeElement: CustomTreeElement): CustomTreeElement[] {\n let temp = treeElement;\n const pathArray: CustomTreeElement[] = [];\n\n while (temp.parent) {\n pathArray.push(temp);\n temp = temp.parent;\n }\n\n pathArray.push(temp);\n\n return pathArray;\n}\n\nexport function getDriveIdOfTreeElement(treeElement: DriveTreeElement): string | null {\n let temp = treeElement;\n\n while (temp.parent && !temp.value?.DriveId) {\n temp = temp.parent;\n }\n\n return temp.value?.DriveId || null;\n}\n","import { TreeElement } from 'mbs-ui-kit';\nimport { Observable } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\n\nexport function updateTotalChildren(\n treeElem: TreeElement,\n update: boolean\n): (source: Observable<{ node: T[]; count: number }>) => Observable {\n return (source: Observable<{ node: T[]; count: number }>): Observable => {\n return source.pipe(\n tap(({ count }) => update && (treeElem.totalChildren = count)),\n map(({ node }) => node)\n );\n };\n}\n","import { UserInfoForService } from '@common/models';\nimport { GuidEmpty } from 'mbs-ui-kit';\n\nexport function getAllUserSelectItem(name: string): UserInfoForService {\n return {\n Id: GuidEmpty,\n Name: name,\n Email: '',\n LastBackupDate: null,\n TotalSize: 0\n };\n}\n","import { APPEND_BUTTON_PASSWORD_STATE } from '@common';\n\nexport const normalizeWhitespace = (str: string): string => {\n return str.replace(/\\s+/g, ' ');\n};\n\nexport const getAppendButtonsIcon = (value: string): string => {\n return normalizeWhitespace(value) === APPEND_BUTTON_PASSWORD_STATE.hidden.type\n ? APPEND_BUTTON_PASSWORD_STATE.hidden.icon\n : APPEND_BUTTON_PASSWORD_STATE.visible.icon;\n};\nexport const getAppendButtonsState = (condition) => (condition ? 'visible' : 'hidden');\nexport const hasAppendButtonsPasswordType = (value) => normalizeWhitespace(value) === APPEND_BUTTON_PASSWORD_STATE.hidden.type;\n","export function getColumnMaxHeight(options?: {\n hasFormFilter?: boolean;\n customFormFilterMaxHeight?: number;\n hasUserSelect?: boolean;\n customPadding?: number;\n hasTableNavHeight?: boolean;\n}): string {\n const {\n hasFormFilter = true,\n customFormFilterMaxHeight = 0,\n hasUserSelect = true,\n customPadding = 0,\n hasTableNavHeight = true\n } = options || {};\n const columnBorderHeight = 1;\n const footerHeight = 100;\n const formFilterHeight = 46;\n const headerHeight = 41;\n const pagePaddings = 35;\n const tableNavHeight = 58;\n const userSelectHeight = 61;\n const permanent = [headerHeight, pagePaddings, footerHeight, columnBorderHeight, customPadding];\n\n if (hasUserSelect) {\n permanent.push(userSelectHeight || 0);\n }\n\n if (hasFormFilter) {\n permanent.push(customFormFilterMaxHeight || formFilterHeight);\n }\n\n if (hasTableNavHeight) {\n permanent.push(tableNavHeight);\n }\n\n return `calc(${permanent.reduce((acc, next) => acc + ' - ' + next + 'px', '100vh')})`;\n}\n","import { PaginationOptions } from 'mbs-ui-kit';\n\nexport function getDefaultPaginationOptions(): PaginationOptions {\n return {\n page: 1,\n dataSize: 0,\n pageSize: 50,\n maxSize: 3,\n rotate: true,\n pageSizeList: [25, 50, 75, 100, 200]\n };\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ODataError, ODataErrorExtended } from '@common';\n\nexport function getErrorText(error: HttpErrorResponse, defaultText: string = null): string {\n const odataError: ODataError | ODataErrorExtended = error?.error;\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return odataError?.value || odataError?.error?.message || defaultText;\n}\n","import { STAGE_HOSTS } from '@common';\n\nexport function getSentryEnvironment(): 'staging' | 'production' | 'local' {\n if (location.hostname.includes('localhost')) {\n return 'local';\n }\n\n if (location.hostname.includes('stage') || STAGE_HOSTS.some((url) => url === location.hostname)) {\n return 'staging';\n }\n\n return 'production';\n}\n","import { DisplayNameItemType } from '@common/models';\nimport { SPACE_REGEX } from 'mbs-ui-kit/utils/constants';\n\nexport function getTermKey(obj: DisplayNameItemType, term: string): string {\n return Object.entries(obj)\n .filter(([, value]) => value.displayName.replace(SPACE_REGEX, ' ').toLowerCase() === term.replace(SPACE_REGEX, ' ').toLowerCase())\n .map((item) => (item.length > 0 ? Object.values(item)[0] : item))\n .join();\n}\n","import { ProviderPath } from '@common';\nimport { AuthMode } from '@common/components/login/enums';\nimport { Provider } from '@common/models';\n\nexport function getPrefix(type: Provider, isAlternativeSignIn: boolean): string {\n if (isAlternativeSignIn) {\n return `/${ProviderPath.Alternate}/`;\n }\n\n if (!isAlternativeSignIn && isProviderGoogle(type)) {\n return `/${ProviderPath.Google}/`;\n }\n\n if (!isAlternativeSignIn && isProviderOffice(type)) {\n return `/${ProviderPath.Office}/`;\n }\n\n return '/';\n}\n\nexport function isAlternateSignIn(mode: AuthMode): boolean {\n return mode === AuthMode.AlternativeAccount;\n}\n\nexport function isProviderGoogle(type: Provider): boolean {\n return type == Provider.GoogleBusiness || type == Provider.GoogleHome;\n}\n\nexport function isProviderOffice(type: Provider): boolean {\n return type == Provider.OfficeBusiness || type == Provider.OfficeHome;\n}\n","import { get } from 'lodash';\n\nexport function getUrlSegment(route, children = false): string {\n return get(route, children ? 'firstChild.snapshot.url[0].path' : 'parent.snapshot.url[0].path') as string;\n}\n","import { Observable, OperatorFunction } from 'rxjs';\nimport { map, scan } from 'rxjs/operators';\n\nexport function hasActionsQueue(): OperatorFunction {\n return (source$: Observable) =>\n source$.pipe(\n map((i: boolean & any) => (i ? 1 : -1)),\n scan((acc, i: 1 | -1) => {\n acc = acc + i;\n return acc > -1 ? acc : 0;\n }, 0),\n map(Boolean)\n );\n}\n","import { HttpErrorResponse } from '@angular/common/http';\n\nexport function hasErrorResponseText(res: HttpErrorResponse): boolean {\n return (\n res instanceof HttpErrorResponse && ((res.status !== 500 && res.status !== 513) || (res.error && Object.keys(res.error).length > 0))\n );\n}\n","export function getMaxHeight(parent: HTMLElement, customPadding = 0): string {\n const footerHeight = '100px';\n const mbsPageContentPaddingBottom = '21px';\n const mbsTable: HTMLElement = parent.querySelector('mbs-table');\n\n return `calc(100vh - ${mbsTable.offsetTop}px - ${footerHeight} - ${mbsPageContentPaddingBottom} - 7px + ${customPadding}px)`;\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { NO_LICENSES_AVAILABLE_ERROR_DETAIL } from '@common';\nimport { get } from 'lodash';\n\nexport function isNoLicensesAvailable(error: HttpErrorResponse): boolean {\n const errorDetails = get(error, 'error.value', '') as string;\n return errorDetails?.replace(/\\s+/g, '').toLowerCase() === NO_LICENSES_AVAILABLE_ERROR_DETAIL.toLowerCase();\n}\n","/*\n * oData cannot parse single quotes in query param\n * https://stackoverflow.com/questions/3979367/how-to-escape-a-single-quote-to-be-used-in-an-odata-query\n * @constructor\n * @param term\n */\nexport function quoteODataEncoding(term: string): string {\n const STR_QUOTES = /'/g;\n return term ? term.replace(STR_QUOTES, \"''\") : '';\n}\n","import { PaginationOptions } from 'mbs-ui-kit';\n\nexport function showPagination(options: PaginationOptions): boolean {\n return options.pageSize > 0 && options.pageSize < options.dataSize && options.dataSize > 0;\n}\n","import { ViewRef } from '@angular/core';\n\nexport function canAbilityCdRef(): boolean {\n return this.cdRef && !(this.cdRef as ViewRef).destroyed;\n}\n","import { ucFirst } from '@common/utils';\n\nexport function convertFirstChartObjectKeyToUpperCase(obj: T): T {\n return Object.fromEntries(Object.entries(obj).map(([key, value]) => [ucFirst(key), value])) as T;\n}\n","import { FIRST_SYMBOL_$ } from '@common';\n\nexport function currencyInvert(value: string): string {\n const withoutSymbol = value.replace(FIRST_SYMBOL_$, '');\n return String(+withoutSymbol * 100);\n}\n","export function formatWithSpaces(number: number) {\n return new Intl.NumberFormat('en-US', { style: 'decimal', useGrouping: true }).format(number).replace(/,/g, '\\u00A0');\n}\n","import { isArray, isEqual } from 'lodash';\nimport { Observable, combineLatest, of } from 'rxjs';\nimport { distinctUntilChanged, map, shareReplay, startWith } from 'rxjs/operators';\n\nexport function getLoadingState(state: Observable[] | Observable): Observable {\n if (!state) return of(false);\n\n if (isArray(state)) {\n const startState: boolean[] = new Array(state.length).fill(true);\n\n return combineLatest(state).pipe(\n startWith(startState),\n distinctUntilChanged((prev, curr) => isEqual(prev, curr)),\n map((loads: boolean[]) => loads.some(Boolean)),\n shareReplay(1)\n );\n } else {\n return state.pipe(startWith(true), distinctUntilChanged(), shareReplay(1));\n }\n}\n","export const getOdataTop = (search) => (search ? 20 : 100);\n","import { SortDirection } from 'mbs-ui-kit';\n\nexport function getOdataOrderBy(column: string, direction: SortDirection, extra?: string): string {\n if (direction) {\n const orderBy = `${column} ${direction}`;\n\n return extra?.trim().length ? extra + ', ' + orderBy : orderBy;\n } else {\n return null;\n }\n}\n","import { TreeItemTypes } from '@common/models';\n\nexport const isDisplayFile = (item: { TreeItemType: TreeItemTypes; Type: boolean }): boolean => {\n return (item.TreeItemType === TreeItemTypes.File || item.TreeItemType === TreeItemTypes.SiteBlockItem) && Boolean(item.Type);\n};\n","import { AuthUser, Provider } from '@common/models';\n\nexport function isHomeUser(user: AuthUser): boolean {\n return user?.Provider == Provider.OfficeHome || user?.Provider == Provider.GoogleHome;\n}\n","export function isValidDate(date: Date): boolean {\n return date instanceof Date && !isNaN(date.getTime());\n}\n","import { OdataKeyConfigs } from '@common/models';\n\nexport function prepareParamsToString(queryParams: OdataKeyConfigs): string {\n return Object.entries(queryParams)\n .map(([key, value]) => `${key}=${value}`)\n .join('&');\n}\n","export const replaceNbsps = (str: string): string => {\n const re = new RegExp(String.fromCharCode(160), 'g');\n return str.replace(re, ' ');\n};\n","export const ucFirst = (str: string) => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n};\n","import { RoutePath } from '@common';\nimport { PageData } from '@common/models';\nimport { ServiceType } from '@common/models/user.model';\n\nexport interface ServiceTypeUiInfo {\n serviceType: ServiceType;\n displayName: string;\n iconCssClass: string;\n url: (id?: string) => string;\n}\n\nconst serviceUiInfo: Map = new Map([\n [ServiceType.All, { serviceType: ServiceType.All, displayName: 'All', iconCssClass: '', url: () => '' }],\n [ServiceType.Users, { serviceType: ServiceType.Users, displayName: 'Users', iconCssClass: 'fa fa-users', url: () => RoutePath.Users }],\n [\n ServiceType.History,\n {\n serviceType: ServiceType.History,\n displayName: 'History',\n iconCssClass: 'fa fa-history',\n url: (id) => addIdToUrl(RoutePath.History, id)\n }\n ],\n [\n ServiceType.Payments,\n { serviceType: ServiceType.Payments, displayName: 'Payments', iconCssClass: 'fa fa-money', url: () => RoutePath.Payments }\n ],\n [\n ServiceType.Mail,\n { serviceType: ServiceType.Mail, displayName: 'Mail', iconCssClass: 'fa fa-envelope', url: (id) => addIdToUrl(RoutePath.Mail, id) }\n ],\n [\n ServiceType.Drive,\n { serviceType: ServiceType.Drive, displayName: 'Drive', iconCssClass: 'ico ico-Drive', url: (id) => addIdToUrl(RoutePath.Drive, id) }\n ],\n [\n ServiceType.Contacts,\n {\n serviceType: ServiceType.Contacts,\n displayName: 'Contacts',\n iconCssClass: 'fa fa-address-book-o',\n url: (id) => addIdToUrl(RoutePath.Contacts, id)\n }\n ],\n [\n ServiceType.Calendar,\n {\n serviceType: ServiceType.Calendar,\n displayName: 'Calendar',\n iconCssClass: 'ico ico-Calendar',\n url: (id) => addIdToUrl(RoutePath.Calendar, id)\n }\n ],\n [\n ServiceType.TeamDrives,\n {\n serviceType: ServiceType.TeamDrives,\n displayName: 'Shared Drives',\n iconCssClass: 'ico ico-GoogleDrive',\n url: () => RoutePath.SharedDrives\n }\n ],\n [\n ServiceType.SharePoint,\n {\n serviceType: ServiceType.SharePoint,\n displayName: 'SharePoint',\n iconCssClass: 'ico ico-SquareS',\n url: () => RoutePath.Sharepoint\n }\n ],\n [\n ServiceType.Teams,\n { serviceType: ServiceType.Teams, displayName: 'Teams', iconCssClass: 'ico ico-SquareT', url: () => RoutePath.Teams }\n ],\n [\n ServiceType.Export,\n { serviceType: ServiceType.Export, displayName: 'Export Results', iconCssClass: 'fa fa-download', url: () => RoutePath.ExportResults }\n ]\n]);\n\n/*\n * Partial data depending on what came to `pageInfo` in order to set it into routing module\n * We get for example:\n * if string: `{ title: string }`\n * if enum ServiceType: `{ title: string, serviceType: ServiceType }`\n * @param pageInfo\n */\nexport function partialRoutingDataByTitle(pageInfo: string | ServiceType): PageData {\n const props = {} as PageData;\n props.title = getPageTitle(pageInfo);\n\n if (typeof pageInfo !== 'string') {\n props.serviceType = pageInfo;\n }\n\n return props;\n}\n\n/*\n * @param pageInfo Page title. ServiceType of page name\n */\nexport function getPageTitle(pageInfo: string | ServiceType): string {\n return typeof pageInfo === 'string' ? pageInfo : getServiceUiInfo(pageInfo).displayName;\n}\n\nexport function getServiceUiInfo(serviceType: ServiceType): ServiceTypeUiInfo {\n return serviceUiInfo.get(serviceType);\n}\n\nfunction addIdToUrl(url: string, id: string): string {\n return id ? `${url}/${id}` : url;\n}\n","import { UntypedFormGroup } from '@angular/forms';\nimport { isNil } from 'lodash';\n\nexport function isConfirmPasswordValidator(names: { password: string; confirmPassword: string }, formGroup: UntypedFormGroup): void {\n const password = formGroup.controls[names.password];\n const confirmPassword = formGroup.controls[names.confirmPassword];\n\n if (password.disabled && confirmPassword.disabled) {\n confirmPassword.setErrors(null);\n\n return;\n }\n\n if (password.touched && !isNil(password.value) && password.value.length == 0) {\n password.setErrors({ isEmpty: { message: 'Password is Empty' } });\n }\n\n if (confirmPassword.touched && !isNil(confirmPassword.value) && confirmPassword.value.length == 0) {\n confirmPassword.setErrors({ isEmpty: { message: 'Password is Empty' } });\n }\n\n if (confirmPassword.errors && !confirmPassword.errors.notMatch) {\n return;\n }\n\n if (confirmPassword.touched && password.value !== confirmPassword.value) {\n confirmPassword.setErrors({ notMatch: { message: \"Passwords don't Match\" } });\n } else {\n confirmPassword.setErrors(null);\n }\n}\n","import { FormControl, UntypedFormGroup } from '@angular/forms';\nimport { isValidDate } from '@common/utils';\n\nexport function validateSearchFilterForm(form: UntypedFormGroup, dateFromControl: FormControl, dateToControl: FormControl): boolean {\n let valid = true;\n\n if (\n new Date(dateFromControl.value).setHours(0, 0, 0, 0) > new Date(dateToControl.value).setHours(0, 0, 0, 0) &&\n isValidDate(dateFromControl.value) &&\n isValidDate(dateToControl.value)\n ) {\n dateFromControl.setErrors({ greaterOrEqualToDate: true });\n valid = false;\n } else if (dateFromControl.errors && dateFromControl.errors.greaterOrEqualToDate) {\n dateFromControl.setErrors(null);\n }\n\n if (!valid) {\n form.markAsDirty();\n }\n\n return valid;\n}\n","\n\n \n\n \n\n \n\n \n \n {{ modulePayments + ':modal.youHaveUnsubscribed.before' | i18next: { format: 'capitalize' } }}\n {{ planInfo.Name }}\n {{ modulePayments + ':modal.youHaveUnsubscribed.after' | i18next }}\n {{ planInfo.ExpireDate | date: DateFormat.mediumDate }}.\n \n
\n {{ modulePayments + ':modal.aNewSubscription' | i18next: { format: 'capitalize' } }}\n
\n\n

\n {{ modulePayments + ':modal.hereYouCan' | i18next: { format: 'capitalize' } }}.
\n \n {{ modulePayments + ':modal.afterExpire.before' | i18next: { format: 'capitalize' } }}\n {{ planInfo.ExpireDate | date: DateFormat.mediumDate }}\n {{ modulePayments + ':modal.afterExpire.after' | i18next }}\n \n

\n\n
\n\n \n\n \n\n \n {{ modulePayments + ':modal.youAlreadyHaveASubscription' | i18next: { format: 'capitalize' } }}\n {{ tariffDateConfirmModal | date: DateFormat.mediumDate }}.
\n {{ modulePayments + ':modal.toPickUpAnother' | i18next: { format: 'capitalize' } }}.
\n {{ modulePayments + ':modal.newSubscriptionPlan' | i18next: { format: 'capitalize' } }}\n
\n\n

\n {{ modulePayments + ':modal.hereYouCan' | i18next: { format: 'capitalize' } }}.
\n {{ modulePayments + ':modal.useEditSubscriptionButton.use' | i18next: { format: 'capitalize' } }}\n \n {{ modulePayments + ':button.editSubscription' | i18next: { format: 'title' } }}\n \n {{ modulePayments + ':modal.useEditSubscriptionButton.toEdit' | i18next }}\n

\n\n
\n\n \n

\n {{ modulePayments + ':modal.hereYouCan' | i18next: { format: 'capitalize' } }}.
\n {{ modulePayments + ':modal.pickUpASubscription' | i18next: { format: 'capitalize' } }}\n

\n
\n\n
\n\n
\n\n \n \n \n This subscription is cancelled by {{ (user$ | async).Name }} and is valid only until {{ planInfo.ExpireDate | date: DateFormat.mediumDate }}.
\n During this period, you can add users to this subscription plan, if necessary\n
\n
\n
\n\n \n\n \n\n \n {{ tariff.Name }}\n \n\n \n {{ tariff.Name }}\n \n\n \n\n \n\n \n {{ tariff.CentPriceUserPerMonth | priceToDisplay | currency: 'USD' }}\n \n\n \n\n \n \n \n\n \n \n \n\n \n\n \n\n \n \n \n\n \n \n \n \n\n \n\n \n {{ totalPrice(tariff, false) | priceToDisplay | currency: 'USD' }}\n \n\n \n {{ totalPriceAdditionalPurchase(tariff, false) | priceToDisplay | currency: 'USD' }}\n \n\n \n\n \n\n \n {{ totalPrice(tariff, true) | priceToDisplay | currency: 'USD' }}\n \n\n \n {{ totalPriceAdditionalPurchase(tariff, true) | priceToDisplay | currency: 'USD' }}\n \n\n \n\n \n\n \n\n \n \n {{ modulePayments + ':modal.button.unsubscribe' | i18next: { format: 'title' } }}\n \n \n\n \n \n {{ modulePayments + ':modal.button.subscribe' | i18next: { format: 'title' } }}\n \n \n\n \n\n \n \n \n\n \n\n \n\n
\n\n \n\n
\n\n

\n {{ modulePayments + ':modal.userLimit' | i18next: { format: 'title' } }}\n :\n {{ planInfo.UserLimit || 0 }}\n

\n\n

\n Next {{ totalPriceNextPeriod(tariffs$ | async, !!discount$.value) | priceToDisplay | currency: 'USD' }}\n (with discount {{ discount$.value }}%)\n payment will be charged on\n {{ planInfo.ExpireDate | date: DateFormat.mediumDate }}\n

\n\n
\n\n
\n\n \n\n\n\n\n\n

\n {{ modulePayments + ':modal.body.confirmUnsubscribeRequest' | i18next: { format: 'capitalize' } }} {{ tariffNameConfirmModal }}?\n

\n\n \n {{ modulePayments + ':modal.alert.confirmUnsubscribeRequest.before' | i18next: { format: 'capitalize' } }}\n {{ tariffDateConfirmModal | date: DateFormat.mediumDate }}.\n {{ modulePayments + ':modal.alert.confirmUnsubscribeRequest.after' | i18next: { format: 'capitalize' } }}\n \n\n
\n","import { DOCUMENT } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Inject, OnInit, TemplateRef, ViewChild } from '@angular/core';\nimport { WINDOW } from '@common';\nimport {\n AuthUser,\n CloudBerryDiscountState,\n CreateInvoicePayload,\n PlanInfoOdata,\n TariffType,\n Tariffs,\n TariffsOdata,\n UnsubscribePayload\n} from '@common/models';\nimport { AuthService, TariffsService } from '@common/services';\nimport { getOdataOrderBy, isHomeUser } from '@common/utils';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { I18NextPipe } from 'angular-i18next';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport {\n DateFormat,\n MbsPopupType,\n MbsSize,\n ModalComponent,\n ModalService,\n ModalSettings,\n SharedPersistentStateEnum,\n SortEvent,\n TableHeader\n} from 'mbs-ui-kit';\nimport { BehaviorSubject, EMPTY, Observable, forkJoin, from, of, switchMap } from 'rxjs';\nimport { catchError, finalize, map, share, shareReplay } from 'rxjs/operators';\n\nexport const REDIRECT_TO_EDIT_SUBSCRIPTION_MODAL = 'redirect to edit subscription modal';\n\nexport enum ModePlansCompareEnum {\n select = 'select',\n edit = 'edit'\n}\n\n@UntilDestroy()\n@Component({\n templateUrl: './compare-plans-modal.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ComparePlansModalComponent implements OnInit {\n @ViewChild(ModalComponent, { static: true }) baseModal: ModalComponent;\n @ViewChild('unsubscribeConfirmTemplate', { static: true, read: TemplateRef }) unsubscribeConfirmTemplate: TemplateRef;\n\n public readonly DateFormat = DateFormat;\n public readonly MbsPopupType = MbsPopupType;\n public readonly MbsSize = MbsSize;\n public readonly modulePayments = I18_NAMESPACE_APPS_UI.payments;\n public readonly viewMode: SharedPersistentStateEnum = SharedPersistentStateEnum.table;\n public readonly planInfo$: Observable;\n public readonly tariffs$: BehaviorSubject = new BehaviorSubject([]);\n public readonly loading$: BehaviorSubject = new BehaviorSubject(true);\n public readonly discount$: BehaviorSubject = new BehaviorSubject(null);\n public readonly isHomeUser$: Observable;\n public readonly user$: Observable;\n public readonly CloudBerryDiscountState = CloudBerryDiscountState;\n\n public headers: TableHeader[] = [];\n public orderBy: SortEvent = null;\n public mode: ModePlansCompareEnum;\n\n public tariffNameConfirmModal = '';\n public tariffDateConfirmModal = '';\n\n private isHomeUser: boolean;\n private planInfo: PlanInfoOdata;\n\n get isSelectMode(): boolean {\n return this.mode === ModePlansCompareEnum.select;\n }\n\n get isEditMode(): boolean {\n return this.mode === ModePlansCompareEnum.edit;\n }\n\n get hasUnsubscribedPlan(): boolean {\n return (\n this.planInfo &&\n this.planInfo.TariffType !== TariffType.trial &&\n this.planInfo.IsCanceled &&\n (this.unExpiredPlan || Boolean(this.planInfo.ActivatedPlanId))\n );\n }\n\n get unExpiredPlan(): boolean {\n return new Date(this.planInfo.ExpireDate).getTime() > new Date().getTime();\n }\n\n constructor(\n @Inject(WINDOW) private window: Window,\n private i18nPipe: I18NextPipe,\n private tariffsService: TariffsService,\n private authService: AuthService,\n private modalService: ModalService,\n @Inject(DOCUMENT) private document: Document\n ) {\n this.planInfo$ = this.tariffsService.getPlanInfo(true).pipe(share());\n this.user$ = authService.getAuthUser().pipe(shareReplay(1));\n this.isHomeUser$ = this.user$.pipe(\n map((user) => isHomeUser(user)),\n shareReplay(1)\n );\n }\n\n ngOnInit(): void {\n this.mode = this.baseModal.data.mode;\n this.baseModal.loading = true;\n\n this.initCustomOrderBy();\n this.fetchData();\n }\n\n private initCustomOrderBy(): void {\n this.tariffsService.orderBy = this.orderBy ? getOdataOrderBy(this.orderBy.column, this.orderBy.direction) : null;\n }\n\n hasSubscribedPlan(tariffs: Tariffs[]): boolean {\n return tariffs.some((tariff) => tariff.Subscribed);\n }\n\n fetchData(): void {\n this.loading$.next(true);\n\n forkJoin([this.isHomeUser$, this.planInfo$, this.tariffsService.getTariffs()])\n .pipe(\n map(([isHomeUser, planInfo, tariffs]) => {\n this.isHomeUser = isHomeUser;\n this.planInfo = planInfo;\n this.tariffDateConfirmModal = this.planInfo.ExpireDate;\n\n const discount =\n planInfo.CloudBerryDiscountState === CloudBerryDiscountState.approved && planInfo.CloudBerryDiscount > 0\n ? planInfo.CloudBerryDiscount\n : 0;\n\n this.discount$.next(discount);\n this.headers = this.getTableHeaders({ discountApproved: this.discount$.value });\n\n return tariffs;\n }),\n map((tariffs) => (this.isEditMode ? tariffs.filter((t) => t.Subscribed || t.Id === this.planInfo.ActivatedPlanId) : tariffs)),\n finalize(() => {\n this.loading$.next(false);\n\n if (this.baseModal.loading) {\n this.baseModal.loading = false;\n }\n }),\n catchError(() => of([] as TariffsOdata[])),\n untilDestroyed(this)\n )\n .subscribe({\n next: (tariffs) => {\n const tariffTransformed: Tariffs[] = tariffs.map((t) => ({\n ...t,\n ServicePaidTransformed: this.isHomeUser ? false : t.Subscribed ? t.ServicePaid : true,\n AdditionalUsers: this.isEditMode ? 0 : t.CurrentActivatedUsers\n }));\n\n this.tariffs$.next(tariffTransformed);\n }\n });\n }\n\n handleRedirectToEditSubscription(): void {\n this.baseModal.save(REDIRECT_TO_EDIT_SUBSCRIPTION_MODAL);\n }\n\n handleToggleSubscribe(tariff: Tariffs): void {\n if (tariff.Subscribed) {\n this.handleUnsubscribe(tariff);\n } else {\n this.handleSubscribe(tariff);\n }\n }\n\n private handleUnsubscribe(tariff: Tariffs): void {\n this.tariffNameConfirmModal = tariff.Name;\n\n const settings: ModalSettings = {\n header: { title: this.i18nPipe.transform(this.modulePayments + ':modal.title.confirmUnsubscribeRequest', { format: 'title' }) },\n footer: {\n okButton: {\n text: this.i18nPipe.transform(this.modulePayments + ':modal.button.unsubscribe', { format: 'title' }),\n type: 'danger'\n }\n }\n };\n\n from(this.modalService.open(settings, this.unsubscribeConfirmTemplate))\n .pipe(\n catchError(() => EMPTY),\n switchMap(() => {\n const payload: UnsubscribePayload = {\n SubscriptionId: this.planInfo.SubscriptionId\n };\n\n this.loading$.next(true);\n return this.tariffsService.unsubscribeActivatedPlan(payload);\n })\n )\n .subscribe({\n next: () => {\n this.fetchData();\n }\n });\n }\n\n private handleSubscribe(tariff: Tariffs): void {\n const payload: CreateInvoicePayload = {\n AdditionalUsersCnt: tariff.AdditionalUsers - tariff.CurrentActivatedUsers,\n ServiceEnable: tariff.ServicePaidTransformed,\n TotalPrice: this.totalPrice(tariff, Boolean(this.discount$.value))\n };\n\n this.tariffsService.createInvoice(payload, tariff.Id).subscribe({\n next: (url) => {\n this.window.open(url, '_blank'); // redirect to fastspring by GET\n }\n });\n }\n\n handleAdditionalPurchase(tariff: Tariffs): void {\n const payload: CreateInvoicePayload = {\n AdditionalUsersCnt: tariff.AdditionalUsers,\n PaidUsersCount: this.planInfo.UserLimit,\n ServiceEnable: this.isServicePurchased(tariff) ? false : tariff.ServicePaidTransformed,\n TotalPrice: this.totalPriceAdditionalPurchase(tariff, Boolean(this.discount$.value))\n };\n\n this.tariffsService.createInvoices(payload).subscribe({\n next: (url: string) => {\n this.window.open(url, '_blank'); // redirect to fastspring by GET\n }\n });\n }\n\n /*\n * Calc total price for `edit` mode\n * @param tariff\n * @param discount\n */\n totalPriceAdditionalPurchase(tariff: Tariffs, discount = false): number {\n const unitPriceOfPurchasedService =\n tariff.ServicePaidTransformed && !this.isServicePurchased(tariff) ? this.getPriceAvailableServices(tariff) : 0;\n const userPrice = discount ? this.getPriceWithDiscount(tariff.CentPriceUserPerMonth) : tariff.CentPriceUserPerMonth;\n const userPricePerPeriod = this.getAdditionalPurchasePerPeriod(userPrice);\n const servicePrice = discount ? this.getPriceWithDiscount(unitPriceOfPurchasedService) : unitPriceOfPurchasedService;\n const servicePricePerPeriod = this.getAdditionalPurchasePerPeriod(servicePrice);\n\n return userPricePerPeriod * tariff.AdditionalUsers + servicePricePerPeriod;\n }\n\n private getAdditionalPurchasePerPeriod(price: number): number {\n return Math.ceil((price * this.planInfo.DaysToEndPlan) / this.planInfo.AverageDaysInMonth);\n }\n\n private getPriceAvailableServices = (tariff: Tariffs): number => (tariff.ServicePaidTransformed ? tariff.CentPriceServicePerMonth : 0);\n\n totalPriceNextPeriod(tariffs: Tariffs[], discount = true): number {\n return tariffs.length > 0 ? this.totalPrice(tariffs[0], discount, true) : 0;\n }\n\n /*\n * Calc total price for `select` mode\n * @param tariff\n * @param discount\n * @param calcNextPeriod\n */\n totalPrice(tariff: Tariffs, discount = false, calcNextPeriod = false): number {\n const userPrice = discount ? this.getPriceWithDiscount(tariff.CentPriceUserPerMonth) : tariff.CentPriceUserPerMonth;\n const userPricePerPeriod = Math.ceil(userPrice) * tariff.PeriodInMonths;\n\n if (this.isHomeUser) {\n return userPricePerPeriod;\n } else {\n const unitPriceServicePerMonth = tariff.ServicePaidTransformed ? this.getPriceAvailableServices(tariff) : 0;\n const servicePrice = discount ? this.getPriceWithDiscount(unitPriceServicePerMonth) : unitPriceServicePerMonth;\n const servicePricePerPeriod = Math.ceil(servicePrice) * tariff.PeriodInMonths;\n\n return userPricePerPeriod * (tariff.AdditionalUsers + (calcNextPeriod ? this.planInfo.UserLimit : 0)) + servicePricePerPeriod;\n }\n }\n\n private getPriceWithDiscount(price: number): number {\n return price - (price * this.discount$.value) / 100;\n }\n\n isServicePurchased(tariff: Tariffs): boolean {\n return (tariff.Subscribed || (!tariff.Subscribed && this.hasUnsubscribedPlan)) && tariff.ServicePaid;\n }\n\n disabledPurchaseButton(tariff: Tariffs): boolean {\n return tariff.AdditionalUsers === 0 && (tariff.ServicePaid === tariff.ServicePaidTransformed || !tariff.ServicePaidTransformed);\n }\n\n private getTableHeaders(options: { discountApproved: number }): TableHeader[] {\n const { discountApproved } = options;\n const textRightClasses = '-end text-right'; // fix prettier\n const textCenterClasses = '-center text-center'; // fix prettier\n const i18totalKey = `:modal.grid.${this.isSelectMode ? 'total' : 'surcharge'}`; // fix prettier\n const defaultHomeUserHeaders: TableHeader[] = [\n {\n name: this.i18nPipe.transform(this.modulePayments + ':modal.grid.period', { format: 'title' }),\n gridColSize: '3fr',\n gridColMin: '100px',\n class: '-stretch',\n overflow: true,\n sort: 'Period'\n },\n {\n name: this.i18nPipe.transform(this.modulePayments + i18totalKey, { format: 'title' }),\n gridColSize: '2fr',\n gridColMin: '100px',\n class: '-end',\n headerClass: textRightClasses,\n overflow: true\n },\n {\n name: '',\n gridColMin: '110px',\n gridColSize: '110px',\n isGridColumn: false,\n class: '-stretch'\n }\n ];\n const headerTotalDiscount = {\n name: this.i18nPipe.transform(this.modulePayments + ':modal.grid.' + (this.isSelectMode ? 'totalDiscount' : 'discountedSurcharge'), {\n format: 'title'\n }),\n gridColSize: '2fr',\n gridColMin: '120px',\n class: '-end',\n headerClass: textRightClasses\n };\n const defaultAdminHeaders: TableHeader[] = [\n {\n name: this.i18nPipe.transform(this.modulePayments + ':modal.grid.period', { format: 'title' }),\n gridColSize: '3fr',\n gridColMin: '100px',\n class: '-stretch',\n overflow: true,\n sort: 'Period'\n },\n {\n name: this.i18nPipe.transform(this.modulePayments + ':modal.grid.price', { format: 'title' }),\n gridColSize: '1.5fr',\n gridColMin: '100px',\n class: '-end',\n headerClass: textRightClasses,\n sort: 'PriceInCents'\n },\n {\n name: this.i18nPipe.transform(\n this.modulePayments + ':modal.grid.' + (this.isEditMode ? 'additionalUsers' : 'currentActivatedUsers'),\n {\n format: 'title'\n }\n ),\n gridColSize: '1fr',\n gridColMin: '90px',\n class: '-stretch',\n headerClass: textCenterClasses\n },\n {\n name: this.i18nPipe.transform(this.modulePayments + ':modal.grid.files.' + (this.authService.isOffice ? 'office' : 'google'), {\n format: 'title'\n }),\n gridColSize: '2fr',\n gridColMin: '100px',\n class: '-center',\n headerClass: textCenterClasses\n },\n {\n name: this.i18nPipe.transform(this.modulePayments + i18totalKey, { format: 'title' }),\n gridColSize: '2fr',\n gridColMin: '100px',\n class: '-end',\n headerClass: textRightClasses,\n overflow: true\n },\n {\n name: '',\n gridColMin: this.isEditMode ? '50px' : '120px',\n gridColSize: this.isEditMode ? '50px' : '120px',\n isGridColumn: false,\n class: '-stretch'\n }\n ];\n const headers = this.isHomeUser ? [...defaultHomeUserHeaders] : [...defaultAdminHeaders];\n\n if (!this.isHomeUser && discountApproved > 0) {\n const totalColumnIndex: number = headers.findIndex(\n (column) => column.name === this.i18nPipe.transform(this.modulePayments + i18totalKey, { format: 'title' })\n );\n\n headers.splice(totalColumnIndex + 1, 0, headerTotalDiscount);\n }\n\n return headers;\n }\n}\n","
\n\n
\n \n
\n\n
\n\n
\n {{ planInfo ? planInfo.Name : (modulePayments + ':title.noSubscription' | i18next: { format: 'title' }) }}\n
\n\n \n\n
\n\n \n\n \n {{ unExpiredPlan ? 'Expires' : 'Expired' }}\n :\n\n \n {{ planInfo.ExpireDate | date: DateFormat.mediumDate }}\n \n\n \n {{ unExpiredPlan ? (planInfo.TariffType === TariffType.trial ? 'Expires' : 'Next payment') : 'Expired' }}\n \n\n \n\n
\n\n
\n\n \n\n
\n\n \n\n \n {{ modulePayments + ':modal.title.unsubscribed.next' | i18next: { format: 'capitalize' } }}.\n {{ modulePayments + ':modal.title.unsubscribed.valid' | i18next: { format: 'capitalize' } }}\n \n\n \n Expired:\n \n\n \n {{ planInfo.ExpireDate | date: DateFormat.mediumDate }}\n \n\n \n\n
\n\n
\n\n
\n\n
\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { PlanInfoOdata, TariffType } from '@common/models';\nimport { UntilDestroy } from '@ngneat/until-destroy';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { DateFormat } from 'mbs-ui-kit';\n\n@UntilDestroy()\n@Component({\n selector: 'apps-invoice-plan',\n templateUrl: './invoice-plan.component.html',\n styleUrls: ['./invoice-plan.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class InvoicePlanComponent {\n @Input() planInfo: PlanInfoOdata;\n\n public readonly modulePayments = I18_NAMESPACE_APPS_UI.payments;\n public readonly DateFormat = DateFormat;\n public readonly TariffType = TariffType;\n\n /**\n * ActivatedPlanId has `id` if activated or activated canceled plan subscription or `null` if plan is subscribed\n * SubscriptionUrl has `url` if user manual canceled plan subscription or `null` if subscribe wasn't canceled. Alternate property `IsCanceled`\n */\n get hasUnsubscribedPlan(): boolean {\n return (\n this.planInfo &&\n this.planInfo.TariffType !== TariffType.trial &&\n this.planInfo.IsCanceled &&\n (this.unExpiredPlan || Boolean(this.planInfo.ActivatedPlanId))\n );\n }\n\n get unExpiredPlan(): boolean {\n return new Date(this.planInfo.ExpireDate).getTime() > new Date().getTime();\n }\n}\n","\n\n\n
\n\n
\n\n
\n \n
\n\n
\n\n
\n\n
\n\n
\n\n
\n \n {{ modulePayments + ':button.selectYourPlan' | i18next: { format: 'title' } }}\n \n
\n\n
\n \n {{ modulePayments + ':button.editSubscription' | i18next: { format: 'title' } }}\n \n
\n\n
\n\n
\n\n \n\n
\n\n
\n\n
\n\n
\n\n\n\n\n \n
\n {{ modulePayments + ':grid-nav.invoicesLength' | i18next: { format: 'title', length: (invoices$ | async).length } }}\n
\n
\n\n \n\n \n\n \n\n {{ invoice.Comment }}\n\n
\n\n
\n {{ modulePayments + ':orderUrl' | i18next: { format: 'title' } }}:\n
\n\n \n {{ invoice.OrderSubscriptionDetailsUrl }}\n \n\n
\n\n
\n\n
\n\n \n {{ invoice.Quantity }}\n \n\n \n {{ invoice.Price | priceToDisplay | currency: 'USD' }}\n \n\n \n {{ invoice.Amount | priceToDisplay | currency: 'USD' }}\n \n\n \n \n {{ date }}\n \n \n\n \n \n {{ expireDate }}\n \n \n\n \n \n {{ invoice.OrderId }}\n \n \n\n \n\n \n \n\n\n\n\n\n\n\n\n\n \n \n \n \n\n \n\n
\n\n\n\n

\n {{ modulePayments + ':modal.body.confirmSubscriptionUpdate.yourAccount' | i18next: { format: 'capitalize' } }}\n {{ invoiceAmount | priceToDisplay | currency: 'USD' }}.\n

\n\n

\n {{ modulePayments + ':modal.body.confirmSubscriptionUpdate.areYouSure' | i18next: { format: 'capitalize' } }}\n {{ (planInfo$ | async)?.ExpireDate | date: DateFormat.mediumDate }}\n {{ modulePayments + ':modal.body.confirmSubscriptionUpdate.willBe' | i18next }}\n {{ invoiceNextPayment | priceToDisplay | currency: 'USD' }}\n

\n\n
\n","import { HttpErrorResponse } from '@angular/common/http';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostListener,\n Inject,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { ActivatedRoute, NavigationExtras, Params, Router } from '@angular/router';\nimport { InvoiceState, MIN_SCREEN_HEIGHT, PaymentType, WINDOW } from '@common';\nimport { InvoiceOData, PayInvoicePayload, PlanInfoOdata, hasSingleUserRole } from '@common/models';\nimport { AuthService, InvoicesService, TariffsService } from '@common/services';\nimport { SmartSearchModelTemplatePaymentsService, isSmartSearchPersist } from '@common/services/smart-search';\nimport {\n canAbilityCdRef,\n getDefaultPaginationOptions,\n getErrorText,\n getMaxHeight,\n getOdataOrderBy,\n hasErrorResponseText\n} from '@common/utils';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport {\n ComparePlansModalComponent,\n ModePlansCompareEnum,\n REDIRECT_TO_EDIT_SUBSCRIPTION_MODAL\n} from '@pages/payments/compare-plans-modal/compare-plans-modal.component';\nimport { I18NextPipe } from 'angular-i18next';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { noop } from 'lodash';\nimport {\n DateFormat,\n MbsSize,\n ModalService,\n ModalSettings,\n ModelTemplate,\n PaginationOptions,\n SharedPersistentStateEnum,\n SmartSearchModel,\n SortEvent,\n TableHeader,\n ToastService\n} from 'mbs-ui-kit';\nimport { BehaviorSubject, EMPTY, Observable, from, of, throwError } from 'rxjs';\nimport { catchError, finalize, shareReplay, switchMap } from 'rxjs/operators';\n\n@UntilDestroy()\n@Component({\n selector: 'app-payments',\n templateUrl: './payments.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PaymentsComponent implements OnInit, OnDestroy {\n @ViewChild('mbsTableGridRef', { static: false, read: ElementRef }) mbsTableElRef: ElementRef;\n @ViewChild('confirmSubscriptionMessageBodyTemplate', { static: true, read: TemplateRef }) messageBodyTemplate: TemplateRef;\n\n #isSmartSearchPersist = isSmartSearchPersist();\n\n readonly #toastTitleSuccess = this.i18nPipe.transform('toast.success.title', { format: 'title' });\n readonly #toastTitleError = this.i18nPipe.transform('toast.error.title', { format: 'title' });\n\n public readonly modulePayments = I18_NAMESPACE_APPS_UI.payments;\n public readonly viewMode: SharedPersistentStateEnum = SharedPersistentStateEnum.table;\n public readonly MbsSize = MbsSize;\n public readonly DateFormat = DateFormat;\n public readonly PaymentType = PaymentType;\n public readonly InvoiceState = InvoiceState;\n public readonly ModePlansCompareEnum = ModePlansCompareEnum;\n\n public readonly isAvailableEditMode$: Observable;\n public readonly planInfo$: Observable;\n public readonly invoices$: BehaviorSubject = new BehaviorSubject([]);\n public readonly loading$: BehaviorSubject = new BehaviorSubject(true);\n public readonly contentAvailable$: BehaviorSubject = new BehaviorSubject(true);\n public readonly maxHeight$: BehaviorSubject = new BehaviorSubject('');\n\n public headers: TableHeader[] = [];\n public orderBy: SortEvent = { column: 'Date', direction: 'desc' };\n public paginationOptions: PaginationOptions = getDefaultPaginationOptions();\n public searchTemplates: ModelTemplate[] = [];\n\n public invoiceAmount = 0;\n public invoiceNextPayment = 0;\n\n get queryParams() {\n return new URLSearchParams(this.window.location.search);\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event: Event): void {\n if (event.target instanceof Window) {\n this.updateMaxHeight();\n }\n }\n\n constructor(\n @Inject(WINDOW) private window: Window,\n private router: Router,\n private route: ActivatedRoute,\n private cdRef: ChangeDetectorRef,\n private i18nPipe: I18NextPipe,\n private modalService: ModalService,\n private toastService: ToastService,\n private invoicesService: InvoicesService,\n private tariffsService: TariffsService,\n templates: SmartSearchModelTemplatePaymentsService,\n authService: AuthService\n ) {\n this.searchTemplates = [\n templates.StateTag,\n templates.QuantityTag,\n templates.PriceTag,\n templates.AmountTag,\n templates.DateTag,\n templates.ExpireDateTag,\n templates.InvoiceIdTag\n ];\n this.headers = this.getTableHeaders();\n this.planInfo$ = this.tariffsService.getPlanInfo().pipe(shareReplay(1));\n this.isAvailableEditMode$ = authService.getRoles().pipe(switchMap((roles) => of(!hasSingleUserRole(roles))));\n }\n\n ngOnInit(): void {\n this.initCustomOrderBy();\n this.fetchData();\n\n if (this.queryParams.get('plan')?.includes('select')) {\n this.handlePlan(ModePlansCompareEnum.select);\n }\n\n if (this.queryParams.get('plan')?.includes('edit')) {\n this.handlePlan(ModePlansCompareEnum.edit);\n }\n }\n\n ngOnDestroy(): void {\n this.invoicesService.clearCache();\n }\n\n ngAfterViewInit(): void {\n queueMicrotask(() => {\n this.updateMaxHeight();\n canAbilityCdRef.call(this) && this.cdRef.detectChanges();\n });\n }\n\n private initCustomOrderBy(): void {\n this.invoicesService.orderBy = getOdataOrderBy(this.orderBy.column, this.orderBy.direction);\n }\n\n fetchData(): void {\n this.loading$.next(true);\n\n this.invoicesService\n .getInvoices()\n .pipe(\n catchError(() => of({ count: 0, data: [] })),\n finalize(() => this.loading$.next(false)),\n untilDestroyed(this)\n )\n .subscribe({\n next: ({ count, data }) => {\n this.updatePaginationOptionsDataSize(count);\n this.invoices$.next(data);\n }\n });\n }\n\n private updatePaginationOptionsDataSize(count: number): void {\n this.paginationOptions = {\n ...this.paginationOptions,\n dataSize: count\n };\n }\n\n handleUpdateFilter(searchObj: SmartSearchModel): void {\n if (this.#isSmartSearchPersist(searchObj)) return;\n\n this.invoicesService.updateFilter(searchObj);\n this.resetPagePagination();\n\n this.fetchData();\n }\n\n private resetPagePagination(): void {\n this.paginationOptions.page = 1;\n this.invoicesService.page = 1;\n }\n\n private updateMaxHeight(): void {\n const screenHeight: number = this.window.screen.height;\n\n this.maxHeight$.next(screenHeight > MIN_SCREEN_HEIGHT && this.mbsTableElRef ? getMaxHeight(this.mbsTableElRef.nativeElement) : '');\n }\n\n handleSort({ column, direction }: SortEvent): void {\n this.orderBy = { column, direction };\n this.invoicesService.orderBy = getOdataOrderBy(column, direction);\n\n this.fetchData();\n }\n\n pageChange(page: number): void {\n this.paginationOptions.page = page;\n this.invoicesService.page = page;\n\n this.fetchData();\n }\n\n pageSizeChange(options: PaginationOptions): void {\n this.paginationOptions = { ...options, page: 1 };\n this.invoicesService.page = 1;\n this.invoicesService.pageSize = this.paginationOptions.pageSize;\n\n this.fetchData();\n }\n\n handlePlan(mode: ModePlansCompareEnum): void {\n this.updateQueryParams({ plan: mode });\n\n const settings: ModalSettings = {\n size: MbsSize.lg,\n collapsing: true,\n data: { mode },\n footer: {\n okButton: {\n show: false\n },\n cancelButton: {\n text: this.i18nPipe.transform(this.modulePayments + ':modal.button.cancel', { format: 'title' })\n }\n }\n };\n\n this.modalService\n .openCustom(ComparePlansModalComponent, settings)\n .then((data) => {\n if (data === REDIRECT_TO_EDIT_SUBSCRIPTION_MODAL) {\n settings.data.mode = ModePlansCompareEnum.edit;\n\n return this.modalService.openCustom(ComparePlansModalComponent, settings);\n }\n\n return EMPTY;\n })\n .catch(() => noop)\n .finally(() => this.updateQueryParams({ plan: null }));\n }\n\n private updateQueryParams(params: Params): void {\n const queryParams = {\n relativeTo: this.route,\n queryParams: params,\n queryParamsHandling: 'merge'\n } as NavigationExtras;\n\n void this.router.navigate([], queryParams);\n }\n\n handleSubscriptionUpdate(invoice: InvoiceOData): void {\n const toastBody = this.i18nPipe.transform(this.modulePayments + ':toast.body.confirmSubscriptionUpdate', { format: 'capitalize' });\n const payload: PayInvoicePayload = {\n invoiceId: invoice.Id\n };\n\n from(this.showConfirmSubscriptionUpdatedModal(invoice))\n .pipe(\n switchMap((confirmed: boolean) => {\n this.loading$.next(true);\n return confirmed ? this.invoicesService.payInvoice(payload) : EMPTY;\n }),\n switchMap(() => this.invoicesService.getInvoices()),\n catchError((err: HttpErrorResponse) => (err instanceof HttpErrorResponse ? throwError(() => err) : EMPTY)),\n finalize(() => this.loading$.next(false)),\n untilDestroyed(this)\n )\n .subscribe({\n next: ({ count, data }) => {\n this.toastService.success(toastBody, this.#toastTitleSuccess);\n this.updatePaginationOptionsDataSize(count);\n this.invoices$.next(data);\n },\n error: (res: HttpErrorResponse) => hasErrorResponseText(res) && this.toastService.error(getErrorText(res), this.#toastTitleError)\n });\n }\n\n private showConfirmSubscriptionUpdatedModal(invoice: InvoiceOData): Promise {\n this.invoiceAmount = invoice.Amount;\n this.invoiceNextPayment = invoice.Amount + invoice.Price;\n\n const settings: ModalSettings = {\n header: {\n title: this.i18nPipe.transform(this.modulePayments + ':modal.title.confirmSubscriptionUpdate', { format: 'title' })\n },\n size: MbsSize.sm,\n responsive: true,\n footer: {\n okButton: {\n text: this.i18nPipe.transform(this.modulePayments + ':modal.button.confirm', { format: 'title' }),\n type: 'primary'\n },\n cancelButton: {\n text: this.i18nPipe.transform(this.modulePayments + ':modal.button.cancel', { format: 'title' })\n }\n }\n };\n\n return this.modalService.open(settings, this.messageBodyTemplate) as Promise;\n }\n\n private getTableHeaders(): TableHeader[] {\n return [\n {\n name: '',\n class: '-center',\n gridColSize: '52px',\n gridColMin: '52px'\n },\n {\n name: this.i18nPipe.transform(this.modulePayments + ':grid.quantity', { format: 'title' }),\n gridColSize: '1.5fr',\n gridColMin: '100px',\n class: '-end',\n overflow: true,\n sort: 'Quantity'\n },\n {\n name: this.i18nPipe.transform(this.modulePayments + ':grid.price', { format: 'title' }),\n gridColSize: '1.5fr',\n gridColMin: '100px',\n class: '-end',\n overflow: true,\n sort: 'Price'\n },\n {\n name: this.i18nPipe.transform(this.modulePayments + ':grid.amount', { format: 'title' }),\n gridColSize: '1.5fr',\n gridColMin: '100px',\n class: '-end',\n overflow: true,\n sort: 'Amount'\n },\n {\n name: this.i18nPipe.transform(this.modulePayments + ':grid.date', { format: 'title' }),\n gridColSize: '2fr',\n gridColMin: '100px',\n overflow: true,\n sort: 'Date'\n },\n {\n name: this.i18nPipe.transform(this.modulePayments + ':grid.expireDate', { format: 'title' }),\n gridColSize: '2fr',\n gridColMin: '100px',\n overflow: true,\n sort: 'ExpireDate'\n },\n {\n name: this.i18nPipe.transform(this.modulePayments + ':grid.invoiceId', { format: 'title' }),\n gridColSize: '1.5fr',\n gridColMin: '70px',\n sort: 'OrderId'\n },\n {\n name: '',\n gridColMin: '45px',\n gridColSize: '45px',\n isGridColumn: false,\n class: '-end'\n }\n ];\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { PaymentsComponent } from '@pages/payments/component/payments.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: PaymentsComponent\n }\n];\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class PaymentsRoutingModule {}\n","import { CommonModule, CurrencyPipe, DatePipe } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { InvoiceStateToDisplayNamePipe, SortOrderByPipe } from '@common/pipes';\nimport { PipesModule } from '@common/pipes/pipes.module';\nimport { InvoicesService, TariffsService } from '@common/services';\nimport { SmartSearchModelTemplatePaymentsService } from '@common/services/smart-search';\nimport { NgbPopoverModule, NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\nimport { ComparePlansModalComponent } from '@pages/payments/compare-plans-modal/compare-plans-modal.component';\nimport { PaymentsComponent } from '@pages/payments/component/payments.component';\nimport { InvoicePlanComponent } from '@pages/payments/invoice-plan/invoice-plan.component';\nimport { PaymentsRoutingModule } from '@pages/payments/payments-routing.module';\nimport { I18NEXT_NAMESPACE, I18NextModule } from 'angular-i18next';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { MbsUiKitModule } from 'mbs-ui-kit';\nimport { NgLetModule } from 'ng-let';\n\nconst modules = [\n PaymentsRoutingModule,\n I18NextModule,\n MbsUiKitModule,\n NgbTooltipModule,\n CommonModule,\n PipesModule,\n FormsModule,\n NgbPopoverModule,\n NgLetModule\n];\n@NgModule({\n imports: modules,\n declarations: [PaymentsComponent, InvoicePlanComponent, ComparePlansModalComponent],\n exports: [PaymentsComponent, InvoicePlanComponent, ComparePlansModalComponent],\n providers: [\n CurrencyPipe,\n DatePipe,\n SortOrderByPipe,\n InvoiceStateToDisplayNamePipe,\n InvoicesService,\n TariffsService,\n SmartSearchModelTemplatePaymentsService,\n {\n provide: I18NEXT_NAMESPACE,\n useValue: [I18_NAMESPACE_APPS_UI.payments]\n }\n ]\n})\nexport class PaymentsModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { PolicyType } from '@common';\nimport { User } from '@common/models';\nimport { AuthService } from '@common/services';\n\n@Pipe({\n name: 'policyType',\n pure: true\n})\nexport class PolicyTypePipe implements PipeTransform {\n constructor(private authService: AuthService) {}\n transform(user: User): PolicyType {\n if (!user) throw new Error('Not a user passed for policyType pipe');\n\n const policyTypes = this.getPolicyTypes(user);\n const someOneCustom = policyTypes.some((type) => type === PolicyType.custom);\n\n if (\n policyTypes.every((type) => type === PolicyType.default) ||\n (policyTypes.some((type) => type === PolicyType.default) && !someOneCustom)\n ) {\n return PolicyType.default;\n }\n\n if (policyTypes.every((type) => type === PolicyType.none)) {\n return PolicyType.none;\n }\n\n if (someOneCustom) {\n return PolicyType.custom;\n }\n\n return null;\n }\n\n private getPolicyTypes(user: User): PolicyType[] {\n const policyTypes = [user.MailPolicyType, user.DrivePolicyType, user.ContactPolicyType, user.CalendarPolicyType];\n\n if (this.authService.isGoogle) {\n policyTypes.push(user.TeamDrivePolicyType);\n }\n\n if (this.authService.isOffice) {\n policyTypes.push(user.SharePointPolicyType);\n }\n\n return policyTypes;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { PolicyTypePipe } from '@pages/users/pipe/policy-type.pipe';\n\nconst pipes = [PolicyTypePipe];\n\n@NgModule({\n imports: [CommonModule],\n declarations: pipes,\n exports: pipes\n})\nexport class UsersPipesModule {}\n","\n\n \n
\n
\n
\n

\n {{ moduleUsers + ':sidepanel.tab.retentionPolicy' | i18next: { format: 'title' } }}\n

\n
\n
\n \n \n {{ modulePolicy + ':sidepanel.button.goToList' | i18next: { format: 'title' } }}\n \n \n \n
\n
\n
\n\n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n\n \n
\n
\n
\n

\n {{ moduleUsers + ':sidepanel.tab.retentionPolicy' | i18next: { format: 'title' } }}\n

\n
\n
\n \n \n {{ modulePolicy + ':sidepanel.button.back' | i18next: { format: 'title' } }}\n \n \n
\n
\n
\n\n
\n\n \n \n {{ modulePolicy + ':createPolicy' | i18next: { format: 'title' } }}\n \n \n\n \n\n \n\n \n\n \n \n {{ policy.Name }}\n \n\n
\n\n \n\n \n \n \n \n\n \n\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {{ modulePolicy + ':sidepanel.accordion.policyName' | i18next: { format: 'title' } }}\n {{ policy.Name }}
\n {{ modulePolicy + ':sidepanel.accordion.serviceType' | i18next: { format: 'title' } }}\n {{ policy.ServiceType }}
\n {{ modulePolicy + ':sidepanel.accordion.currentRetention' | i18next: { format: 'title' } }}\n {{ policy.KeepCntUnits ? policy.KeepCntUnits + ' ' + policy.KeepUnit : '-' }}
\n {{ modulePolicy + ':sidepanel.accordion.lastRetention' | i18next: { format: 'title' } }}\n {{ policy.AlwaysKeepLastRevision ? 'Yes' : 'No' }}
\n {{ modulePolicy + ':sidepanel.accordion.revisionsToKeep' | i18next: { format: 'title' } }}\n {{ policy.KeepRevisionsCnt ? policy.KeepRevisionsCnt : '-' }}
\n {{ modulePolicy + ':sidepanel.accordion.purgeDelay' | i18next: { format: 'title' } }}\n {{ policy.DelayPurgeCntUnits }} {{ policy.DelayPurgeUnit }}
\n {{ modulePolicy + ':sidepanel.accordion.from' | i18next: { format: 'title' } }}\n {{ policy.ByModifyOrBackupDate ? 'Date of Backup' : 'Date Modified' }}
\n\n
\n\n
\n\n
\n\n
\n\n
\n\n
\n\n\n\n \n\n\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { EditCreateRetentionPolicyModalComponent } from '@common/components/modals/edit-create-retention-policy-modal/edit-create-retention-policy-modal.component';\nimport {\n AttachedPolicies,\n AttachedPolicy,\n RetentionPolicyOdata,\n SelectedPolicies,\n ServiceType,\n hasUserAccountAdminRole\n} from '@common/models';\nimport { AuthService, RetentionPolicyService } from '@common/services';\nimport { getErrorText, getServiceUiInfo, hasErrorResponseText, isHomeUser } from '@common/utils';\nimport { UntilDestroy } from '@ngneat/until-destroy';\nimport { I18NextPipe } from 'angular-i18next';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { cloneDeep, isNil } from 'lodash';\nimport { MbsSize, ModalService, ModalSettings, ToastService, naturalSort } from 'mbs-ui-kit';\nimport { BehaviorSubject, Observable, noop, of } from 'rxjs';\nimport { filter, finalize, map, shareReplay, tap } from 'rxjs/operators';\n\n@UntilDestroy()\n@Component({\n selector: 'app-user-retention-policies-control',\n templateUrl: './user-retention-policies-control.component.html'\n})\nexport class UserRetentionPoliciesControlComponent implements OnInit {\n #userIds: string[] = [];\n @Input() public set userIds(ids: string[]) {\n if (ids?.length > 0) {\n this.#userIds = ids;\n\n this.fetchAttachedPolicies(ids);\n this.showSharedPointOrSharedDrivesSelect$ = ids.length === 1 ? this.isGlobalAdmin(ids) : of(false);\n }\n }\n\n get userIds(): string[] {\n return this.#userIds;\n }\n\n readonly #toastTitleSuccess = this.i18nPipe.transform('toast.success.title', { format: 'title' });\n readonly #toastTitleError = this.i18nPipe.transform('toast.error.title', { format: 'title' });\n\n public policiesLoading$: BehaviorSubject = new BehaviorSubject(false);\n public attachedPoliciesLoading$: BehaviorSubject = new BehaviorSubject(false);\n\n public readonly MbsSize = MbsSize;\n public readonly modulePolicy = I18_NAMESPACE_APPS_UI.policy;\n public readonly moduleUsers = I18_NAMESPACE_APPS_UI.users;\n public isHomeUser$: Observable;\n public policies$: Observable;\n public attachedPolicies$: Observable = of({\n EmailPolicies: [],\n DrivePolicies: [],\n ContactPolicies: [],\n CalendarPolicies: [],\n SitePolicies: [],\n TeamDrivePolicies: [],\n TeamsPolicies: []\n });\n public showSharedPointOrSharedDrivesSelect$: Observable;\n public driveTitle: string;\n public retentionListShown: boolean;\n // used for unique id\n public prefix = Math.random().toString(36).substring(2) + '_';\n public selectedPolicies: SelectedPolicies;\n\n private initPolicies: SelectedPolicies;\n\n constructor(\n private i18nPipe: I18NextPipe,\n private retentionPolicyService: RetentionPolicyService,\n private modalService: ModalService,\n private toastService: ToastService,\n private authService: AuthService\n ) {\n this.isHomeUser$ = authService.getAuthUser().pipe(\n filter(Boolean),\n map((user) => isHomeUser(user)),\n shareReplay(1)\n );\n }\n\n get policiesChanged(): boolean {\n if (!this.selectedPolicies || !this.initPolicies) return false;\n\n return (\n this.selectedPolicies.emailPolicyId !== this.initPolicies.emailPolicyId ||\n this.selectedPolicies.drivePolicyId !== this.initPolicies.drivePolicyId ||\n this.selectedPolicies.contactPolicyId !== this.initPolicies.contactPolicyId ||\n this.selectedPolicies.calendarPolicyId !== this.initPolicies.calendarPolicyId ||\n this.selectedPolicies.sitePolicyId !== this.initPolicies.sitePolicyId ||\n this.selectedPolicies.teamDriveId !== this.initPolicies.teamDriveId ||\n this.selectedPolicies.teamsPolicyId !== this.initPolicies.teamsPolicyId\n );\n }\n\n get filePolicyId(): string {\n if (this.isGoogle) {\n return this.selectedPolicies.teamDriveId;\n }\n if (this.isOffice) {\n return this.selectedPolicies.sitePolicyId;\n }\n return '';\n }\n\n set filePolicyId(id: string) {\n if (this.isGoogle) {\n this.selectedPolicies.teamDriveId = id;\n }\n if (this.isOffice) {\n this.selectedPolicies.sitePolicyId = id;\n }\n }\n\n get isOffice(): boolean {\n return this.authService?.isOffice;\n }\n\n get isGoogle(): boolean {\n return this.authService?.isGoogle;\n }\n\n ngOnInit(): void {\n this.fetchPolicies();\n\n this.selectedPolicies = {\n emailPolicyId: null,\n drivePolicyId: null,\n contactPolicyId: null,\n calendarPolicyId: null,\n sitePolicyId: null,\n teamDriveId: null,\n teamsPolicyId: null\n };\n\n this.driveTitle = this.getDriveTitle();\n }\n\n fetchPolicies(): void {\n this.policiesLoading$.next(true);\n this.policies$ = this.retentionPolicyService.getPolicies().pipe(\n map((res) => res?.data.sort((a, b) => naturalSort(a.Name, b.Name)) || []),\n finalize(() => {\n this.policiesLoading$.next(false);\n }),\n shareReplay(1)\n );\n }\n\n fetchAttachedPolicies(ids: string[]): void {\n this.attachedPoliciesLoading$.next(true);\n this.attachedPolicies$ = this.retentionPolicyService.getAttachedPolicies(ids).pipe(\n tap((policies) => {\n this.selectedPolicies.emailPolicyId = this.getSelectedPolicyId(policies.EmailPolicies);\n this.selectedPolicies.drivePolicyId = this.getSelectedPolicyId(policies.DrivePolicies);\n this.selectedPolicies.contactPolicyId = this.getSelectedPolicyId(policies.ContactPolicies);\n this.selectedPolicies.calendarPolicyId = this.getSelectedPolicyId(policies.CalendarPolicies);\n this.selectedPolicies.sitePolicyId = this.getSelectedPolicyId(policies.SitePolicies);\n this.selectedPolicies.teamDriveId = this.getSelectedPolicyId(policies.TeamDrivePolicies);\n this.selectedPolicies.teamsPolicyId = this.getSelectedPolicyId(policies.TeamsPolicies);\n\n this.initPolicies = cloneDeep(this.selectedPolicies) as SelectedPolicies;\n }),\n finalize(() => this.attachedPoliciesLoading$.next(false)),\n shareReplay(1)\n );\n }\n\n private getSelectedPolicyId = (policies: AttachedPolicy[]): string => {\n if (!policies) return null;\n\n const selected = policies.find((p: AttachedPolicy) => p.Selected);\n\n return selected?.Value || null;\n };\n\n toggleRetentionListShown(): void {\n this.retentionListShown = !this.retentionListShown;\n }\n\n handleShowEditCreateRetention(policy?: RetentionPolicyOdata): void {\n this.modalService\n .openCustom(EditCreateRetentionPolicyModalComponent, this.getPopupPolicySettings(policy))\n .then((saveResult) => {\n if (!saveResult) return;\n\n this.handleFetchPolicies();\n })\n .catch(() => noop);\n }\n\n private handleFetchPolicies(): void {\n this.fetchPolicies();\n this.fetchAttachedPolicies(this.userIds);\n }\n\n handleDeleteRetentionPolicy(policy: RetentionPolicyOdata): void {\n const bodyDeleted = this.i18nPipe.transform(this.modulePolicy + ':toast.body.delete', { format: 'capitalize' });\n const bodyError = this.i18nPipe.transform(this.modulePolicy + ':toast.error.delete', { format: 'capitalize' });\n\n this.modalService\n .open(\n {\n header: { title: this.i18nPipe.transform(this.modulePolicy + ':modal.title.delete', { format: 'title' }) },\n footer: {\n okButton: { text: this.i18nPipe.transform(this.modulePolicy + ':modal.button.delete', { format: 'title' }), type: 'danger' }\n }\n },\n `${this.i18nPipe.transform(this.modulePolicy + ':modal.body.delete')} ${policy.Name}?`\n )\n .then((isDeletedPolicy) => {\n if (isDeletedPolicy) {\n this.retentionPolicyService.deletePolicy(policy.Id).subscribe({\n next: () => {\n this.handleFetchPolicies();\n this.toastService.success(bodyDeleted, this.#toastTitleSuccess);\n },\n error: (res: HttpErrorResponse) =>\n hasErrorResponseText(res) && this.toastService.error(getErrorText(res, bodyError), this.#toastTitleError)\n });\n }\n })\n .catch(() => noop);\n }\n\n getPopupPolicySettings(data?: RetentionPolicyOdata): ModalSettings {\n const settings: ModalSettings = {\n responsive: true\n };\n\n if (data) {\n settings.data = data;\n }\n\n return settings;\n }\n\n getDriveItems(policies: AttachedPolicies): AttachedPolicy[] {\n switch (true) {\n case this.isGoogle:\n return policies.TeamDrivePolicies;\n case this.isOffice:\n return policies.SitePolicies;\n default:\n return null;\n }\n }\n\n getDriveTitle(): string {\n switch (true) {\n case this.isGoogle:\n return this.i18nPipe.transform(this.modulePolicy + ':sidepanel.label.sharedDrives', { format: 'title' });\n case this.isOffice:\n return this.i18nPipe.transform(this.modulePolicy + ':sidepanel.label.sharePoint', { format: 'title' });\n default:\n return '';\n }\n }\n\n policyIconCssClass(policyTypeName: string): string {\n const serviceType = ServiceType[policyTypeName] as ServiceType;\n\n return getServiceUiInfo(serviceType).iconCssClass;\n }\n\n private isGlobalAdmin(ids: string[]): Observable {\n return (this.showSharedPointOrSharedDrivesSelect$ = this.authService.getRoles().pipe(\n map((roles) => {\n const isGlobalAdmin: boolean = ids[0] === this.authService.id;\n const isUserAccountAdmin: boolean = hasUserAccountAdminRole(roles);\n\n return isGlobalAdmin && !isUserAccountAdmin;\n })\n ));\n }\n\n showClearButton(policies: AttachedPolicy[]): boolean {\n return policies.every((police) => !isNil(police.Value));\n }\n}\n"," 0 && disabledServicesWarningText\"\n [type]=\"MbsPopupType.warning\"\n [icon]=\"true\">\n {{ disabledServicesWarningText }}\n\n\n
\n\n \n\n \n \n \n\n \n \n \n\n \n \n \n \n {{ service.info.displayName }}\n \n \n \n\n \n \n \n\n \n\n
\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { BackupSetting, ServiceType } from '@common/models';\nimport { AuthService } from '@common/services';\nimport { ServiceTypeUiInfo, getServiceUiInfo } from '@common/utils';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { MbsPopupType, MbsSize, SharedPersistentStateEnum, TableHeader } from 'mbs-ui-kit';\nimport { BackupConfigSettings } from './backup-config-control.model';\n\n@UntilDestroy()\n@Component({\n selector: 'app-backup-config-control',\n templateUrl: './backup-config-control.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BackupConfigControlComponent {\n #disabledServices: ServiceType[] = [];\n\n public disabledServicesWarningText: string;\n public servicesInfo: { info: ServiceTypeUiInfo; value: BackupSetting; disabled: boolean }[] = [];\n public headers: TableHeader[];\n\n public readonly viewMode: SharedPersistentStateEnum = SharedPersistentStateEnum.table;\n public readonly moduleUsers = I18_NAMESPACE_APPS_UI.users;\n public readonly MbsSize = MbsSize;\n public readonly MbsPopupType = MbsPopupType;\n\n public formGroup: FormGroup;\n\n private readonly configureServices: ServiceType[] = [ServiceType.Mail, ServiceType.Drive, ServiceType.Contacts, ServiceType.Calendar];\n\n @Input() backupEnabled: boolean;\n @Input() IsPublicFolder: boolean;\n\n @Input() set disabledServices(services: ServiceType[]) {\n this.#disabledServices = services.filter((s) => this.configureServices.includes(s));\n\n if (this.#disabledServices.length === 0) return;\n\n this.#disabledServices.forEach((serviceType) => {\n const control = this.formGroup.controls[serviceType];\n\n if (control) {\n control.disable({ emitEvent: false });\n }\n });\n\n const warningTextArray = [];\n const isOneServiceDisabled = this.#disabledServices.length === 1;\n\n if (this.#disabledServices.length === this.configureServices.length) {\n warningTextArray.push('The backup services are not enabled');\n } else {\n const servicesString = this.#disabledServices\n .map((s) => getServiceUiInfo(s).displayName)\n .join(', ')\n .replace(/,(?=[^,]*$)/, ' and');\n\n warningTextArray.push(\n `The ${servicesString} backup ${isOneServiceDisabled ? 'service' : 'services'} ${isOneServiceDisabled ? 'is' : 'are'} not enabled`\n );\n }\n\n warningTextArray.push(`Please enable ${isOneServiceDisabled ? 'it' : 'them'} on the Dashboard page`);\n\n this.disabledServicesWarningText = warningTextArray.join('. ');\n }\n\n get disabledServices(): ServiceType[] {\n return this.#disabledServices;\n }\n\n @Input() set settings(settings: BackupConfigSettings) {\n if (settings == null) return;\n\n const formInitValue = { backupEnabled: settings.backupEnabled };\n\n settings.services.forEach((service) => {\n formInitValue[service.serviceType] = service.enabled;\n });\n\n this.formGroup.patchValue(formInitValue);\n }\n\n @Input() userIdForLink: string;\n @Output() mbsChange = new EventEmitter();\n\n get prefix(): string {\n return this.authService?.prefix;\n }\n\n constructor(private authService: AuthService, private fb: FormBuilder) {\n this.headers = this.getTableHeaders();\n\n this.formInit();\n this.initStreams();\n }\n\n initStreams(): void {\n this.formGroup.valueChanges.pipe(untilDestroyed(this)).subscribe({\n next: (settings) => {\n const backupEnabled = settings.backupEnabled;\n\n this.servicesInfo.forEach((i) => {\n i.disabled =\n this.disabledServices.includes(i.info.serviceType) ||\n !backupEnabled ||\n (this.IsPublicFolder && i.info.serviceType === ServiceType.Drive);\n\n const control = this.formGroup.controls[i.value.serviceType];\n\n if (i.disabled) {\n control.disable({ emitEvent: false });\n } else {\n control.enable({ emitEvent: false });\n }\n });\n\n const services = Object.keys(settings).filter((s) => s != 'backupEnabled');\n const emitValue: BackupConfigSettings = {\n backupEnabled,\n services: services.map((s) => ({ serviceType: parseInt(s), enabled: settings[s] as boolean }))\n };\n\n this.mbsChange.emit(emitValue);\n }\n });\n }\n\n private formInit(): void {\n this.formGroup = this.fb.group({\n backupEnabled: [false]\n });\n\n this.configureServices.forEach((serviceType) => {\n this.formGroup.addControl(serviceType.toString(), this.fb.control({ value: false, disabled: false }));\n\n this.servicesInfo.push({\n info: getServiceUiInfo(serviceType),\n value: { serviceType, enabled: false },\n disabled: this.disabledServices.includes(serviceType)\n });\n });\n }\n\n private getTableHeaders(): TableHeader[] {\n return [\n {\n name: '',\n gridColMin: '24rem',\n gridColSize: '24rem',\n headerName: 'service'\n },\n {\n name: '',\n gridColMin: '7rem',\n gridColSize: '7rem',\n headerName: 'enabled'\n }\n ];\n }\n}\n","
\n\n
\n {{ moduleUsers + ':sidepanel.title.totalSummary' | i18next: { format: 'title' } }}\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {{ moduleUsers + ':sidepanel.label.lastBackup' | i18next: { format: 'title' } }}\n \n {{ user.LastBackupDate | date: DateFormat.short }}\n
\n {{ moduleUsers + ':sidepanel.label.totalBackupSize' | i18next: { format: 'title' } }}\n \n {{ user.TotalSize ? (user.TotalSize | size) : '0 B' }}\n
\n\n
\n\n
\n\n
\n {{ moduleUsers + ':sidepanel.title.backupSize' | i18next: { format: 'title' } }}\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {{ moduleUsers + ':sidepanel.label.mail' | i18next: { format: 'title' } }}\n \n {{ user.EmailSize ? (user.EmailSize | size) : '0 B' }}\n
\n {{ moduleUsers + ':sidepanel.label.drive' | i18next: { format: 'title' } }}\n \n {{ user.DriveSize ? (user.DriveSize | size) : '0 B' }}\n
\n {{ moduleUsers + ':sidepanel.label.calendar' | i18next: { format: 'title' } }}\n \n {{ user.CalendarSize ? (user.CalendarSize | size) : '0 B' }}\n
\n\n
\n\n
\n\n
\n {{ moduleUsers + ':sidepanel.title.typeLastBackup' | i18next: { format: 'title' } }}\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {{ moduleUsers + ':sidepanel.label.mail' | i18next: { format: 'title' } }}\n \n \n \n {{ tasks.LastBackupDates.MailLastBackupDate | date: DateFormat.short }}\n \n \n \n \n \n
\n {{ moduleUsers + ':sidepanel.label.drive' | i18next: { format: 'title' } }}\n \n \n \n {{ tasks.LastBackupDates.DriveLastBackupDate | date: DateFormat.short }}\n \n \n \n \n \n
\n {{ moduleUsers + ':sidepanel.label.contacts' | i18next: { format: 'title' } }}\n \n \n \n {{ tasks.LastBackupDates.ContactsLastBackupDate | date: DateFormat.short }}\n \n \n \n \n \n
\n {{ moduleUsers + ':sidepanel.label.calendar' | i18next: { format: 'title' } }}\n \n \n \n {{ tasks.LastBackupDates.CalendarLastBackupDate | date: DateFormat.short }}\n \n \n \n \n \n
\n\n
\n\n\n","import { Component, Input } from '@angular/core';\nimport { OperationType, ServiceType, TasksStateResponse, User } from '@common/models';\nimport { UserOdataService } from '@common/services';\nimport { I18NextPipe } from 'angular-i18next';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { DateFormat, StatusIconType } from 'mbs-ui-kit';\nimport { finalize } from 'rxjs/operators';\n\n@Component({\n selector: 'app-user-information-control',\n templateUrl: './user-information-control.component.html'\n})\nexport class UserInformationControlComponent {\n #user = {\n LastBackupDate: '',\n TotalSize: 0\n } as User;\n\n public readonly DateFormat = DateFormat;\n public readonly moduleUsers = I18_NAMESPACE_APPS_UI.users;\n public readonly StatusIconType = StatusIconType;\n\n constructor(private i18nPipe: I18NextPipe, private userService: UserOdataService) {}\n\n @Input() set user(u: User) {\n if (u && Object.keys(u).length > 0) {\n // TODO: probably this is condition has problem.\n // error-handler.service.ts:21 TypeError: Cannot convert undefined or null to object\n // It happens after quickly unchecking users until leave only 1 checked\n this.loading = true;\n this.tasksState = null;\n this.#user = u;\n this.userService\n .getTasksState(u.Id)\n .pipe(finalize(() => (this.loading = false)))\n .subscribe({\n next: (t) => (this.tasksState = t)\n });\n }\n }\n\n get user() {\n return this.#user;\n }\n\n public ServiceTypeEnum = ServiceType;\n public tasksState: TasksStateResponse;\n\n public loading = false;\n\n getBackupPercentage(type: ServiceType) {\n if (!this.tasksState) {\n return '';\n }\n\n const s = this.tasksState.TasksStatistic.find((t) => t.ServiceType == type);\n\n if (!s) {\n return '';\n }\n\n const p = (s.ItemsCountByStates['Finished'] / s.TotalItemsCount) * 100;\n\n return `${this.operationTypeDisplayNames(s.OperationType)}...${p}`;\n }\n\n operationTypeDisplayNames(o: OperationType) {\n switch (o) {\n case OperationType.Backup:\n return this.i18nPipe.transform(this.moduleUsers + ':sidepanel.label.backup', { format: 'title' });\n case OperationType.Restore:\n return this.i18nPipe.transform(this.moduleUsers + ':sidepanel.label.restore', { format: 'title' });\n case OperationType.Archive:\n return this.i18nPipe.transform(this.moduleUsers + ':sidepanel.label.archive', { format: 'title' });\n case OperationType.MarkingForDelete:\n return this.i18nPipe.transform(this.moduleUsers + ':sidepanel.label.flaggingForDeletion', { format: 'title' });\n case OperationType.DeleteItems:\n return this.i18nPipe.transform(this.moduleUsers + ':sidepanel.label.deletingItems', { format: 'title' });\n case OperationType.ProcessRetention:\n return this.i18nPipe.transform(this.moduleUsers + ':sidepanel.label.retentionPolicy', { format: 'title' });\n case OperationType.DeleteFromStorage:\n return this.i18nPipe.transform(this.moduleUsers + ':sidepanel.label.deletingData', { format: 'title' });\n case OperationType.Sync:\n return this.i18nPipe.transform(this.moduleUsers + ':sidepanel.label.sync', { format: 'title' });\n case OperationType.Export:\n return this.i18nPipe.transform(this.moduleUsers + ':sidepanel.label.creatingPST', { format: 'title' });\n case OperationType.ClearCustomer:\n return this.i18nPipe.transform(this.moduleUsers + ':sidepanel.label.clearingCustomerData', { format: 'title' });\n case OperationType.DeleteUser:\n return this.i18nPipe.transform(this.moduleUsers + ':sidepanel.label.deletingUser', { format: 'title' });\n default:\n return '';\n }\n }\n}\n","\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n\n \n \n
{{ moduleUsers + ':sidepanel.grid.alternateAccount' | i18next: { format: 'title' } }}\n \n
\n
\n \n \n \n\n \n \n \n\n \n \n \n
\n
\n
\n
\n
\n \n {{ moduleUsers + ':sidepanel.error.pleaseCheck' | i18next: { format: 'capitalize' } }}.\n \n
\n \n {{ moduleUsers + ':sidepanel.error.clickTheLink' | i18next: { format: 'capitalize' } }}\n \n
\n
\n
\n
\n {{ moduleUsers + ':sidepanel.label.alternateEmail' | i18next: { format: 'title' } }}:\n
\n
\n \n \n \n {{ alternateEmailInfo?.Email }}\n \n \n
\n
\n
\n
\n \n {{ moduleUsers + ':sidepanel.button.changePassword' | i18next: { format: 'title' } }}\n \n
\n
\n\n
\n \n
\n
\n
\n {{ moduleUsers + ':sidepanel.label.verification' | i18next: { format: 'title' } }}\n \n
\n
\n
\n \n
\n
\n
\n\n \n \n
\n
\n {{ moduleUsers + ':sidepanel.label.secret' | i18next: { format: 'title' } }}:\n
\n
\n {{ secret }}\n \n
\n
\n
\n \n \n \n
\n\n \n \n \n
\n
\n
\n\n\n
{{ moduleUsers + ':sidepanel.twoStepPopover.setUp' | i18next: { format: 'capitalize' } }}
\n\n

{{ moduleUsers + ':sidepanel.twoStepPopover.pleaseFollow' | i18next: { format: 'capitalize' } }}

\n
    \n
  • {{ moduleUsers + ':sidepanel.twoStepPopover.onOurPhone' | i18next: { format: 'capitalize' } }}
  • \n
  • {{ moduleUsers + ':sidepanel.twoStepPopover.searchFor' | i18next: { format: 'capitalize' } }}
  • \n
  • {{ moduleUsers + ':sidepanel.twoStepPopover.downloadAnd' | i18next: { format: 'capitalize' } }}
  • \n
\n\n

{{ moduleUsers + ':sidepanel.twoStepPopover.nowOpenAnd' | i18next: { format: 'capitalize' } }}

\n
    \n
  • {{ moduleUsers + ':sidepanel.twoStepPopover.inGoogle' | i18next: { format: 'capitalize' } }}
  • \n
  • {{ moduleUsers + ':sidepanel.twoStepPopover.selectScan' | i18next: { format: 'capitalize' } }}
  • \n
  • {{ moduleUsers + ':sidepanel.twoStepPopover.useYourPhone' | i18next: { format: 'capitalize' } }}
  • \n
\n\n

{{ moduleUsers + ':sidepanel.twoStepPopover.onceYouHave' | i18next: { format: 'capitalize' } }}

\n
\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormControl, FormGroup, UntypedFormGroup, Validators } from '@angular/forms';\nimport { APPEND_BUTTON_PASSWORD_STATE } from '@common';\nimport { ChangeEmailModalComponent } from '@common/components/modals/change-email-modal/change-email-modal.component';\nimport { ChangePasswordModalComponent } from '@common/components/modals/change-password-modal/change-password-modal.component';\nimport { AddAlternateEmail, AddAlternateEmailCamelCase, AlternateEmail, EditAlternate, TwoFactor, User } from '@common/models';\nimport { UserOdataService } from '@common/services';\nimport { getAppendButtonsIcon, getAppendButtonsState, hasAppendButtonsPasswordType, isConfirmPasswordValidator } from '@common/utils';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { I18NextPipe } from 'angular-i18next';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { camelCase } from 'lodash';\nimport { InputButton, MbsSize, ModalService, ModalSettings, ToastService } from 'mbs-ui-kit';\nimport { BehaviorSubject, noop } from 'rxjs';\n\nenum Panels {\n AddNew = 'add-new',\n TwoFactor = 'two-factor'\n}\n\n@UntilDestroy()\n@Component({\n selector: 'app-alternate-account-settings',\n templateUrl: './alternate-account-settings.component.html',\n styleUrls: ['./alternate-account-settings.component.scss']\n})\nexport class AlternateAccountSettingsComponent implements OnInit {\n @Input() alternateSelected: boolean;\n\n @Output() alternateSelectedChange = new EventEmitter();\n @Output() formsInvalid = new EventEmitter();\n @Output() newAlternateEmailModel = new EventEmitter();\n @Output() editAlternateEmailModel = new EventEmitter();\n\n readonly #toastTitleSuccess = this.i18nPipe.transform('toast.success.title', { format: 'title' });\n\n #user: User;\n #alternateEmailInfo: AlternateEmail;\n\n public passwordType$: BehaviorSubject = new BehaviorSubject(APPEND_BUTTON_PASSWORD_STATE.hidden.type);\n public confirmPasswordType$: BehaviorSubject = new BehaviorSubject(APPEND_BUTTON_PASSWORD_STATE.hidden.type);\n\n public readonly MbsSize = MbsSize;\n public readonly moduleUsers = I18_NAMESPACE_APPS_UI.users;\n public readonly getAppendButtonsIcon = getAppendButtonsIcon;\n\n public showTwoStepResponseCode = false;\n public twoStepQRURL = '';\n public secret = '';\n public twoStepPasswordShow = false;\n\n public addForm = new UntypedFormGroup(\n {\n Email: new FormControl('', [Validators.required, Validators.email]),\n Password: new FormControl('', [Validators.required, Validators.minLength(7), Validators.maxLength(20)]),\n ConfirmPassword: new FormControl('', Validators.required)\n },\n isConfirmPasswordValidator.bind({}, { password: 'Password', confirmPassword: 'ConfirmPassword' })\n );\n\n public twoFactorForm = new UntypedFormGroup({\n password: new FormControl('', [Validators.required, Validators.maxLength(20)]),\n enabled: new FormControl(false),\n responseCode: new FormControl('', [Validators.required])\n });\n\n private invalidPanels: string[] = [];\n private editAlternate = {} as EditAlternate;\n\n @Input() set user(u: User) {\n this.#user = u;\n\n if (Object.keys(u).length !== 0) {\n this.clearAll();\n }\n }\n\n get user(): User {\n return this.#user;\n }\n\n @Input() set alternateEmailInfo(info: AlternateEmail) {\n this.addForm[info?.Email ? 'disable' : 'enable']();\n\n this.#alternateEmailInfo = info;\n this.clearAll();\n\n if (this.alternateEmailInfo) {\n this.twoFactorForm.controls.enabled.setValue(this.alternateEmailInfo.TwoStepEnabled);\n }\n }\n\n get alternateEmailInfo(): AlternateEmail {\n return this.#alternateEmailInfo;\n }\n\n get password2faControl(): FormControl {\n return this.twoFactorForm.get('password');\n }\n\n get enabled2faControl(): FormControl {\n return this.twoFactorForm.get('enabled');\n }\n\n get responseCode2faControl(): FormControl {\n return this.twoFactorForm.get('responseCode');\n }\n\n constructor(\n public userService: UserOdataService,\n private modalService: ModalService,\n private toastService: ToastService,\n private i18nPipe: I18NextPipe\n ) {}\n\n ngOnInit(): void {\n const forms: { form: FormGroup; validEmit: () => void; invalidEmit: () => void; panelName: Panels }[] = [\n {\n form: this.addForm,\n validEmit: () => {\n const data = this.addForm.value as AddAlternateEmailCamelCase;\n this.newAlternateEmailModel.emit({\n userId: this.user.Id,\n email: data.Email,\n password: data.Password,\n confirmPassword: data.ConfirmPassword\n });\n },\n panelName: Panels.AddNew,\n invalidEmit: () => undefined\n },\n {\n form: this.twoFactorForm,\n validEmit: () => {\n const values = this.twoFactorForm.value as TwoFactor;\n\n if (values.enabled) {\n this.editAlternate.editTwoStep = {\n password: values.password,\n responseCode: values.responseCode\n };\n } else if (this.alternateEmailInfo && this.alternateEmailInfo.TwoStepEnabled) {\n this.editAlternate.deleteTwoStep = {\n password: values.password\n };\n }\n\n this.editAlternateEmailModel.emit(this.editAlternate);\n },\n invalidEmit: () => {\n this.editAlternate.editTwoStep = null;\n this.editAlternate.deleteTwoStep = null;\n this.editAlternateEmailModel.emit(this.editAlternate);\n },\n panelName: Panels.TwoFactor\n }\n ];\n\n forms.forEach((data) => {\n data.form.statusChanges.pipe(untilDestroyed(this)).subscribe({\n next: (status) => {\n if (status === 'VALID') {\n data.validEmit();\n this.invalidPanels = this.invalidPanels.filter((v) => v !== data.panelName && data.form.enabled);\n\n this.emitInvalidStatus();\n } else if (data.form.touched) {\n data.invalidEmit();\n\n if (!this.invalidPanels.includes(data.panelName)) {\n this.invalidPanels.push(data.panelName);\n this.emitInvalidStatus();\n }\n } else {\n this.invalidPanels = this.invalidPanels.filter((v) => v !== data.panelName && data.form.enabled);\n }\n }\n });\n });\n }\n\n openChangeEmailModal(): void {\n const settings: ModalSettings = {\n size: MbsSize.sm,\n data: this.user.Id\n };\n\n this.modalService\n .openCustom(ChangeEmailModalComponent, settings)\n .then((save) => {\n if (!save) return;\n\n this.userService.getAlternateEmail(this.user.Id).subscribe({\n next: (a) => (this.alternateEmailInfo = a)\n });\n this.toastService.success('Request was sent successfully', this.#toastTitleSuccess);\n })\n .catch(() => noop);\n }\n\n openChangePasswordModal(): void {\n const settings: ModalSettings = {\n size: MbsSize.sm,\n data: this.user.Id\n };\n\n this.modalService\n .openCustom(ChangePasswordModalComponent, settings)\n .then((save) => {\n if (!save) return;\n\n this.toastService.success('Request was sent successfully', this.#toastTitleSuccess);\n })\n .catch(() => noop);\n }\n\n handleFormError(response: HttpErrorResponse, form: UntypedFormGroup): void {\n if (response.status === 400) {\n // response.error.error.details.forEach((input) => {\n // const p = form.get(input.target);\n // p.reset();\n // p.setErrors({ [`${input.target}Incorrect`]: { message: input.message } });\n // });\n form.get('Password').setValue('');\n form.get('Password').setErrors({ [`Password Incorrect`]: { message: (response.error as { value: string }).value } });\n }\n }\n\n clearFormIfControlsEmpty(form: UntypedFormGroup): void {\n const values = Object.values(form.controls);\n const allClear = values.every((v) => !v.value);\n\n if (allClear) {\n form.reset();\n }\n }\n\n emitInvalidStatus(): void {\n this.formsInvalid.emit(this.invalidPanels.length > 0);\n }\n\n useAlternateSwitcherChange(checked: boolean): void {\n if (checked) {\n if (this.user.AlternativeAccountExists) {\n this.enabled2faControl.setValue(this.alternateEmailInfo.TwoStepEnabled, { emitEvent: false });\n this.twoStepPasswordShow = false;\n this.emitInvalidStatus();\n } else {\n this.formsInvalid.emit(true);\n }\n } else {\n this.twoFactorForm.reset();\n this.addForm.reset();\n this.formsInvalid.emit(false);\n }\n\n this.alternateSelectedChange.emit(checked);\n }\n\n twoStepEnable(checked: boolean): void {\n this.twoStepPasswordShow = checked && !this.alternateEmailInfo.TwoStepEnabled;\n this.showTwoStepResponseCode = checked && !this.alternateEmailInfo.TwoStepEnabled;\n\n this.twoFactorForm.markAsTouched();\n this.twoFactorForm.setErrors(null);\n this.twoStepQRURL = '';\n\n if (checked) {\n this.password2faControl.setValidators([Validators.required, Validators.maxLength(20)]);\n\n this.emitInvalidStatus();\n this.userService.getSecretForAlternate(this.user.Id).subscribe({\n next: (secret) => {\n this.secret = secret;\n this.twoStepQRURL = `otpauth://totp/MSP360:${this.user.Email}?secret=${secret}`;\n },\n error: () => {\n this.twoFactorForm.setErrors({ noSecret: true });\n this.secret = 'Error while getting secret';\n this.formsInvalid.emit(true);\n }\n });\n } else {\n /* fix 2FA start */\n if (this.alternateEmailInfo.TwoStepEnabled) {\n this.password2faControl.setValidators([Validators.required, Validators.maxLength(20)]);\n this.responseCode2faControl.setValidators(null);\n this.twoStepPasswordShow = true;\n this.formsInvalid.emit(true);\n } else {\n this.password2faControl.setValidators(null);\n this.twoStepPasswordShow = false;\n this.formsInvalid.emit(false);\n }\n /* fix 2FA end */\n this.twoFactorForm.reset();\n this.twoFactorForm.markAsTouched();\n }\n }\n\n clearAll(): void {\n this.showTwoStepResponseCode = false;\n this.twoStepPasswordShow = false;\n this.addForm.reset();\n this.twoFactorForm.reset();\n this.newAlternateEmailModel.emit(null);\n this.editAlternateEmailModel.emit(null);\n }\n\n handleChangePasswordType(event: InputButton): void {\n if (!event) return;\n\n const id = camelCase(event.id.replace('append', ''));\n const subjectById: BehaviorSubject = this[id + 'Type$'];\n const isPasswordType: boolean = hasAppendButtonsPasswordType(subjectById.getValue());\n\n subjectById.next(APPEND_BUTTON_PASSWORD_STATE[getAppendButtonsState(isPasswordType)].type);\n }\n}\n","\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ moduleUsers + ':sidepanel.grid.userPermission' | i18next: { format: 'title' } }}
{{ moduleUsers + ':sidepanel.grid.signIn' | i18next: { format: 'title' } }}\n \n
{{ moduleUsers + ':sidepanel.grid.restore' | i18next: { format: 'title' } }}\n \n
\n\n\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { AddAlternateEmail, AlternateEmail, EditAlternate, User } from '@common/models';\nimport { AuthService } from '@common/services';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'app-user-permissions-control',\n templateUrl: './user-permissions-control.component.html'\n})\nexport class UserPermissionsControlComponent {\n #user = {\n SignInEnable: false,\n RestoreEnable: false\n } as User;\n\n public readonly isProviderSignIn$: Observable;\n // public readonly restorePermissionDisable$: BehaviorSubject = new BehaviorSubject(false);\n public readonly moduleUsers = I18_NAMESPACE_APPS_UI.users;\n\n @Input() set user(u: User) {\n this.#user = u;\n // this.updateRestoreDisableState(u);\n }\n\n get user(): User {\n return this.#user;\n }\n\n @Input() forManyUsers = false;\n\n @Input() alternateEmailInfo: AlternateEmail;\n @Input() alternateSelected: boolean;\n @Output() alternateSelectedChange = new EventEmitter();\n\n @Output() formsInvalid = new EventEmitter();\n @Output() newAlternateEmailModel = new EventEmitter();\n @Output() editAlternateEmailModel = new EventEmitter();\n\n constructor(private authService: AuthService) {\n this.isProviderSignIn$ = this.authService.isProviderSignIn();\n }\n\n // private updateRestoreDisableState(user: User): void {\n // this.restorePermissionDisable$.next(user.Id === this.authService.id);\n // }\n}\n","\n\n
\n\n
\n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n \n \n\n \n \n \n\n
\n\n
\n {{ moduleUsers + ':sidepanel.title.selectedLengthUsers' | i18next: { format: 'title', length: userIds.length } }}\n
\n\n \n\n
\n\n
\n {{ user.Name }}\n
\n\n \n {{ user.Email }}\n \n
\n\n
\n\n
\n\n
\n\n \n\n
    \n\n \n
  • \n\n \n\n \n\n
    \n

    \n {{ moduleUsers + ':sidepanel.tab.generalOptions' | i18next: { format: 'title' } }}\n

    \n
    \n\n
    \n \n \n
    \n\n
    \n\n
  • \n \n\n \n
  • \n\n \n\n \n\n
    \n

    \n {{ moduleUsers + ':sidepanel.tab.permissions' | i18next: { format: 'title' } }}\n

    \n
    \n\n
    \n 1\"\n [alternateEmailInfo]=\"alternateEmailInfo\"\n [(alternateSelected)]=\"alternateSelected\"\n (formsInvalid)=\"invalidForms($event)\"\n (editAlternateEmailModel)=\"changeEditAlternateModel($event)\"\n (newAlternateEmailModel)=\"changeNewAlternateEmailModel($event)\">\n \n
    \n\n
    \n\n
  • \n \n\n \n
  • \n\n \n\n \n\n
    \n

    \n {{ moduleUsers + ':sidepanel.tab.exportToPST' | i18next: { format: 'title' } }}\n

    \n
    \n\n
    \n \n \n
    \n\n
    \n\n
  • \n \n\n \n
  • \n\n \n\n \n \n \n \n\n
  • \n \n\n \n
  • \n\n \n\n \n\n
    \n

    \n {{ moduleUsers + ':sidepanel.tab.information' | i18next: { format: 'title' } }}\n

    \n
    \n\n
    \n \n \n
    \n\n
    \n\n
  • \n \n\n \n
  • \n\n \n\n \n
    \n\n
    \n

    \n {{ moduleUsers + ':sidepanel.tab.deleteBackup' | i18next: { format: 'title' } }}\n

    \n
    \n\n
    \n \n \n
    \n\n
    \n
    \n\n
  • \n \n\n
\n\n
\n\n
\n\n \n\n \n\n \n\n \n\n \n\n \n\n
\n\n\n {{ moduleUsers + ':toast.body.exportJobTransferred' | i18next: { format: 'capitalize' } }}\n {{ moduleUsers + ':toast.body.taskManager' | i18next: { format: 'title' } }}\n\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectorRef, Component, EventEmitter, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';\nimport { FormError, RoutePath } from '@common';\nimport { BackupStatisticGrid, DeleteUserBackupOutput } from '@common/components/delete-user-backup';\nimport {\n ConfirmPasswordModalComponent,\n ConfirmPasswordModalSettings,\n ConfirmPasswordModalType\n} from '@common/components/modals/confirm-password-modal/confirm-password-modal.component';\nimport {\n AddAlternateEmail,\n AlternateEmail,\n DeleteBackup,\n EditAlternate,\n ExportToPST,\n ExportToPSTServices,\n Role,\n SelectedPolicies,\n ServiceType,\n User\n} from '@common/models';\nimport { AuthService, ExportToPSTService, UserOdataService } from '@common/services';\nimport { getErrorText, hasErrorResponseText, isHomeUser } from '@common/utils';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { BackupConfigSettings } from '@pages/users/backup-config-control';\nimport { UserRetentionPoliciesControlComponent } from '@pages/users/user-retention-policies-control/user-retention-policies-control.component';\nimport { I18NextPipe } from 'angular-i18next';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { cloneDeep, isNil } from 'lodash';\nimport { MbsSize, ModalService, ModalSettings, SidepanelBase, SidepanelComponent, TabsetDirective, ToastService } from 'mbs-ui-kit';\nimport { BehaviorSubject, EMPTY, Observable, forkJoin, noop, switchMap, throwError } from 'rxjs';\nimport { catchError, finalize, map, startWith, take } from 'rxjs/operators';\n\nexport enum GroupActionType {\n General = 'general',\n Permissions = 'permissions',\n Policies = 'policies',\n DeleteBackup = 'delete',\n ExportToPST = 'exportToPST'\n}\n\nexport interface SaveEmit {\n userIds: string[];\n attachedPolicies: SelectedPolicies;\n settings: User;\n newAlternateEmail?: AddAlternateEmail;\n editAlternate?: EditAlternate;\n}\n\n@UntilDestroy()\n@Component({\n selector: 'app-user-group-action-sidepanel',\n templateUrl: './user-group-action-sidepanel.component.html',\n styleUrls: ['./user-group-action-sidepanel.component.scss']\n})\nexport class UserGroupActionSidepanelComponent extends SidepanelBase implements OnInit {\n @Output() save: EventEmitter = new EventEmitter();\n @Output() delete: EventEmitter = new EventEmitter();\n\n @ViewChild(TabsetDirective, { static: true }) tabs: TabsetDirective;\n @ViewChild(SidepanelComponent, { static: true }) genericPanel: SidepanelComponent;\n @ViewChild(UserRetentionPoliciesControlComponent, { static: false }) userRetentionPolicies: UserRetentionPoliciesControlComponent;\n @ViewChild('exportJobTransferredTemplateRef', { static: false, read: TemplateRef }) exportJobTransferredRef: TemplateRef;\n\n #user = {} as User;\n #type: GroupActionType;\n #userIds: string[] = [];\n\n readonly #toastTitleSuccess = this.i18nPipe.transform('toast.success.title', { format: 'title' });\n readonly #toastTitleError = this.i18nPipe.transform('toast.error.title', { format: 'title' });\n\n public readonly RoutePath = RoutePath;\n private readonly serviceTypeUserPropMap: Map = new Map([\n [ServiceType.Mail, 'MailEnable'],\n [ServiceType.Drive, 'DriveEnable'],\n [ServiceType.Contacts, 'ContactsEnable'],\n [ServiceType.Calendar, 'CalendarEnable']\n ]);\n\n private deleteBackupFormValid = false;\n private newAlternateEmail: AddAlternateEmail;\n private editAlternate: EditAlternate;\n private deleteBackup = {} as DeleteBackup;\n private payloadForExportToPST: ExportToPST;\n\n public isUserDeleted = false;\n public isGlobalAdmin = false;\n\n public disabledSave = false;\n public disabledDelete = true;\n public disabledExport = false;\n public backupServices: ServiceType[] = [];\n public roles: Role[] = [];\n public user$: BehaviorSubject = new BehaviorSubject(null);\n public loading: boolean;\n public userIconCssClass = 'text-info';\n public userIcon = 'fa fa-user';\n public userIdForLinks = '';\n public disabledServices: ServiceType[] = [];\n public backupConfigSettings: BackupConfigSettings;\n public backupStatistics$: Observable;\n public singleUser = true;\n public deleteMode = false;\n public exportMode = false;\n public alternateEmailInfo: AlternateEmail;\n public alternateSelected: boolean;\n public deleteBackupFormError: FormError = { message: '' };\n public readonly moduleUsers = I18_NAMESPACE_APPS_UI.users;\n\n set user(user: User) {\n this.#user = user;\n this.backupConfigSettings = {\n backupEnabled: this.#user.InBackup,\n services: [\n { serviceType: ServiceType.Mail, enabled: this.#user.MailEnable },\n { serviceType: ServiceType.Drive, enabled: this.#user.DriveEnable },\n { serviceType: ServiceType.Contacts, enabled: this.#user.ContactsEnable },\n { serviceType: ServiceType.Calendar, enabled: this.#user.CalendarEnable }\n ]\n };\n }\n\n get user(): User {\n return this.#user;\n }\n\n set type(t: GroupActionType) {\n this.#type = t;\n this.tabs.select(this.#type);\n this.deleteMode = this.#type === GroupActionType.DeleteBackup;\n this.exportMode = this.#type === GroupActionType.ExportToPST;\n this.genericPanel.showDelete = this.deleteMode && !this.exportMode;\n this.genericPanel.hideSave = this.deleteMode && !this.exportMode;\n }\n\n set userIds(ids: string[]) {\n this.#userIds = ids;\n this.userIdForLinks = this.#userIds[0];\n\n if (this.#type == GroupActionType.DeleteBackup) {\n this.loading = true;\n\n this.backupStatistics$ = forkJoin([\n this.authService.getAuthUser().pipe(switchMap((user) => this.userService.getBackupStatistic(ids, !isHomeUser(user)))),\n this.authService.getRoles()\n ]).pipe(\n map(([statistic, roles]) => this.userService.mapBackupStatisticToGridList(statistic, roles, this.user.Id === this.authService.id)),\n startWith([]),\n finalize(() => (this.loading = false))\n );\n }\n }\n\n get userIds(): string[] {\n return this.#userIds;\n }\n\n get prefix(): string {\n return this.authService?.prefix;\n }\n\n constructor(\n private exportToPSTService: ExportToPSTService,\n private cdRef: ChangeDetectorRef,\n private i18nPipe: I18NextPipe,\n private modalService: ModalService,\n private userService: UserOdataService,\n private toastService: ToastService,\n private authService: AuthService\n ) {\n super();\n }\n\n fetchAlternate(): void {\n this.alternateSelected = false;\n this.userService\n .getAlternateEmail(this.user.Id)\n .pipe(take(1))\n .subscribe({\n next: (a: AlternateEmail) => {\n this.alternateEmailInfo = a;\n this.alternateSelected = !!this.alternateEmailInfo;\n }\n });\n }\n\n invalidForms(state: boolean): void {\n if (!this.exportMode && !this.deleteMode) {\n this.disabledSave = state;\n }\n\n if (this.exportMode) {\n this.disabledExport = !state;\n }\n\n if (this.deleteMode) {\n this.disabledDelete = !state || this.backupServices.length === 0;\n this.deleteBackupFormValid = state;\n }\n\n this.cdRef.detectChanges();\n }\n\n changeNewAlternateEmailModel(value: AddAlternateEmail): void {\n this.newAlternateEmail = value;\n }\n\n changeEditAlternateModel(value: EditAlternate): void {\n this.editAlternate = value;\n }\n\n deleteBackupChange(value: DeleteUserBackupOutput): void {\n this.deleteBackup = {\n UserIds: this.userIds,\n Email: value.deleteServices.includes(ServiceType.Mail),\n Drive: value.deleteServices.includes(ServiceType.Drive),\n Contact: value.deleteServices.includes(ServiceType.Contacts),\n Calendar: value.deleteServices.includes(ServiceType.Calendar),\n TeamDrive: value.deleteServices.includes(ServiceType.TeamDrives),\n SharePoint: value.deleteServices.includes(ServiceType.SharePoint),\n Password: value.password\n };\n\n this.backupServices = value.deleteServices;\n }\n\n ngOnInit(): void {\n this.genericPanel.isCreate = false;\n\n this.genericPanel.saveEvent.pipe(untilDestroyed(this)).subscribe(() => {\n if (this.user.AlternativeAccountExists && !this.alternateSelected) {\n this.openConfirmDeleteAlternate();\n } else {\n this.emitSave();\n }\n });\n\n this.genericPanel.deleteEvent.pipe(untilDestroyed(this)).subscribe(() => {\n if (this.deleteBackupFormValid) {\n this.userService\n .deleteBackup(this.deleteBackup)\n .toPromise()\n .then(\n () => this.delete.emit(),\n (textError: string) => (this.deleteBackupFormError = { message: textError })\n );\n } else {\n const textError: string = !this.deleteBackup.Password\n ? this.i18nPipe.transform('common.validation.passwordIsEmpty', { format: 'title' })\n : this.i18nPipe.transform('common.validation.formInvalid', { format: 'title' });\n\n this.deleteBackupFormError = { message: textError };\n }\n });\n\n this.user$.pipe(untilDestroyed(this)).subscribe((user) => {\n if (!user) return;\n\n this.user = cloneDeep(user);\n this.userIds = [user.Id];\n this.fetchAlternate();\n });\n\n this.genericPanel.panelOpened.pipe(untilDestroyed(this)).subscribe(() => {\n this.resetStateDeleteBackupTab();\n this.disabledSave = false;\n });\n }\n\n emitSave(): void {\n const emitObject: SaveEmit = {\n userIds: this.userIds,\n attachedPolicies: null,\n settings: this.user\n };\n\n emitObject.newAlternateEmail = this.newAlternateEmail;\n emitObject.editAlternate = this.editAlternate;\n\n if (this.userRetentionPolicies && this.userRetentionPolicies.policiesChanged) {\n emitObject.attachedPolicies = this.userRetentionPolicies.selectedPolicies;\n }\n\n this.save.emit(emitObject);\n this.genericPanel.panelClosed.emit();\n }\n\n openConfirmDeleteAlternate(): void {\n const confirmSettings: ConfirmPasswordModalSettings = {\n type: ConfirmPasswordModalType.delete,\n beforeSave: (password) => {\n return new Promise((resolve) => {\n this.userService\n .deleteAlternateEmail(this.userIds[0], this.user.Id === this.authService.id ? null : password)\n .pipe(untilDestroyed(this))\n .subscribe({\n next: () => resolve({ resolve: true }),\n error: (error: HttpErrorResponse) => {\n resolve({ resolve: false, error: getErrorText(error) });\n }\n });\n });\n }\n };\n const settings: ModalSettings = {\n size: MbsSize.sm,\n responsive: true,\n header: { title: 'Delete Alternate Email' },\n data: confirmSettings\n };\n\n this.modalService\n .openCustom(ConfirmPasswordModalComponent, settings)\n .then((confirmed) => {\n if (confirmed) {\n this.user.AlternativeAccountExists = false;\n this.alternateSelected = false;\n this.alternateEmailInfo = null;\n this.toastService.success('Alternate email deleted successfully', this.#toastTitleSuccess);\n this.userService.getUsers();\n }\n })\n .catch(() => noop);\n }\n\n resetSingleUserDataToPrevious(): void {\n this.user$.next(this.user$.value);\n }\n\n backupConfigChanged(config: BackupConfigSettings): void {\n config.services.forEach((s) => (this.user[this.serviceTypeUserPropMap.get(s.serviceType)] = s.enabled));\n this.user.InBackup = config.backupEnabled;\n }\n\n private resetStateDeleteBackupTab(): void {\n this.deleteBackupFormError = { message: '' };\n this.disabledDelete = true;\n }\n\n handleExportToPST(): void {\n if (!isNil(this.payloadForExportToPST)) {\n this.payloadForExportToPST.UserIds = [...this.userIds];\n }\n\n this.loading = true;\n this.exportToPSTService\n .exportUserData(this.payloadForExportToPST)\n .pipe(\n catchError((err: HttpErrorResponse) => (err.status !== 403 ? throwError(() => err) : EMPTY)),\n finalize(() => (this.loading = false))\n )\n .subscribe({\n next: () => {\n this.toastService.success(this.exportJobTransferredRef, this.#toastTitleSuccess);\n this.genericPanel.panelClosed.emit();\n },\n error: (res: HttpErrorResponse) => hasErrorResponseText(res) && this.toastService.error(getErrorText(res), this.#toastTitleError)\n });\n }\n\n handleUpdatePayloadForExportToPST(services: ExportToPSTServices[]): void {\n this.payloadForExportToPST = {\n UserIds: [...this.userIds],\n Services: cloneDeep(services)\n };\n }\n}\n","\n
\n\n
\n\n
\n\n
\n\n
\n\n
\n\n
\n \n
\n\n
\n \n\n \n\n \n {{ isOffice ? group.Name : group.Path }}\n \n\n \n\n \n
\n\n
\n\n
\n\n
\n\n
\n\n
\n \n
\n\n
\n \n \n
\n\n
\n\n
\n\n
\n\n \n \n\n
\n\n
\n\n
\n\n
\n\n \n\n
\n\n \n\n \n\n \n\n \n {{\n isGoogle\n ? (moduleUsers + ':dropdown.userGroupsGoogle' | i18next: { format: 'title' })\n : (moduleUsers + ':dropdown.userGroupsOffice' | i18next: { format: 'title' })\n }}\n \n\n
\n\n
\n\n
\n\n
\n\n\n\n\n \n \n\n \n {{ moduleUsers + ':grid-nav.selected' | i18next: { format: 'title' } }}: {{ selectedItems.length }} of {{ stat.AllCnt }}\n \n\n \n \n {{ moduleUsers + ':grid-nav.configureBackup' | i18next: { format: 'title' } }}\n \n \n\n \n \n {{ moduleUsers + ':grid-nav.permissions' | i18next: { format: 'title' } }}\n \n \n\n \n \n {{ moduleUsers + ':grid-nav.retentionPolicy' | i18next: { format: 'title' } }}\n \n \n\n \n \n {{ moduleUsers + ':grid-nav.exportToPST' | i18next: { format: 'title' } }}\n \n \n\n \n \n {{ moduleUsers + ':grid-nav.backupDelete' | i18next: { format: 'title' } }}\n \n \n\n \n \n {{ moduleUsers + ':grid-nav.deleteUser' | i18next: { format: 'title' } }}\n \n\n \n \n {{ moduleUsers + ':modal.body.confirmDeleteUser' | i18next: { format: 'capitalize' } }}\n {{ selectedItems[0].Email }}?\n \n \n {{ moduleUsers + ':modal.body.confirmDeleteUsers_begin' | i18next: { format: 'capitalize' } }}\n {{ selectedItems.length }}\n {{ moduleUsers + ':modal.body.confirmDeleteUsers_end' | i18next }}?\n \n \n \n\n \n\n \n \n\n \n \n {{ moduleUsers + ':grid-nav.all' | i18next: { format: 'title' } }}: {{ stat.AllCnt }}\n \n \n\n \n \n {{ moduleUsers + ':grid-nav.includedInBackup' | i18next: { format: 'title' } }}: ({{ stat.BackupCnt }})\n \n \n\n \n \n {{ moduleUsers + ':grid-nav.notInBackup' | i18next: { format: 'title' } }}: ({{ stat.NotInBackupCnt }})\n \n \n\n \n \n {{ moduleUsers + ':grid-nav.withBackupButNotInDomain' | i18next: { format: 'title' } }}: ({{ stat.InBackupNotInDomainCnt }})\n \n \n\n \n \n {{ moduleUsers + ':grid-nav.blocked' | i18next: { format: 'title' } }}/{{ moduleUsers + ':grid-nav.suspended' | i18next: { format: 'title' } }}: ({{ stat.SuspendedCnt }})\n \n \n\n \n \n \n\n \n \n\n \n\n
\n\n \n\n \n\n \n\n
\n\n
\n\n
\n\n \n\n \n\n \n {{ user.Name }}\n \n\n \n {{ user.Email }}\n\n \n\n \n\n \n \n\n \n\n \n\n \n {{ user.LastBackupDate ? (user.LastBackupDate | date: DateFormat.short) : (moduleUsers + ':emptyValue' | i18next) }}\n \n\n \n\n \n {{ user.TotalSize ? (user.TotalSize | size) : '0 B' }}\n \n\n \n\n \n\n \n {{ getBackupLicenseStatus(user) }}\n \n\n \n\n \n {{ user | policyType }}\n \n\n \n \n Retention Policy\n\n \n \n\n \n\n \n\n \n \n\n \n \n\n \n \n \n\n \n \n\n \n\n \n \n\n \n \n\n \n \n \n \n \n\n \n \n \n\n \n \n\n \n\n \n \n\n \n\n \n\n \n \n \n \n \n\n \n\n \n\n \n\n \n \n\n \n\n \n \n\n \n\n \n\n \n \n \n \n \n\n \n\n \n\n \n\n \n \n\n \n\n \n \n\n \n\n \n\n \n \n \n \n \n \n\n
\n\n\n {{ moduleUsers + ':toast.body.deleteJobTransferred' | i18next: { format: 'capitalize' } }}\n {{ moduleUsers + ':toast.body.taskManager' | i18next: { format: 'title' } }}\n\n","import { HttpErrorResponse } from '@angular/common/http';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostListener,\n Inject,\n Injector,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { BackupLicenseStatuses, MIN_SCREEN_HEIGHT, PolicyType, RoutePath, TextColor, WINDOW } from '@common';\nimport { AzureGroup, BackupSetting, DomainStatistic, ServiceType, User } from '@common/models';\nimport { AuthService, DashboardService, DomainService, UserFiltersEnum, UserOdataService } from '@common/services';\nimport { DownloadService } from '@common/services/download.service';\nimport { OrganizationalUnitsService } from '@common/services/organizational-units.service';\nimport {\n canAbilityCdRef,\n getDefaultPaginationOptions,\n getErrorText,\n getLoadingState,\n getMaxHeight,\n getOdataOrderBy,\n hasActionsQueue,\n hasErrorResponseText,\n showPagination\n} from '@common/utils';\nimport { addTypeResetToInputSearch } from '@common/utils/functions/search';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport {\n GroupActionType,\n SaveEmit,\n UserGroupActionSidepanelComponent\n} from '@pages/users/user-group-action-sidepanel/user-group-action-sidepanel.component';\nimport { I18NextPipe } from 'angular-i18next';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { assign, cloneDeep, noop } from 'lodash';\nimport {\n DateFormat,\n MbsSize,\n ModalService,\n ModalSettings,\n PaginationOptions,\n SharedPersistentStateEnum,\n SidepanelService,\n SortEvent,\n StatusIconType,\n TableHeader,\n ToastService\n} from 'mbs-ui-kit';\nimport { BehaviorSubject, EMPTY, Observable, Subject, forkJoin, from, of } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter, finalize, startWith, switchMap, take, tap } from 'rxjs/operators';\n\nenum BackupFilterText {\n All = 'All',\n Enabled = 'Backup enabled',\n Disabled = 'Backup disabled'\n}\n\nenum TableFilters {\n All,\n InBackup,\n NotInBackup,\n InBackupNotInDomain,\n Suspended\n}\n\nenum ApplyTo {\n All = 'all',\n Selected = 'selected'\n}\n\n@UntilDestroy()\n@Component({\n selector: 'app-users',\n templateUrl: './users.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class UsersComponent implements OnInit, OnDestroy, AfterViewInit {\n @ViewChild('mbsTableGridRef', { static: false, read: ElementRef }) mbsTableElRef: ElementRef;\n @ViewChild('mbsInputSearchRef', { static: false, read: ElementRef }) mbsInputSearchRef: ElementRef;\n @ViewChild('deleteJobTransferredTemplateRef', { static: false, read: TemplateRef }) deleteJobTransferredRef: TemplateRef;\n\n readonly #toastTitleSuccess = this.i18nPipe.transform('toast.success.title', { format: 'title' });\n readonly #toastTitleError = this.i18nPipe.transform('toast.error.title', { format: 'title' });\n readonly #toastTitleInfo = this.i18nPipe.transform('toast.info.title', { format: 'title' });\n\n public readonly ServiceType = ServiceType;\n public readonly PolicyType = PolicyType;\n public readonly GroupActionType = GroupActionType;\n public readonly isProviderSignIn$: Observable;\n public readonly moduleUsers = I18_NAMESPACE_APPS_UI.users;\n public readonly moduleButton = I18_NAMESPACE_APPS_UI.button;\n public readonly viewMode: SharedPersistentStateEnum = SharedPersistentStateEnum.table;\n public readonly BackupFilterText = BackupFilterText;\n public readonly MbsSize = MbsSize;\n public readonly RoutePath = RoutePath;\n public readonly DateFormat = DateFormat;\n public readonly StatusIconType = StatusIconType;\n public readonly TableFiltersEnum = TableFilters;\n public readonly ApplyToEnum = ApplyTo;\n public readonly users$: Observable;\n public readonly domainStatistic$: Observable;\n\n public orderBy: SortEvent;\n public filter: TableFilters = TableFilters.All;\n public selectedItems: User[] = [];\n public headers: TableHeader[];\n public autoAddUserToBackup = false;\n public maxHeight = '';\n public handleSearchChange: (events: string) => void;\n public paginationOptions: PaginationOptions = getDefaultPaginationOptions();\n\n public groupActionsSidepanel: UserGroupActionSidepanelComponent;\n public wideContentMode$ = new BehaviorSubject(false);\n\n private groupActionUserSettings = {} as User;\n protected disabledServices: ServiceType[] = [];\n\n public userGroups$ = new BehaviorSubject([]);\n public searchLoading$ = new BehaviorSubject(false);\n public typeahead$ = new Subject();\n\n private _loading$ = new BehaviorSubject(false);\n public loading$: Observable;\n\n get panelWidth(): number {\n return this.groupActionsSidepanel?.genericPanel.show ? this.panelService.getPanelOffsetWidthByType(this.groupActionsSidepanel) : 0;\n }\n\n get pageSize(): number {\n return this.userService.pageSize;\n }\n\n set pageSize(size: number) {\n this.paginationOptions = assign({}, this.paginationOptions, { dataSize: 0 });\n this.paginationOptions.pageSize = size;\n this.userService.pageSize = size;\n }\n\n get authUserId(): string {\n return this.authService.id;\n }\n\n get showDeleteUser(): boolean {\n return this.selectedItems.every((i) => i.UserProviderState === UserFiltersEnum.notInDomain);\n }\n\n get prefix(): string {\n return this.authService?.prefix;\n }\n\n get isGoogle(): boolean {\n return this.authService.isGoogle;\n }\n\n get isOffice(): boolean {\n return this.authService.isOffice;\n }\n\n get isImmutability(): boolean {\n return this.authService?.isImmutability;\n }\n\n get wideContentMode(): boolean {\n return this.wideContentMode$.value && showPagination(this.paginationOptions);\n }\n\n get screenX(): number {\n return this.window.innerWidth;\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event: Event): void {\n if (event.target instanceof Window) {\n this.updateMaxHeight();\n this.headers = this.getTableHeaders();\n }\n }\n\n constructor(\n @Inject(WINDOW) private window: Window,\n private cdRef: ChangeDetectorRef,\n private i18nPipe: I18NextPipe,\n public userService: UserOdataService,\n private orgUnitsService: OrganizationalUnitsService,\n private authService: AuthService,\n private domainService: DomainService,\n private downloadService: DownloadService,\n private panelService: SidepanelService,\n private toastService: ToastService,\n private modalService: ModalService,\n private dashboardService: DashboardService,\n private injector: Injector\n ) {\n userService.total.pipe(untilDestroyed(this)).subscribe((dataSize) => {\n this.paginationOptions = assign({}, this.paginationOptions, { dataSize });\n });\n this.paginationOptions.pageSize = userService.pageSize;\n this.users$ = userService.users;\n this.domainStatistic$ = domainService.domainStatistic$;\n this.loading$ = getLoadingState([\n this._loading$.pipe(hasActionsQueue()),\n this.userService.requestPending$,\n this.domainService.requestPending$\n ]);\n this.headers = this.getTableHeaders();\n this.isProviderSignIn$ = authService.isProviderSignIn();\n }\n\n ngOnInit(): void {\n this.domainService.currentDomain$.pipe(filter(Boolean), untilDestroyed(this)).subscribe((d) => {\n this.userService.domainId = d.Id;\n this.autoAddUserToBackup = d.AutoAddUserToBackup;\n this.userService.getUsers();\n });\n this.userService.clearCache();\n this.domainService.fetchDomainStatistic();\n this.groupActionsSidepanel = this.getPanel();\n this.groupActionsSidepanel.open.pipe(untilDestroyed(this)).subscribe(() => this.wideContentMode$.next(true));\n this.groupActionsSidepanel.close\n .pipe(\n tap(() => this.cdRef.markForCheck()),\n debounceTime(500),\n untilDestroyed(this)\n )\n .subscribe(() => {\n this.wideContentMode$.next(false);\n this.cdRef.markForCheck();\n });\n this.groupActionsSidepanel.save.pipe(untilDestroyed(this)).subscribe((data) => this.handleGroupActionEvent(data));\n this.groupActionsSidepanel.delete.pipe(untilDestroyed(this)).subscribe(() => {\n this.toastService.success(this.deleteJobTransferredRef, this.#toastTitleSuccess);\n this.selectedItems = [];\n });\n\n this.dashboardService\n .getServiceStatistics()\n .pipe(untilDestroyed(this))\n .subscribe({\n next: (serviceStatistics) => (this.disabledServices = serviceStatistics.filter((s) => !s.enabled).map((s) => s.serviceType))\n });\n\n this.typeahead$\n .pipe(\n debounceTime(500),\n distinctUntilChanged(),\n switchMap((search) => {\n this.searchLoading$.next(true);\n return this.userService.getOrganizationalUnitsGroups(search).pipe(finalize(() => this.searchLoading$.next(false)));\n }),\n untilDestroyed(this)\n )\n .subscribe({\n next: (res) => {\n this.userGroups$.next(res);\n }\n });\n\n this.groupService()\n .pipe(startWith([]), untilDestroyed(this))\n .subscribe({\n next: (res) => {\n this.userGroups$.next(res);\n }\n });\n }\n\n getPanel(): UserGroupActionSidepanelComponent {\n return this.panelService.contains(UserGroupActionSidepanelComponent)\n ? this.panelService.get(UserGroupActionSidepanelComponent)\n : this.panelService.add(UserGroupActionSidepanelComponent, null, this.injector);\n }\n\n private groupService(): Observable {\n return this.isOffice ? this.userService.getUserGroups() : this.userService.getOrganizationalUnitsGroups();\n }\n\n ngOnDestroy(): void {\n this.setFilterAll();\n\n this.userService.usersGroup = '';\n this.userService.searchTerm = '';\n this.orgUnitsService.clearCache();\n this.panelService.removeByType(UserGroupActionSidepanelComponent);\n }\n\n ngAfterViewInit(): void {\n this.handleSearchChange = addTypeResetToInputSearch(this.mbsInputSearchRef);\n\n queueMicrotask(() => {\n this.updateMaxHeight();\n canAbilityCdRef.call(this) && this.cdRef.detectChanges();\n });\n }\n\n private updateMaxHeight(): void {\n const screenHeight: number = this.window.screen.height;\n\n this.maxHeight = screenHeight > MIN_SCREEN_HEIGHT && this.mbsTableElRef ? getMaxHeight(this.mbsTableElRef.nativeElement) : '';\n }\n\n enableBackupForAll(): void {\n this.userService.addAllUsersToBackup().subscribe({\n next: () => {\n this.domainService.fetchDomainStatistic();\n this.userService.getUsers();\n this.toastService.success(\n this.i18nPipe.transform(this.moduleUsers + ':toast.body.addAllToBackup', { format: 'capitalize' }),\n this.#toastTitleSuccess\n );\n },\n error: (res: HttpErrorResponse) => hasErrorResponseText(res) && this.toastService.error(getErrorText(res), this.#toastTitleError)\n });\n }\n\n handleCheckUsers(users: User[]): void {\n this.selectedItems = users;\n\n if (this.groupActionsSidepanel.genericPanel.show) {\n users.length > 0\n ? this.handleGroupAction(ApplyTo.Selected, GroupActionType.General)\n : this.groupActionsSidepanel.genericPanel.close();\n }\n }\n\n handleSelectUser(user: User): void {\n this.handleOpenSidepanelForSingleUser(assign({}, user));\n }\n\n handleSort({ column, direction }: SortEvent): void {\n this.orderBy = { column, direction };\n this.userService.clearCache();\n this.userService.orderBy = getOdataOrderBy(column, direction);\n }\n\n handleFiltering(value: TableFilters): void {\n if (this.filter == value) return;\n\n this.filter = value;\n\n switch (this.filter) {\n case TableFilters.All:\n this.setFilterAll();\n break;\n case TableFilters.InBackup:\n this.setFilterInBackup();\n break;\n case TableFilters.NotInBackup:\n this.setFilterNotInBackup();\n break;\n case TableFilters.InBackupNotInDomain:\n this.setFilterInBackupNotInDomain();\n break;\n case TableFilters.Suspended:\n this.setFilterSuspended();\n break;\n }\n }\n\n private setFilterAll(): void {\n this.userService.inBackup = null;\n this.userService.userProviderState = UserFiltersEnum.all;\n }\n\n private setFilterInBackup(): void {\n this.userService.inBackup = true;\n this.userService.userProviderState = UserFiltersEnum.all;\n }\n\n private setFilterNotInBackup(): void {\n this.userService.inBackup = false;\n this.userService.userProviderState = UserFiltersEnum.inDomain;\n }\n\n private setFilterInBackupNotInDomain(): void {\n this.userService.inBackup = null;\n this.userService.userProviderStateWithTotalSize = { userProviderState: UserFiltersEnum.notInDomain, totalSize: true };\n }\n\n private setFilterSuspended(): void {\n this.userService.inBackup = null;\n this.userService.userProviderState = UserFiltersEnum.suspended;\n }\n\n handleSyncDomain(): void {\n const bodyError = this.i18nPipe.transform(this.moduleUsers + ':toast.body.syncDomainError', { format: 'capitalize' });\n const bodySuccess = this.i18nPipe.transform(this.moduleUsers + ':toast.body.syncDomainStarted', { format: 'capitalize' });\n\n this.domainService\n .syncDomain()\n .pipe(untilDestroyed(this))\n .subscribe({\n next: () => this.toastService.success(bodySuccess, this.#toastTitleSuccess),\n error: (res: HttpErrorResponse) =>\n hasErrorResponseText(res) && this.toastService.error(getErrorText(res, bodyError), this.#toastTitleError)\n });\n }\n\n // TODO: refactor saving in interaction with sidepanel components\n // eslint-disable-next-line sonarjs/cognitive-complexity\n handleGroupActionEvent(data: SaveEmit): void {\n const requests: {\n backup?: Observable;\n services?: Observable;\n permissions?: Observable;\n policies?: Observable;\n addAlternate?: Observable;\n editAlternateEmail?: Observable;\n changeAlternatePassword?: Observable;\n deleteTwoStep?: Observable;\n editTwoStep?: Observable;\n } = {};\n this._loading$.next(true);\n const toastUsers = data.userIds.length > 1 ? this.selectedItems.map((i) => i.Name).join(', ') : data.settings.Name;\n let successMessage = `Changes are saved successfully for the following user(s): ${toastUsers}`;\n\n if (data.newAlternateEmail) {\n successMessage = this.i18nPipe.transform(this.moduleUsers + ':toast.body.alternateEmailAdded', { format: 'capitalize' });\n requests.addAlternate = this.userService.addAlternateEmail(data.newAlternateEmail);\n }\n\n if (data.editAlternate) {\n if (data.editAlternate.deleteTwoStep) {\n requests.deleteTwoStep = this.userService.disableAlternateTwoStep(data.userIds[0], data.editAlternate.deleteTwoStep.password);\n }\n\n if (data.editAlternate.editTwoStep) {\n const twoStepData = data.editAlternate.editTwoStep;\n\n requests.editTwoStep = this.userService.enableAlternateTwoStep(data.userIds[0], twoStepData.password, twoStepData.responseCode);\n }\n }\n\n if (\n data.userIds.length > 1 ||\n this.groupActionUserSettings.InBackup !== data.settings.InBackup ||\n this.groupActionUserSettings.MailEnable !== data.settings.MailEnable ||\n this.groupActionUserSettings.DriveEnable !== data.settings.DriveEnable ||\n this.groupActionUserSettings.ContactsEnable !== data.settings.ContactsEnable ||\n this.groupActionUserSettings.CalendarEnable !== data.settings.CalendarEnable\n ) {\n const settings: BackupSetting[] = [\n { serviceType: ServiceType.All, enabled: data.settings.InBackup },\n { serviceType: ServiceType.Mail, enabled: data.settings.MailEnable },\n { serviceType: ServiceType.Drive, enabled: data.settings.DriveEnable },\n { serviceType: ServiceType.Contacts, enabled: data.settings.ContactsEnable },\n { serviceType: ServiceType.Calendar, enabled: data.settings.CalendarEnable }\n ];\n\n requests.services = this.userService.configureServices(data.userIds, settings);\n }\n\n if (\n this.groupActionUserSettings.SignInEnable !== data.settings.SignInEnable ||\n this.groupActionUserSettings.RestoreEnable !== data.settings.RestoreEnable\n ) {\n requests.permissions = this.userService.updatePermissions(data.settings, data.userIds);\n this.groupActionUserSettings.SignInEnable = data.settings.SignInEnable;\n this.groupActionUserSettings.RestoreEnable = data.settings.RestoreEnable;\n }\n\n if (data.attachedPolicies) {\n requests.policies = this.userService.updateAttachedPolicies(data.userIds, data.attachedPolicies);\n }\n\n forkJoin(requests)\n .pipe(\n switchMap((result) => this.expandSavingRequests(result, requests)) as never,\n finalize(() => this._loading$.next(false))\n )\n .subscribe({\n next: ([result]) => {\n if ('addAlternate' in result || 'editAlternateEmail' in result) {\n this.groupActionsSidepanel.fetchAlternate();\n this.groupActionsSidepanel.user.AlternativeAccountExists = true;\n }\n\n this.groupActionUserSettings.SignInEnable = data.settings.SignInEnable;\n this.groupActionUserSettings.RestoreEnable = data.settings.RestoreEnable;\n this.groupActionUserSettings.InBackup = data.settings.InBackup;\n this.groupActionUserSettings.MailEnable = data.settings.MailEnable;\n this.groupActionUserSettings.DriveEnable = data.settings.DriveEnable;\n this.groupActionUserSettings.ContactsEnable = data.settings.ContactsEnable;\n this.groupActionUserSettings.CalendarEnable = data.settings.CalendarEnable;\n this.domainService.fetchDomainStatistic();\n this.userService.getUsers();\n this.toastService.success(successMessage, this.#toastTitleSuccess);\n },\n error: (res: HttpErrorResponse) => {\n hasErrorResponseText(res) && this.toastService.error(getErrorText(res), this.#toastTitleError);\n\n this.groupActionsSidepanel.resetSingleUserDataToPrevious();\n }\n });\n }\n\n private expandSavingRequests(result, requests): Observable {\n const requestPool$: Observable[] = [of(result)];\n const restoreEnableChanged = requests.permissions;\n\n if (restoreEnableChanged) {\n requestPool$.push(this.authService.getAuthUser(true));\n }\n\n return forkJoin(requestPool$);\n }\n\n exportToCSV(): void {\n this.downloadService.downloadBare('/BackupUsers/ExportToCsv').subscribe({\n next: (file) => {\n this.downloadService.saveAs(file, this.downloadService.generateFileName('users'));\n }\n });\n }\n\n private handleOpenSidepanelForSingleUser(user: User, type = GroupActionType.General): void {\n const isUserDeleted = this.getIsUserDeleted(user);\n\n this.groupActionsSidepanel.disabledServices = this.disabledServices;\n this.groupActionUserSettings.InBackup = user.InBackup;\n this.groupActionUserSettings.MailEnable = user.MailEnable;\n this.groupActionUserSettings.DriveEnable = user.DriveEnable;\n this.groupActionUserSettings.ContactsEnable = user.ContactsEnable;\n this.groupActionUserSettings.CalendarEnable = user.CalendarEnable;\n this.groupActionUserSettings.SignInEnable = user.SignInEnable;\n this.groupActionUserSettings.RestoreEnable = user.RestoreEnable;\n\n this.groupActionsSidepanel.type = type;\n this.groupActionsSidepanel.singleUser = true;\n this.groupActionsSidepanel.user$.next(user);\n this.groupActionsSidepanel.userIcon = this.getUserIconClass(user);\n this.groupActionsSidepanel.userIconCssClass = this.getUserColorClass(user);\n this.groupActionsSidepanel.isUserDeleted = isUserDeleted;\n this.groupActionsSidepanel.isGlobalAdmin = this.getIsGlobalAdmin(user, isUserDeleted);\n\n this.panelService.closeAll().pipe(take(1)).subscribe();\n this.groupActionsSidepanel.genericPanel.open();\n }\n\n handleGroupAction(applyTo: ApplyTo, type: GroupActionType): void {\n if (applyTo === ApplyTo.All) {\n this.users$.pipe(take(1)).subscribe((u) => {\n this.selectedItems = u;\n });\n }\n\n if (this.selectedItems.length === 0) {\n const body = this.i18nPipe.transform(this.moduleUsers + ':toast.body.noUserSelected', { format: 'capitalize' });\n\n this.toastService.info(body, this.#toastTitleInfo);\n\n return;\n } else if (this.selectedItems.length == 1) {\n this.handleOpenSidepanelForSingleUser(this.selectedItems[0], type);\n\n return;\n }\n\n const userIds: string[] = [];\n\n let inBackupCount = 0;\n let notInBackupCount = 0;\n\n this.selectedItems.forEach((u) => {\n userIds.push(u.Id);\n\n if (u.InBackup) {\n inBackupCount++;\n } else {\n notInBackupCount++;\n }\n });\n\n this.groupActionsSidepanel.type = type;\n this.groupActionsSidepanel.userIds = userIds;\n this.groupActionsSidepanel.singleUser = false;\n this.groupActionsSidepanel.userIcon = 'fa fa-users';\n this.groupActionsSidepanel.userIconCssClass = TextColor.info;\n this.groupActionsSidepanel.isUserDeleted = false;\n this.groupActionsSidepanel.isGlobalAdmin = false;\n\n if (type !== GroupActionType.DeleteBackup) {\n const inBackup = inBackupCount > notInBackupCount;\n\n this.groupActionsSidepanel.loading = true;\n forkJoin([this.userService.getUsersServices(userIds), this.userService.getUsersPermissions(userIds)])\n .pipe(finalize(() => (this.groupActionsSidepanel.loading = false)))\n .subscribe(([general, permissions]) => {\n this.groupActionsSidepanel.disabledServices = this.disabledServices;\n this.groupActionUserSettings.InBackup = inBackup;\n this.groupActionUserSettings.MailEnable = general.MailOn;\n this.groupActionUserSettings.DriveEnable = general.DriveOn;\n this.groupActionUserSettings.ContactsEnable = general.ContactsOn;\n this.groupActionUserSettings.CalendarEnable = general.CalendarOn;\n this.groupActionUserSettings.SignInEnable = permissions.SignInEnable;\n this.groupActionUserSettings.RestoreEnable = permissions.RestoreEnable;\n\n this.groupActionsSidepanel.user = cloneDeep(this.groupActionUserSettings);\n });\n }\n\n this.panelService.closeAll().pipe(take(1)).subscribe();\n this.groupActionsSidepanel.genericPanel.open();\n }\n\n deleteSelectedUser(template: TemplateRef): void {\n const title = this.i18nPipe.transform(this.moduleUsers + ':modal.title.deleteUser', { format: 'title' });\n const btnText = this.i18nPipe.transform(this.moduleUsers + ':modal.button.delete', { format: 'title' });\n const settings: ModalSettings = {\n size: MbsSize.sm,\n header: { title },\n footer: { okButton: { text: btnText, type: 'danger' } }\n };\n\n from(this.modalService.open(settings, template).catch(noop))\n .pipe(\n switchMap((result) =>\n result\n ? this.userService.deleteUser(this.selectedItems.length === 1 ? this.selectedItems[0].Id : this.selectedItems.map((i) => i.Id))\n : EMPTY\n ),\n untilDestroyed(this)\n )\n .subscribe({\n next: () => this.toastService.success(this.deleteJobTransferredRef, this.#toastTitleSuccess),\n error: (res: HttpErrorResponse) => hasErrorResponseText(res) && this.toastService.error(getErrorText(res), this.#toastTitleError)\n });\n }\n\n dropDownFilter(prop: string, value: boolean): void {\n this.userService.clearCache();\n this.userService[prop] = value;\n }\n\n pageChange(page: number): void {\n this.paginationOptions.page = page;\n this.userService.page = page;\n }\n\n pageSizeChange(options: PaginationOptions): void {\n this.paginationOptions = { ...options, page: 1 };\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.userService.state.page = 1;\n this.userService.pageSize = this.paginationOptions.pageSize;\n }\n\n getUserClasses(user: User): string[] {\n const classes: string[] = [];\n\n classes.push(this.getUserColorClass(user));\n classes.push(this.getUserIconClass(user));\n\n return classes;\n }\n\n private getUserColorClass = (user: User): string => {\n const { InBackup, UserProviderState, TotalSize } = user;\n\n switch (UserProviderState) {\n case UserFiltersEnum.inDomain:\n return InBackup ? TextColor.success : TextColor.info;\n case UserFiltersEnum.notInDomain:\n return TotalSize > 0 ? TextColor.dark : TextColor.muted;\n case UserFiltersEnum.suspended:\n return TextColor.danger;\n default:\n return null;\n }\n };\n\n private getUserIconClass(user: User): string {\n return user.Id === this.authUserId ? 'fa fa-user-o' : 'fa fa-user';\n }\n\n getUserTooltip(user: User): string {\n const { InBackup, UserProviderState, TotalSize } = user;\n const isUserDeleted = this.getIsUserDeleted(user);\n const role = this.getUserTooltipRole(user, isUserDeleted);\n\n switch (UserProviderState) {\n case UserFiltersEnum.inDomain:\n return InBackup\n ? role + this.i18nPipe.transform(this.moduleUsers + ':grid-nav.includedInBackup', { format: 'title' })\n : role + this.i18nPipe.transform(this.moduleUsers + ':grid-nav.notInBackup', { format: 'title' });\n case UserFiltersEnum.notInDomain:\n return InBackup || (isUserDeleted && TotalSize > 0)\n ? role + this.i18nPipe.transform(this.moduleUsers + ':grid-nav.withBackupButNotInDomain', { format: 'title' })\n : role + this.i18nPipe.transform(this.moduleUsers + ':grid-nav.notInBackupAndNotInDomain', { format: 'title' });\n case UserFiltersEnum.suspended:\n return role + this.i18nPipe.transform(this.moduleUsers + ':grid-nav.blockedSuspended', { format: 'title' });\n default:\n return null;\n }\n }\n\n private getUserTooltipRole(user: User, isUserDeleted: boolean): string {\n const end = ': ';\n\n if (user.Id === this.authUserId) {\n return this.i18nPipe.transform(this.moduleUsers + ':grid.you', { format: 'capitalize' }) + end;\n } else if (isUserDeleted) {\n return this.i18nPipe.transform(this.moduleUsers + ':grid.userDeleted', { format: 'capitalize' }) + end;\n } else {\n return this.i18nPipe.transform(this.moduleUsers + ':grid.user', { format: 'capitalize' }) + end;\n }\n }\n\n public readonly getIsUserDeleted = (user: User): boolean =>\n user.UserProviderState === UserFiltersEnum.notInDomain && user.InBackup === false;\n\n public readonly getIsGlobalAdmin = (user: User, isUserDeleted: boolean): boolean => !isUserDeleted && user.IsMainUser;\n\n getBackupLicenseStatus(user: User): BackupLicenseStatuses {\n if (!user.InBackup) {\n return BackupLicenseStatuses.Inactive;\n }\n\n if (!this.servicesAvailable(user)) {\n return BackupLicenseStatuses.NotAvailable;\n }\n\n return BackupLicenseStatuses.Assigned;\n }\n\n servicesAvailable(user: User): boolean {\n const NoLicensesAvailable = 'NoLicensesAvailable';\n\n return (\n (user.MailEnable ? user.EmailLastBackupStopReason !== NoLicensesAvailable : true) &&\n (user.DriveEnable ? user.DriveLastBackupStopReason !== NoLicensesAvailable : true) &&\n (user.ContactsEnable ? user.ContactLastBackupStopReason !== NoLicensesAvailable : true) &&\n (user.CalendarEnable ? user.CalendarLastBackupStopReason !== NoLicensesAvailable : true)\n );\n }\n\n backupLicenseColorCssClass(user: User): 'success' | 'danger' | 'muted' {\n const status = this.getBackupLicenseStatus(user);\n\n switch (status) {\n case BackupLicenseStatuses.Assigned:\n return 'success';\n case BackupLicenseStatuses.NotAvailable:\n return 'danger';\n default:\n return 'muted';\n }\n }\n\n handleSearchClear(): void {\n this.userService.searchTerm = '';\n this.userService.getUsers();\n }\n\n handleChangeSelect(): void {\n this.filter = null;\n }\n\n handleSortPolicyType(type: PolicyType | 'All'): void {\n this.userService.policyType = type;\n }\n\n private getTableHeaders(): TableHeader[] {\n return [\n {\n name: '',\n headerClass: '-center',\n class: '-center',\n gridColMin: '35px',\n gridColSize: '35px'\n },\n {\n name:\n this.i18nPipe.transform(this.moduleUsers + ':grid.user', { format: 'title' }) +\n '/' +\n this.i18nPipe.transform(this.moduleUsers + ':grid.email', { format: 'title' }),\n overflow: true,\n gridColMin: '98px',\n gridColSize: '3fr',\n sort: 'Name'\n },\n {\n name: this.i18nPipe.transform(this.moduleUsers + ':grid.lastBackup', { format: 'title' }),\n gridColMin: '147px',\n gridColSize: '2fr',\n sort: 'LastBackupDate'\n },\n {\n name: this.i18nPipe.transform(this.moduleUsers + ':grid.backupSize', { format: 'title' }),\n overflow: true,\n class: this.getRightAlignClass(),\n headerClass: this.getRightAlignClass(),\n gridColMin: '91px',\n gridColSize: '1fr',\n sort: 'TotalSize'\n },\n {\n name: this.i18nPipe.transform(this.moduleUsers + ':grid.backupLicense', { format: 'title' }),\n gridColMin: '120px',\n gridColSize: '2fr'\n },\n {\n name: '',\n gridColMin: '125px',\n gridColSize: '1.5fr',\n class: '-stretch',\n headerName: 'policyType'\n },\n {\n name: '',\n gridColMin: '45px',\n gridColSize: '45px',\n class: 'h5 my-0',\n headerName: 'mail'\n },\n {\n name: '',\n gridColMin: '45px',\n gridColSize: '45px',\n class: 'h5 my-0',\n headerName: 'drive'\n },\n {\n name: '',\n gridColMin: '45px',\n gridColSize: '45px',\n class: 'h5 my-0',\n headerName: 'contact'\n },\n {\n name: '',\n gridColMin: '45px',\n gridColSize: '45px',\n class: 'h5 my-0',\n headerName: 'calendar'\n }\n ];\n }\n\n private getRightAlignClass(): string {\n return this.screenX >= 1600 ? '-right pr-5' : '-right';\n }\n}\n","\n\n \n\n \n {{ names }} selected\n \n\n \n\n
\n {{ moduleUsers + ':modal.subTitle.autoActivate' | i18next: { format: 'title' } }}\n
\n\n

\n {{ moduleUsers + ':modal.body.newGroupSettings' | i18next: { format: 'capitalize' } }}\n

\n\n \n \n\n \n \n\n \n \n\n
\n\n
\n\n \n\n \n {{ moduleButton + ':button.apply' | i18next: { format: 'title' } }}\n \n\n \n {{ moduleButton + ':button.cancel' | i18next: { format: 'title' } }}\n \n\n \n\n
\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, OnInit, ViewChild } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\nimport { AutoActivationMode, AzureGroup, NewGroupSettings, OrganizationalUnit } from '@common/models';\nimport { AuthService, AzureGroupsService } from '@common/services';\nimport { OrganizationalUnitsService } from '@common/services/organizational-units.service';\nimport { getErrorText, hasErrorResponseText } from '@common/utils';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { I18NextPipe } from 'angular-i18next';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { isArray, isNil } from 'lodash';\nimport { ModalComponent, ToastService } from 'mbs-ui-kit';\nimport { BehaviorSubject } from 'rxjs';\nimport { finalize } from 'rxjs/operators';\n\ntype SingleGroupType = AzureGroup | OrganizationalUnit;\ntype MultiGroupType = AzureGroup[] | OrganizationalUnit[];\ntype BaseModalDataType = {\n selected: SingleGroupType | MultiGroupType;\n ids?: string;\n selectedCount?: number;\n};\n\n@UntilDestroy()\n@Component({\n templateUrl: './edit-group-setting-modal.component.html',\n styleUrls: ['./edit-group-setting-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class EditGroupSettingModalComponent implements OnInit {\n @ViewChild(ModalComponent, { static: true }) baseModal: ModalComponent;\n\n readonly #toastTitleSuccess = this.i18nPipe.transform('toast.success.title', { format: 'title' });\n readonly #toastTitleError = this.i18nPipe.transform('toast.error.title', { format: 'title' });\n\n public readonly loading$: BehaviorSubject = new BehaviorSubject(false);\n\n public readonly AutoActivationMode = AutoActivationMode;\n public readonly moduleUsers = I18_NAMESPACE_APPS_UI.users;\n public readonly moduleButton = I18_NAMESPACE_APPS_UI.button;\n public readonly saveLoading$: BehaviorSubject = new BehaviorSubject(false);\n\n public formGroup: FormGroup;\n\n get baseModalData(): BaseModalDataType {\n return this.baseModal.data as BaseModalDataType;\n }\n\n get isGroupAction(): boolean {\n return isArray(this.baseModalData.selected);\n }\n\n get autoActivationModeCtrl(): FormControl {\n return this.formGroup.controls.autoActivationMode;\n }\n\n get isGoogle(): boolean {\n return this.authService.isGoogle;\n }\n\n get isNotChanged(): boolean {\n return this.isGroupAction\n ? isNil(this.autoActivationModeCtrl.value)\n : (this.baseModalData.selected as SingleGroupType)?.AutoActivationMode === this.autoActivationModeCtrl.value;\n }\n\n get names(): string | number {\n return this.isGroupAction ? this.baseModalData.selectedCount : (this.baseModalData.selected as SingleGroupType).Name;\n }\n\n constructor(\n private authService: AuthService,\n private i18nPipe: I18NextPipe,\n private fb: FormBuilder,\n private azureGroupsService: AzureGroupsService,\n private orgUnitsService: OrganizationalUnitsService,\n private toastService: ToastService\n ) {}\n\n ngOnInit(): void {\n this.initForm();\n }\n\n initForm(): void {\n this.formGroup = this.fb.group({\n autoActivationMode: [\n this.isGroupAction\n ? this.baseModalData.selectedCount === 1\n ? this.baseModalData.selected?.[0].AutoActivationMode\n : null\n : (this.baseModalData.selected as SingleGroupType).AutoActivationMode\n ]\n });\n }\n\n private groupService(): OrganizationalUnitsService | AzureGroupsService {\n return this.isGoogle ? this.orgUnitsService : this.azureGroupsService;\n }\n\n handleSave(): void {\n const payload: NewGroupSettings = {\n AutoActivationMode: this.autoActivationModeCtrl.value,\n Ids: this.isGroupAction ? (this.baseModalData.ids as unknown as string[]) : [(this.baseModalData.selected as SingleGroupType).Id]\n };\n\n this.saveLoading$.next(true);\n this.groupService()\n .updateAutoActivation(payload)\n .pipe(\n finalize(() => this.saveLoading$.next(false)),\n untilDestroyed(this)\n )\n .subscribe({\n next: () => {\n this.toastService.success(\n this.i18nPipe.transform(this.moduleUsers + ':toast.body.settings', { format: 'capitalize' }),\n this.#toastTitleSuccess\n );\n this.baseModal.save();\n },\n error: (res: HttpErrorResponse) => hasErrorResponseText(res) && this.toastService.error(getErrorText(res), this.#toastTitleError)\n });\n }\n\n handleCancel(): void {\n this.baseModal.close();\n }\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, OnInit, ViewChild } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\nimport { AutoActivationMode, NewGroupSettings } from '@common/models';\nimport { AuthService, AzureGroupsService } from '@common/services';\nimport { OrganizationalUnitsService } from '@common/services/organizational-units.service';\nimport { getErrorText, hasErrorResponseText } from '@common/utils';\nimport { UntilDestroy } from '@ngneat/until-destroy';\nimport { I18NextPipe } from 'angular-i18next';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { ModalComponent, ToastService } from 'mbs-ui-kit';\nimport { BehaviorSubject } from 'rxjs';\nimport { finalize } from 'rxjs/operators';\n\n@UntilDestroy()\n@Component({\n templateUrl: './new-group-settings-modal.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NewGroupSettingsModalComponent implements OnInit {\n @ViewChild(ModalComponent, { static: true }) baseModal: ModalComponent;\n\n readonly #toastTitleSuccess = this.i18nPipe.transform('toast.success.title', { format: 'title' });\n readonly #toastTitleError = this.i18nPipe.transform('toast.error.title', { format: 'title' });\n\n public readonly loading$: BehaviorSubject = new BehaviorSubject(false);\n\n public readonly AutoActivationMode = AutoActivationMode;\n public readonly moduleUsers = I18_NAMESPACE_APPS_UI.users;\n public readonly moduleButton = I18_NAMESPACE_APPS_UI.button;\n public readonly saveLoading$: BehaviorSubject = new BehaviorSubject(false);\n\n public formGroup: FormGroup;\n\n get baseModalData(): NewGroupSettings {\n return this.baseModal.data as NewGroupSettings;\n }\n\n get autoActivationModeCtrl(): FormControl {\n return this.formGroup.controls.autoActivationMode;\n }\n\n get isGoogle(): boolean {\n return this.authService.isGoogle;\n }\n\n constructor(\n private authService: AuthService,\n private i18nPipe: I18NextPipe,\n private fb: FormBuilder,\n private azureGroupsService: AzureGroupsService,\n private orgUnitsService: OrganizationalUnitsService,\n private toastService: ToastService\n ) {}\n\n ngOnInit(): void {\n this.initForm();\n }\n\n initForm(): void {\n this.formGroup = this.fb.group({\n autoActivationMode: [this.baseModalData.AutoActivationMode]\n });\n }\n\n private groupService(): OrganizationalUnitsService | AzureGroupsService {\n return this.isGoogle ? this.orgUnitsService : this.azureGroupsService;\n }\n\n handleSave(): void {\n const payload: NewGroupSettings = {\n AutoActivationMode: this.autoActivationModeCtrl.value\n };\n\n this.saveLoading$.next(true);\n this.groupService()\n .updateNewGroupSettings(payload)\n .pipe(finalize(() => this.saveLoading$.next(false)))\n .subscribe({\n next: () => {\n this.toastService.success(\n this.i18nPipe.transform(this.moduleUsers + ':toast.body.autoActivationSettings', { format: 'capitalize' }),\n this.#toastTitleSuccess\n );\n this.baseModal.save(true);\n },\n error: (res: HttpErrorResponse) => hasErrorResponseText(res) && this.toastService.error(getErrorText(res), this.#toastTitleError)\n });\n }\n\n handleCancel(): void {\n this.baseModal.close();\n }\n}\n","\n\n \n\n

\n {{ moduleUsers + ':modal.body.newGroupSettings' | i18next: { format: 'capitalize' } }}\n

\n\n \n\n \n \n\n \n \n\n \n \n\n \n\n
\n\n \n\n \n {{ moduleButton + ':button.save' | i18next: { format: 'title' } }}\n \n\n \n {{ moduleButton + ':button.cancel' | i18next: { format: 'title' } }}\n \n\n \n\n
\n","
\n

\n \n \n {{\n isGoogle\n ? (moduleUsers + ':pageName.userUnitsGoogle' | i18next: { format: 'title' })\n : (moduleUsers + ':pageName.userGroupsOffice' | i18next: { format: 'title' })\n }}\n \n

\n
\n\n
\n\n
\n\n
\n\n \n
\n\n
\n\n 768 ? '160px' : 'auto'\"\n [(ngModel)]=\"filterModeModel\"\n (ngModelChange)=\"handleChangeMode($event)\"\n [ngModelOptions]=\"{ standalone: true }\"\n [placeholder]=\"moduleUsers + ':placeholder.autoActivation' | i18next: { format: 'title' }\"\n [disabledSelf]=\"loading$ | async\"\n class=\"d-block pb-2\"\n appendTo=\"body\"\n [searchable]=\"false\"\n [clearable]=\"true\"\n [id]=\"'AutoActivationMode'\">\n\n
\n\n
\n
\n
\n \n {{\n isGoogle\n ? (moduleButton + ':button.newUnitAutoActivation' | i18next: { format: 'title' })\n : (moduleButton + ':button.newGroupAutoActivation' | i18next: { format: 'title' })\n }}\n \n
\n
\n
\n\n
\n\n
\n\n\n\n \n\n \n \n {{ moduleUsers + ':grid-nav.editAutoActivationMode' | i18next: { format: 'title' } }}\n \n \n\n \n\n \n \n {{\n isGoogle\n ? (moduleUsers + ':grid.allUnits' | i18next: { format: 'capitalize' })\n : (moduleUsers + ':grid.allGroups' | i18next: { format: 'capitalize' })\n }}: {{ paginationOptions.dataSize }}\n \n \n\n \n \n {{ isGoogle ? group?.Path || group?.Name : group?.Name }}\n \n \n\n \n\n {{ group.AutoActivationMode | autoActivationMode }}\n\n \n\n \n\n \n\n \n\n\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostListener,\n Inject,\n OnDestroy,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport { MIN_SCREEN_HEIGHT, RoutePath, WINDOW } from '@common';\nimport { AutoActivationMode, AutoActiveActionType, AzureGroup, OrganizationalUnit } from '@common/models';\nimport { AuthService, AzureGroupsService, DomainService } from '@common/services';\nimport { OrganizationalUnitsService } from '@common/services/organizational-units.service';\nimport {\n SmartSearchModelTemplateUserGroupsService,\n UserGroupsTagsEnum,\n UserGroupsTagsMap\n} from '@common/services/smart-search/user-groups';\nimport {\n canAbilityCdRef,\n getDefaultPaginationOptions,\n getLoadingState,\n getMaxHeight,\n getOdataOrderBy,\n hasActionsQueue\n} from '@common/utils';\nimport { FilterOptions, getFilterByEq } from '@common/utils/functions/search';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { EditGroupSettingModalComponent } from '@pages/users/user-groups/modals/edit-group-setting/edit-group-setting-modal.component';\nimport { NewGroupSettingsModalComponent } from '@pages/users/user-groups/modals/new-group-settings/new-group-settings-modal.component';\nimport { I18NextPipe } from 'angular-i18next';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { cloneDeep, noop } from 'lodash';\nimport {\n MbsSize,\n ModalService,\n ModalSettings,\n ModelTemplate,\n PaginationOptions,\n SharedPersistentStateEnum,\n SmartSearchModel,\n SortEvent,\n TableHeader\n} from 'mbs-ui-kit';\nimport { ExtendedTableRow } from 'mbs-ui-kit/table-grid/table/table.component';\nimport { BehaviorSubject, Observable, from, of, switchMap } from 'rxjs';\nimport { catchError, filter, finalize, tap } from 'rxjs/operators';\n\n@UntilDestroy()\n@Component({\n selector: 'app-user-groups',\n templateUrl: './user-groups.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class UserGroupsComponent implements OnInit, OnDestroy, AfterViewInit {\n @ViewChild('mbsTableGridRef', { static: false, read: ElementRef }) mbsTableGridElRef: ElementRef;\n\n readonly #toastTitleSuccess = this.i18nPipe.transform('toast.success.title', { format: 'title' });\n readonly #loading$: BehaviorSubject = new BehaviorSubject(false);\n\n public readonly loadingNewGroup$ = new BehaviorSubject(false);\n public readonly loadingEnabledAllGroupMembers$ = new BehaviorSubject(false);\n public readonly loadingEnabledNewlyCreatedUsers$ = new BehaviorSubject(false);\n\n private readonly defaultToastBodySuccessText: string;\n private readonly constSortProp = 'Order';\n\n public readonly headers: TableHeader[];\n public readonly moduleUsers = I18_NAMESPACE_APPS_UI.users;\n public readonly moduleButton = I18_NAMESPACE_APPS_UI.button;\n public readonly viewMode: SharedPersistentStateEnum = SharedPersistentStateEnum.table;\n public readonly MbsSize = MbsSize;\n public readonly RoutePath = RoutePath;\n public readonly AutoActiveActionType = AutoActiveActionType;\n\n readonly #allUsers = this.i18nPipe.transform(this.moduleUsers + ':grid.allUsers', { format: 'title' });\n readonly #newUsers = this.i18nPipe.transform(this.moduleUsers + ':grid.newCreated', { format: 'title' });\n readonly #disabled = this.i18nPipe.transform(this.moduleUsers + ':grid.disabled', { format: 'title' });\n\n public oneEntityKey: string;\n public manyEntitiesKey: string;\n\n public isSelectAllOnAllPages = false;\n\n public filterModeModel = null;\n public modes = [this.#allUsers, this.#newUsers, this.#disabled];\n public selectedItems: AzureGroup[] | OrganizationalUnit[] = [];\n public searchTemplates: ModelTemplate[] = [];\n public orderBy: SortEvent = { column: this.groupService().name.prop, direction: 'asc' };\n public data$ = new BehaviorSubject([]);\n public loading$: Observable;\n public maxHeight$: BehaviorSubject = new BehaviorSubject('');\n public paginationOptions: PaginationOptions = getDefaultPaginationOptions();\n\n get isGoogle(): boolean {\n return this.authService.isGoogle;\n }\n\n get prefix(): string {\n return this.authService?.prefix;\n }\n\n get selectedCount(): number {\n return this.isSelectAllOnAllPages ? this.paginationOptions.dataSize : this.selectedItems?.length;\n }\n\n get screenX(): number {\n return this.window.innerWidth;\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event: Event): void {\n if (event.target instanceof Window) {\n this.updateMaxHeight();\n }\n }\n\n constructor(\n @Inject(WINDOW) private window: Window,\n private i18nPipe: I18NextPipe,\n private azureGroupsService: AzureGroupsService,\n private orgUnitsService: OrganizationalUnitsService,\n private domainService: DomainService,\n private authService: AuthService,\n private cdRef: ChangeDetectorRef,\n private modalService: ModalService,\n templates: SmartSearchModelTemplateUserGroupsService\n ) {\n this.searchTemplates = [templates.NameTag];\n this.loading$ = getLoadingState([this.#loading$.pipe(hasActionsQueue())]);\n this.headers = this.getTableHeaders();\n this.defaultToastBodySuccessText = i18nPipe.transform(this.moduleUsers + ':toast.body.requestWasSentSuccessfully', {\n format: 'capitalize'\n });\n this.oneEntityKey = this.isGoogle ? this.moduleUsers + ':grid.unit' : this.moduleUsers + ':grid.group';\n this.manyEntitiesKey = this.isGoogle ? this.moduleUsers + ':grid.units' : this.moduleUsers + ':grid.groups';\n }\n\n ngOnInit(): void {\n this.initCustomOrderBy();\n this.fetchData();\n }\n\n ngAfterViewInit(): void {\n queueMicrotask(() => {\n this.updateMaxHeight();\n canAbilityCdRef.call(this) && this.cdRef.detectChanges();\n });\n }\n\n ngOnDestroy(): void {\n this.groupService().clearCache();\n }\n\n private groupService(): OrganizationalUnitsService | AzureGroupsService {\n return this.isGoogle ? this.orgUnitsService : this.azureGroupsService;\n }\n\n private initCustomOrderBy(): void {\n this.groupService().orderBy = getOdataOrderBy(this.orderBy.column, this.orderBy.direction, this.constSortProp);\n }\n\n fetchData(): void {\n this.#loading$.next(true);\n\n this.groupService()\n .fetchGroups()\n .pipe(\n catchError(() => of({ count: 0, data: [] })),\n finalize(() => this.#loading$.next(false)),\n untilDestroyed(this)\n )\n .subscribe({\n next: ({ data, count }) => {\n this.updatePaginationOptionsDataSize(count);\n this.data$.next(data);\n }\n });\n }\n\n private updatePaginationOptionsDataSize(count: number): void {\n this.paginationOptions = {\n ...this.paginationOptions,\n dataSize: count\n };\n }\n\n handleGroupChange(group: AzureGroup | OrganizationalUnit): void {\n const settings: ModalSettings = {\n size: MbsSize.sm,\n data: {\n selected: group\n }\n };\n\n from(this.modalService.openCustom(EditGroupSettingModalComponent, settings))\n .pipe(\n filter(Boolean),\n switchMap(() => this.domainService.getFetchDomain()),\n untilDestroyed(this)\n )\n .subscribe({\n next: () => this.fetchData()\n });\n }\n\n private updateGroupProperty(group: AzureGroup, options?: { isError: boolean; property?: string }): void {\n const { isError = false, property = 'AutoAddUserToBackup' } = options || {};\n const founded = this.data$.value.find((g) => g.Id === group.Id);\n\n founded[property] = isError ? !group[property] : group[property];\n }\n\n handlePageChange(page: number): void {\n this.paginationOptions.page = page;\n this.groupService().page = page;\n\n this.fetchData();\n }\n\n handlePageSizeChange(options: PaginationOptions): void {\n this.paginationOptions = { ...options, page: 1 };\n this.groupService().page = 1;\n this.groupService().pageSize = this.paginationOptions.pageSize;\n\n this.fetchData();\n }\n\n handleSort({ column, direction }: SortEvent): void {\n this.orderBy = { column, direction };\n this.groupService().orderBy = getOdataOrderBy(column, direction, this.constSortProp);\n\n this.fetchData();\n }\n\n handleUpdateFilter(searchObj: SmartSearchModel): void {\n if (!searchObj) return;\n\n this.groupService().updateFilter(this.normalizeAutoActivation(searchObj));\n this.resetPagePagination();\n this.fetchData();\n }\n\n private normalizeAutoActivation(model: SmartSearchModel): SmartSearchModel {\n const clone = cloneDeep(model);\n const autoActivation = UserGroupsTagsMap.get(UserGroupsTagsEnum.AutoActivation);\n const autoActivateNewUsersOnlyTag = this.i18nPipe.transform(this.moduleUsers + autoActivation.tagKey, {\n format: 'title'\n });\n\n if (clone[autoActivateNewUsersOnlyTag]) {\n switch (clone[autoActivateNewUsersOnlyTag][0].value) {\n case this.#allUsers:\n clone[autoActivateNewUsersOnlyTag][0].value = AutoActivationMode.AllUsers;\n break;\n case this.#newUsers:\n clone[autoActivateNewUsersOnlyTag][0].value = AutoActivationMode.NewUsers;\n break;\n case this.#disabled:\n clone[autoActivateNewUsersOnlyTag][0].value = AutoActivationMode.Disabled;\n break;\n default:\n clone[autoActivateNewUsersOnlyTag][0].value = '';\n }\n }\n\n return clone;\n }\n\n handleSearch(): void {\n this.resetPagePagination();\n this.fetchData();\n }\n\n trackBy(index: number, item: ExtendedTableRow): string {\n return item?.item?.Id;\n }\n\n private resetPagePagination(): void {\n this.paginationOptions.page = 1;\n this.groupService().page = 1;\n }\n\n private updateMaxHeight(): void {\n const screenHeight: number = this.window.screen.height;\n\n this.maxHeight$.next(\n screenHeight > MIN_SCREEN_HEIGHT && this.mbsTableGridElRef ? getMaxHeight(this.mbsTableGridElRef.nativeElement) : ''\n );\n }\n\n handleSelect(items: AzureGroup[] | OrganizationalUnit[]): void {\n this.selectedItems = items;\n }\n\n handleChangeMode(mode: string): void {\n const autoActivation = UserGroupsTagsMap.get(UserGroupsTagsEnum.AutoActivation);\n\n switch (mode) {\n case this.#allUsers: {\n const options: FilterOptions = {\n model: [{ value: AutoActivationMode.AllUsers }],\n prop: autoActivation.prop\n };\n this.groupService().filter = getFilterByEq(options, true);\n break;\n }\n case this.#newUsers: {\n const options: FilterOptions = {\n model: [{ value: AutoActivationMode.NewUsers }],\n prop: autoActivation.prop\n };\n this.groupService().filter = getFilterByEq(options, true);\n break;\n }\n case this.#disabled: {\n const options: FilterOptions = {\n model: [{ value: AutoActivationMode.Disabled }],\n prop: autoActivation.prop\n };\n this.groupService().filter = getFilterByEq(options, true);\n break;\n }\n default:\n this.groupService().filter = '';\n }\n\n this.resetPagePagination();\n this.fetchData();\n }\n\n handleAutoActiveAction(action: AutoActiveActionType): void {\n switch (action) {\n case AutoActiveActionType.All: {\n const settings: ModalSettings = {\n size: MbsSize.sm,\n data: null\n };\n\n this.loadingNewGroup$.next(true);\n this.groupService()\n .getNewGroupSettings()\n .pipe(\n finalize(() => this.loadingNewGroup$.next(false)),\n switchMap((res) => {\n settings.data = res;\n\n return this.modalService.openCustom(NewGroupSettingsModalComponent, settings).catch(noop);\n }),\n filter(Boolean),\n switchMap(() => this.domainService.getFetchDomain()),\n untilDestroyed(this)\n )\n .subscribe({\n next: () => {\n this.selectedItems = [];\n this.fetchData();\n }\n });\n\n break;\n }\n case AutoActiveActionType.EditAutoActivationMode: {\n const settings: ModalSettings = {\n size: MbsSize.sm,\n data: {\n selected: this.selectedItems,\n selectedCount: this.selectedCount\n }\n };\n\n if (!this.isSelectAllOnAllPages) {\n settings.data.ids = this.selectedItems.map((i) => i.Id);\n }\n\n from(this.modalService.openCustom(EditGroupSettingModalComponent, settings))\n .pipe(\n filter(Boolean),\n tap(() => this.loadingEnabledNewlyCreatedUsers$.next(true)),\n switchMap(() => this.domainService.getFetchDomain()),\n finalize(() => this.loadingEnabledNewlyCreatedUsers$.next(false)),\n untilDestroyed(this)\n )\n .subscribe({\n next: () => {\n this.selectedItems = [];\n this.fetchData();\n }\n });\n\n break;\n }\n default:\n throw new Error('Caught error manually: Unknown action type');\n }\n }\n\n private getTableHeaders(): TableHeader[] {\n return [\n {\n name: this.isGoogle\n ? this.i18nPipe.transform(this.moduleUsers + ':grid.path', { format: 'title' })\n : this.i18nPipe.transform(this.moduleUsers + ':grid.name', { format: 'title' }),\n gridColMin: '150px',\n gridColSize: '2fr',\n class: 'text-overflow',\n sort: this.groupService().name.prop\n },\n {\n name: this.i18nPipe.transform(this.moduleUsers + ':grid.autoActivate', { format: 'title' }),\n gridColMin: '120px',\n gridColSize: '3fr',\n sort: 'AutoActivationMode'\n },\n {\n name: '',\n gridColSize: '80px',\n gridColMin: '40px',\n class: '-end'\n }\n ];\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { RoutePath } from '@common';\nimport { partialRoutingDataByTitle } from '@common/utils';\nimport { UsersComponent } from '@pages/users/component/users.component';\nimport { UserGroupsComponent } from '@pages/users/user-groups/user-groups.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: UsersComponent\n },\n {\n path: RoutePath.UserGroups,\n component: UserGroupsComponent,\n data: {\n ...partialRoutingDataByTitle('Users Group')\n }\n }\n];\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class UserRoutingModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { DeleteUserBackupModule } from '@common/components/delete-user-backup/delete-user-backup.module';\nimport { ExportToPstModule } from '@common/components/export-to-pst/export-to-pst.module';\nimport { ChangeEmailModalComponent } from '@common/components/modals/change-email-modal/change-email-modal.component';\nimport { ChangePasswordModalComponent } from '@common/components/modals/change-password-modal/change-password-modal.component';\nimport { ConfirmPasswordModalComponent } from '@common/components/modals/confirm-password-modal/confirm-password-modal.component';\nimport { EditCreateRetentionPolicyModalModule } from '@common/components/modals/edit-create-retention-policy-modal/edit-create-retention-policy-modal.module';\nimport { AutoActivationModePipe, SelectGridAllButtonTextPipe, SelectGridButtonTextPipe } from '@common/pipes';\nimport { PipesModule } from '@common/pipes/pipes.module';\nimport { AzureGroupsService } from '@common/services';\nimport { OrganizationalUnitsService } from '@common/services/organizational-units.service';\nimport { SmartSearchModelTemplateUserGroupsService } from '@common/services/smart-search/user-groups';\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { BackupConfigControlComponent } from '@pages/users/backup-config-control';\nimport { UsersPipesModule } from '@pages/users/pipe/pipes.module';\nimport { EditGroupSettingModalComponent } from '@pages/users/user-groups/modals/edit-group-setting/edit-group-setting-modal.component';\nimport { NewGroupSettingsModalComponent } from '@pages/users/user-groups/modals/new-group-settings/new-group-settings-modal.component';\nimport { UserRoutingModule } from '@pages/users/user-routing.module';\nimport { I18NEXT_NAMESPACE, I18NextModule } from 'angular-i18next';\nimport { QRCodeModule } from 'angularx-qrcode';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { MbsUiKitModule } from 'mbs-ui-kit';\nimport { NgLetModule } from 'ng-let';\nimport { AlternateAccountSettingsComponent } from './alternate-account-settings/alternate-account-settings.component';\nimport { UsersComponent } from './component/users.component';\nimport { UserGroupActionSidepanelComponent } from './user-group-action-sidepanel/user-group-action-sidepanel.component';\nimport { UserGroupsComponent } from './user-groups/user-groups.component';\nimport { UserInformationControlComponent } from './user-information-control/user-information-control.component';\nimport { UserPermissionsControlComponent } from './user-permissions-control/user-permissions-control.component';\nimport { UserRetentionPoliciesControlComponent } from './user-retention-policies-control/user-retention-policies-control.component';\n\nconst modules = [\n UserRoutingModule,\n I18NextModule,\n CommonModule,\n NgbModule,\n NgSelectModule,\n MbsUiKitModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule,\n EditCreateRetentionPolicyModalModule,\n DeleteUserBackupModule,\n ExportToPstModule,\n NgLetModule,\n UsersPipesModule,\n QRCodeModule,\n AutoActivationModePipe,\n SelectGridButtonTextPipe,\n SelectGridAllButtonTextPipe\n];\n@NgModule({\n imports: [modules, PipesModule],\n declarations: [\n UsersComponent,\n AlternateAccountSettingsComponent,\n BackupConfigControlComponent,\n UserGroupActionSidepanelComponent,\n UserGroupsComponent,\n UserInformationControlComponent,\n UserPermissionsControlComponent,\n UserRetentionPoliciesControlComponent,\n ConfirmPasswordModalComponent,\n ChangePasswordModalComponent,\n ChangeEmailModalComponent,\n NewGroupSettingsModalComponent,\n EditGroupSettingModalComponent\n ],\n providers: [\n AzureGroupsService,\n OrganizationalUnitsService,\n SmartSearchModelTemplateUserGroupsService,\n {\n provide: I18NEXT_NAMESPACE,\n useValue: [I18_NAMESPACE_APPS_UI.users, I18_NAMESPACE_APPS_UI.policy]\n }\n ]\n})\nexport class UserModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport function loadConfigurations(url) {\n return new Promise(function (resolve, reject) {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', url);\n xhr.onload = function () {\n if (xhr.status >= 200 && xhr.status < 300) {\n resolve(xhr.response);\n } else {\n reject(new Error(`Load configuration error: ${xhr.statusText}`));\n }\n };\n xhr.onerror = function () {\n reject(new Error(`Load configuration error: ${xhr.statusText}`));\n };\n xhr.send();\n });\n}\n\nexport const MBS_APP_CONFIG = new InjectionToken('MbsAppConfig');\n","import { DNS } from '@common';\n\nexport const environment = {\n production: true,\n authUrl: null,\n proxyUrl: null,\n localePath: './assets/locales/{{lng}}/{{ns}}.json',\n posthog: {\n prod: {\n key: 'phc_ryMka3Ji8Hf5SIedewlqATKInfZy2eAo0KTpNpMRSbO',\n serverUrl: 'https://posthog.mon.mspbackups.com'\n },\n stage: {\n key: 'phc_W87dzexm7McSv2ms3rFkxJ1T8v5zAhTzBfH8DxIYcgo',\n serverUrl: 'https://posthog.stage.mspbackups.com'\n }\n },\n sentry: {\n dsn: DNS\n },\n spriteBase: './assets/svg/sprites/sprite.svg#',\n spriteMimeCategory: './assets/svg/sprites/mime-category-sprite.svg#',\n spriteMimeCategorySiteBlocks: './assets/svg/sprites/mime-category-site-blocks-sprite.svg#'\n};\n","/**\n * @license Angular v16.2.11\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\n/**\n * An injectable service that produces an animation sequence programmatically within an\n * Angular component or directive.\n * Provided by the `BrowserAnimationsModule` or `NoopAnimationsModule`.\n *\n * @usageNotes\n *\n * To use this service, add it to your component or directive as a dependency.\n * The service is instantiated along with your component.\n *\n * Apps do not typically need to create their own animation players, but if you\n * do need to, follow these steps:\n *\n * 1. Use the [AnimationBuilder.build](api/animations/AnimationBuilder#build)() method\n * to create a programmatic animation. The method returns an `AnimationFactory` instance.\n *\n * 2. Use the factory object to create an `AnimationPlayer` and attach it to a DOM element.\n *\n * 3. Use the player object to control the animation programmatically.\n *\n * For example:\n *\n * ```ts\n * // import the service from BrowserAnimationsModule\n * import {AnimationBuilder} from '@angular/animations';\n * // require the service as a dependency\n * class MyCmp {\n * constructor(private _builder: AnimationBuilder) {}\n *\n * makeAnimation(element: any) {\n * // first define a reusable animation\n * const myAnimation = this._builder.build([\n * style({ width: 0 }),\n * animate(1000, style({ width: '100px' }))\n * ]);\n *\n * // use the returned factory object to create a player\n * const player = myAnimation.create(element);\n *\n * player.play();\n * }\n * }\n * ```\n *\n * @publicApi\n */\nclass AnimationBuilder {\n}\n/**\n * A factory object returned from the\n * [AnimationBuilder.build](api/animations/AnimationBuilder#build)()\n * method.\n *\n * @publicApi\n */\nclass AnimationFactory {\n}\n\n/**\n * Specifies automatic styling.\n *\n * @publicApi\n */\nconst AUTO_STYLE = '*';\n/**\n * Creates a named animation trigger, containing a list of [`state()`](api/animations/state)\n * and `transition()` entries to be evaluated when the expression\n * bound to the trigger changes.\n *\n * @param name An identifying string.\n * @param definitions An animation definition object, containing an array of\n * [`state()`](api/animations/state) and `transition()` declarations.\n *\n * @return An object that encapsulates the trigger data.\n *\n * @usageNotes\n * Define an animation trigger in the `animations` section of `@Component` metadata.\n * In the template, reference the trigger by name and bind it to a trigger expression that\n * evaluates to a defined animation state, using the following format:\n *\n * `[@triggerName]=\"expression\"`\n *\n * Animation trigger bindings convert all values to strings, and then match the\n * previous and current values against any linked transitions.\n * Booleans can be specified as `1` or `true` and `0` or `false`.\n *\n * ### Usage Example\n *\n * The following example creates an animation trigger reference based on the provided\n * name value.\n * The provided animation value is expected to be an array consisting of state and\n * transition declarations.\n *\n * ```typescript\n * @Component({\n * selector: \"my-component\",\n * templateUrl: \"my-component-tpl.html\",\n * animations: [\n * trigger(\"myAnimationTrigger\", [\n * state(...),\n * state(...),\n * transition(...),\n * transition(...)\n * ])\n * ]\n * })\n * class MyComponent {\n * myStatusExp = \"something\";\n * }\n * ```\n *\n * The template associated with this component makes use of the defined trigger\n * by binding to an element within its template code.\n *\n * ```html\n * \n *
...
\n * ```\n *\n * ### Using an inline function\n * The `transition` animation method also supports reading an inline function which can decide\n * if its associated animation should be run.\n *\n * ```typescript\n * // this method is run each time the `myAnimationTrigger` trigger value changes.\n * function myInlineMatcherFn(fromState: string, toState: string, element: any, params: {[key:\n string]: any}): boolean {\n * // notice that `element` and `params` are also available here\n * return toState == 'yes-please-animate';\n * }\n *\n * @Component({\n * selector: 'my-component',\n * templateUrl: 'my-component-tpl.html',\n * animations: [\n * trigger('myAnimationTrigger', [\n * transition(myInlineMatcherFn, [\n * // the animation sequence code\n * ]),\n * ])\n * ]\n * })\n * class MyComponent {\n * myStatusExp = \"yes-please-animate\";\n * }\n * ```\n *\n * ### Disabling Animations\n * When true, the special animation control binding `@.disabled` binding prevents\n * all animations from rendering.\n * Place the `@.disabled` binding on an element to disable\n * animations on the element itself, as well as any inner animation triggers\n * within the element.\n *\n * The following example shows how to use this feature:\n *\n * ```typescript\n * @Component({\n * selector: 'my-component',\n * template: `\n *
\n *
\n *
\n * `,\n * animations: [\n * trigger(\"childAnimation\", [\n * // ...\n * ])\n * ]\n * })\n * class MyComponent {\n * isDisabled = true;\n * exp = '...';\n * }\n * ```\n *\n * When `@.disabled` is true, it prevents the `@childAnimation` trigger from animating,\n * along with any inner animations.\n *\n * ### Disable animations application-wide\n * When an area of the template is set to have animations disabled,\n * **all** inner components have their animations disabled as well.\n * This means that you can disable all animations for an app\n * by placing a host binding set on `@.disabled` on the topmost Angular component.\n *\n * ```typescript\n * import {Component, HostBinding} from '@angular/core';\n *\n * @Component({\n * selector: 'app-component',\n * templateUrl: 'app.component.html',\n * })\n * class AppComponent {\n * @HostBinding('@.disabled')\n * public animationsDisabled = true;\n * }\n * ```\n *\n * ### Overriding disablement of inner animations\n * Despite inner animations being disabled, a parent animation can `query()`\n * for inner elements located in disabled areas of the template and still animate\n * them if needed. This is also the case for when a sub animation is\n * queried by a parent and then later animated using `animateChild()`.\n *\n * ### Detecting when an animation is disabled\n * If a region of the DOM (or the entire application) has its animations disabled, the animation\n * trigger callbacks still fire, but for zero seconds. When the callback fires, it provides\n * an instance of an `AnimationEvent`. If animations are disabled,\n * the `.disabled` flag on the event is true.\n *\n * @publicApi\n */\nfunction trigger(name, definitions) {\n return { type: 7 /* AnimationMetadataType.Trigger */, name, definitions, options: {} };\n}\n/**\n * Defines an animation step that combines styling information with timing information.\n *\n * @param timings Sets `AnimateTimings` for the parent animation.\n * A string in the format \"duration [delay] [easing]\".\n * - Duration and delay are expressed as a number and optional time unit,\n * such as \"1s\" or \"10ms\" for one second and 10 milliseconds, respectively.\n * The default unit is milliseconds.\n * - The easing value controls how the animation accelerates and decelerates\n * during its runtime. Value is one of `ease`, `ease-in`, `ease-out`,\n * `ease-in-out`, or a `cubic-bezier()` function call.\n * If not supplied, no easing is applied.\n *\n * For example, the string \"1s 100ms ease-out\" specifies a duration of\n * 1000 milliseconds, and delay of 100 ms, and the \"ease-out\" easing style,\n * which decelerates near the end of the duration.\n * @param styles Sets AnimationStyles for the parent animation.\n * A function call to either `style()` or `keyframes()`\n * that returns a collection of CSS style entries to be applied to the parent animation.\n * When null, uses the styles from the destination state.\n * This is useful when describing an animation step that will complete an animation;\n * see \"Animating to the final state\" in `transitions()`.\n * @returns An object that encapsulates the animation step.\n *\n * @usageNotes\n * Call within an animation `sequence()`, `{@link animations/group group()}`, or\n * `transition()` call to specify an animation step\n * that applies given style data to the parent animation for a given amount of time.\n *\n * ### Syntax Examples\n * **Timing examples**\n *\n * The following examples show various `timings` specifications.\n * - `animate(500)` : Duration is 500 milliseconds.\n * - `animate(\"1s\")` : Duration is 1000 milliseconds.\n * - `animate(\"100ms 0.5s\")` : Duration is 100 milliseconds, delay is 500 milliseconds.\n * - `animate(\"5s ease-in\")` : Duration is 5000 milliseconds, easing in.\n * - `animate(\"5s 10ms cubic-bezier(.17,.67,.88,.1)\")` : Duration is 5000 milliseconds, delay is 10\n * milliseconds, easing according to a bezier curve.\n *\n * **Style examples**\n *\n * The following example calls `style()` to set a single CSS style.\n * ```typescript\n * animate(500, style({ background: \"red\" }))\n * ```\n * The following example calls `keyframes()` to set a CSS style\n * to different values for successive keyframes.\n * ```typescript\n * animate(500, keyframes(\n * [\n * style({ background: \"blue\" }),\n * style({ background: \"red\" })\n * ])\n * ```\n *\n * @publicApi\n */\nfunction animate(timings, styles = null) {\n return { type: 4 /* AnimationMetadataType.Animate */, styles, timings };\n}\n/**\n * @description Defines a list of animation steps to be run in parallel.\n *\n * @param steps An array of animation step objects.\n * - When steps are defined by `style()` or `animate()`\n * function calls, each call within the group is executed instantly.\n * - To specify offset styles to be applied at a later time, define steps with\n * `keyframes()`, or use `animate()` calls with a delay value.\n * For example:\n *\n * ```typescript\n * group([\n * animate(\"1s\", style({ background: \"black\" })),\n * animate(\"2s\", style({ color: \"white\" }))\n * ])\n * ```\n *\n * @param options An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation.\n *\n * @return An object that encapsulates the group data.\n *\n * @usageNotes\n * Grouped animations are useful when a series of styles must be\n * animated at different starting times and closed off at different ending times.\n *\n * When called within a `sequence()` or a\n * `transition()` call, does not continue to the next\n * instruction until all of the inner animation steps have completed.\n *\n * @publicApi\n */\nfunction group(steps, options = null) {\n return { type: 3 /* AnimationMetadataType.Group */, steps, options };\n}\n/**\n * Defines a list of animation steps to be run sequentially, one by one.\n *\n * @param steps An array of animation step objects.\n * - Steps defined by `style()` calls apply the styling data immediately.\n * - Steps defined by `animate()` calls apply the styling data over time\n * as specified by the timing data.\n *\n * ```typescript\n * sequence([\n * style({ opacity: 0 }),\n * animate(\"1s\", style({ opacity: 1 }))\n * ])\n * ```\n *\n * @param options An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation.\n *\n * @return An object that encapsulates the sequence data.\n *\n * @usageNotes\n * When you pass an array of steps to a\n * `transition()` call, the steps run sequentially by default.\n * Compare this to the `{@link animations/group group()}` call, which runs animation steps in\n *parallel.\n *\n * When a sequence is used within a `{@link animations/group group()}` or a `transition()` call,\n * execution continues to the next instruction only after each of the inner animation\n * steps have completed.\n *\n * @publicApi\n **/\nfunction sequence(steps, options = null) {\n return { type: 2 /* AnimationMetadataType.Sequence */, steps, options };\n}\n/**\n * Declares a key/value object containing CSS properties/styles that\n * can then be used for an animation [`state`](api/animations/state), within an animation\n *`sequence`, or as styling data for calls to `animate()` and `keyframes()`.\n *\n * @param tokens A set of CSS styles or HTML styles associated with an animation state.\n * The value can be any of the following:\n * - A key-value style pair associating a CSS property with a value.\n * - An array of key-value style pairs.\n * - An asterisk (*), to use auto-styling, where styles are derived from the element\n * being animated and applied to the animation when it starts.\n *\n * Auto-styling can be used to define a state that depends on layout or other\n * environmental factors.\n *\n * @return An object that encapsulates the style data.\n *\n * @usageNotes\n * The following examples create animation styles that collect a set of\n * CSS property values:\n *\n * ```typescript\n * // string values for CSS properties\n * style({ background: \"red\", color: \"blue\" })\n *\n * // numerical pixel values\n * style({ width: 100, height: 0 })\n * ```\n *\n * The following example uses auto-styling to allow an element to animate from\n * a height of 0 up to its full height:\n *\n * ```\n * style({ height: 0 }),\n * animate(\"1s\", style({ height: \"*\" }))\n * ```\n *\n * @publicApi\n **/\nfunction style(tokens) {\n return { type: 6 /* AnimationMetadataType.Style */, styles: tokens, offset: null };\n}\n/**\n * Declares an animation state within a trigger attached to an element.\n *\n * @param name One or more names for the defined state in a comma-separated string.\n * The following reserved state names can be supplied to define a style for specific use\n * cases:\n *\n * - `void` You can associate styles with this name to be used when\n * the element is detached from the application. For example, when an `ngIf` evaluates\n * to false, the state of the associated element is void.\n * - `*` (asterisk) Indicates the default state. You can associate styles with this name\n * to be used as the fallback when the state that is being animated is not declared\n * within the trigger.\n *\n * @param styles A set of CSS styles associated with this state, created using the\n * `style()` function.\n * This set of styles persists on the element once the state has been reached.\n * @param options Parameters that can be passed to the state when it is invoked.\n * 0 or more key-value pairs.\n * @return An object that encapsulates the new state data.\n *\n * @usageNotes\n * Use the `trigger()` function to register states to an animation trigger.\n * Use the `transition()` function to animate between states.\n * When a state is active within a component, its associated styles persist on the element,\n * even when the animation ends.\n *\n * @publicApi\n **/\nfunction state(name, styles, options) {\n return { type: 0 /* AnimationMetadataType.State */, name, styles, options };\n}\n/**\n * Defines a set of animation styles, associating each style with an optional `offset` value.\n *\n * @param steps A set of animation styles with optional offset data.\n * The optional `offset` value for a style specifies a percentage of the total animation\n * time at which that style is applied.\n * @returns An object that encapsulates the keyframes data.\n *\n * @usageNotes\n * Use with the `animate()` call. Instead of applying animations\n * from the current state\n * to the destination state, keyframes describe how each style entry is applied and at what point\n * within the animation arc.\n * Compare [CSS Keyframe Animations](https://www.w3schools.com/css/css3_animations.asp).\n *\n * ### Usage\n *\n * In the following example, the offset values describe\n * when each `backgroundColor` value is applied. The color is red at the start, and changes to\n * blue when 20% of the total time has elapsed.\n *\n * ```typescript\n * // the provided offset values\n * animate(\"5s\", keyframes([\n * style({ backgroundColor: \"red\", offset: 0 }),\n * style({ backgroundColor: \"blue\", offset: 0.2 }),\n * style({ backgroundColor: \"orange\", offset: 0.3 }),\n * style({ backgroundColor: \"black\", offset: 1 })\n * ]))\n * ```\n *\n * If there are no `offset` values specified in the style entries, the offsets\n * are calculated automatically.\n *\n * ```typescript\n * animate(\"5s\", keyframes([\n * style({ backgroundColor: \"red\" }) // offset = 0\n * style({ backgroundColor: \"blue\" }) // offset = 0.33\n * style({ backgroundColor: \"orange\" }) // offset = 0.66\n * style({ backgroundColor: \"black\" }) // offset = 1\n * ]))\n *```\n\n * @publicApi\n */\nfunction keyframes(steps) {\n return { type: 5 /* AnimationMetadataType.Keyframes */, steps };\n}\n/**\n * Declares an animation transition which is played when a certain specified condition is met.\n *\n * @param stateChangeExpr A string with a specific format or a function that specifies when the\n * animation transition should occur (see [State Change Expression](#state-change-expression)).\n *\n * @param steps One or more animation objects that represent the animation's instructions.\n *\n * @param options An options object that can be used to specify a delay for the animation or provide\n * custom parameters for it.\n *\n * @returns An object that encapsulates the transition data.\n *\n * @usageNotes\n *\n * ### State Change Expression\n *\n * The State Change Expression instructs Angular when to run the transition's animations, it can\n *either be\n * - a string with a specific syntax\n * - or a function that compares the previous and current state (value of the expression bound to\n * the element's trigger) and returns `true` if the transition should occur or `false` otherwise\n *\n * The string format can be:\n * - `fromState => toState`, which indicates that the transition's animations should occur then the\n * expression bound to the trigger's element goes from `fromState` to `toState`\n *\n * _Example:_\n * ```typescript\n * transition('open => closed', animate('.5s ease-out', style({ height: 0 }) ))\n * ```\n *\n * - `fromState <=> toState`, which indicates that the transition's animations should occur then\n * the expression bound to the trigger's element goes from `fromState` to `toState` or vice versa\n *\n * _Example:_\n * ```typescript\n * transition('enabled <=> disabled', animate('1s cubic-bezier(0.8,0.3,0,1)'))\n * ```\n *\n * - `:enter`/`:leave`, which indicates that the transition's animations should occur when the\n * element enters or exists the DOM\n *\n * _Example:_\n * ```typescript\n * transition(':enter', [\n * style({ opacity: 0 }),\n * animate('500ms', style({ opacity: 1 }))\n * ])\n * ```\n *\n * - `:increment`/`:decrement`, which indicates that the transition's animations should occur when\n * the numerical expression bound to the trigger's element has increased in value or decreased\n *\n * _Example:_\n * ```typescript\n * transition(':increment', query('@counter', animateChild()))\n * ```\n *\n * - a sequence of any of the above divided by commas, which indicates that transition's animations\n * should occur whenever one of the state change expressions matches\n *\n * _Example:_\n * ```typescript\n * transition(':increment, * => enabled, :enter', animate('1s ease', keyframes([\n * style({ transform: 'scale(1)', offset: 0}),\n * style({ transform: 'scale(1.1)', offset: 0.7}),\n * style({ transform: 'scale(1)', offset: 1})\n * ]))),\n * ```\n *\n * Also note that in such context:\n * - `void` can be used to indicate the absence of the element\n * - asterisks can be used as wildcards that match any state\n * - (as a consequence of the above, `void => *` is equivalent to `:enter` and `* => void` is\n * equivalent to `:leave`)\n * - `true` and `false` also match expression values of `1` and `0` respectively (but do not match\n * _truthy_ and _falsy_ values)\n *\n *
\n *\n * Be careful about entering end leaving elements as their transitions present a common\n * pitfall for developers.\n *\n * Note that when an element with a trigger enters the DOM its `:enter` transition always\n * gets executed, but its `:leave` transition will not be executed if the element is removed\n * alongside its parent (as it will be removed \"without warning\" before its transition has\n * a chance to be executed, the only way that such transition can occur is if the element\n * is exiting the DOM on its own).\n *\n *\n *
\n *\n * ### Animating to a Final State\n *\n * If the final step in a transition is a call to `animate()` that uses a timing value\n * with no `style` data, that step is automatically considered the final animation arc,\n * for the element to reach the final state, in such case Angular automatically adds or removes\n * CSS styles to ensure that the element is in the correct final state.\n *\n *\n * ### Usage Examples\n *\n * - Transition animations applied based on\n * the trigger's expression value\n *\n * ```HTML\n *
\n * ...\n *
\n * ```\n *\n * ```typescript\n * trigger(\"myAnimationTrigger\", [\n * ..., // states\n * transition(\"on => off, open => closed\", animate(500)),\n * transition(\"* <=> error\", query('.indicator', animateChild()))\n * ])\n * ```\n *\n * - Transition animations applied based on custom logic dependent\n * on the trigger's expression value and provided parameters\n *\n * ```HTML\n *
\n * ...\n *
\n * ```\n *\n * ```typescript\n * trigger(\"myAnimationTrigger\", [\n * ..., // states\n * transition(\n * (fromState, toState, _element, params) =>\n * ['firststep', 'laststep'].includes(fromState.toLowerCase())\n * && toState === params?.['target'],\n * animate('1s')\n * )\n * ])\n * ```\n *\n * @publicApi\n **/\nfunction transition(stateChangeExpr, steps, options = null) {\n return { type: 1 /* AnimationMetadataType.Transition */, expr: stateChangeExpr, animation: steps, options };\n}\n/**\n * Produces a reusable animation that can be invoked in another animation or sequence,\n * by calling the `useAnimation()` function.\n *\n * @param steps One or more animation objects, as returned by the `animate()`\n * or `sequence()` function, that form a transformation from one state to another.\n * A sequence is used by default when you pass an array.\n * @param options An options object that can contain a delay value for the start of the\n * animation, and additional developer-defined parameters.\n * Provided values for additional parameters are used as defaults,\n * and override values can be passed to the caller on invocation.\n * @returns An object that encapsulates the animation data.\n *\n * @usageNotes\n * The following example defines a reusable animation, providing some default parameter\n * values.\n *\n * ```typescript\n * var fadeAnimation = animation([\n * style({ opacity: '{{ start }}' }),\n * animate('{{ time }}',\n * style({ opacity: '{{ end }}'}))\n * ],\n * { params: { time: '1000ms', start: 0, end: 1 }});\n * ```\n *\n * The following invokes the defined animation with a call to `useAnimation()`,\n * passing in override parameter values.\n *\n * ```js\n * useAnimation(fadeAnimation, {\n * params: {\n * time: '2s',\n * start: 1,\n * end: 0\n * }\n * })\n * ```\n *\n * If any of the passed-in parameter values are missing from this call,\n * the default values are used. If one or more parameter values are missing before a step is\n * animated, `useAnimation()` throws an error.\n *\n * @publicApi\n */\nfunction animation(steps, options = null) {\n return { type: 8 /* AnimationMetadataType.Reference */, animation: steps, options };\n}\n/**\n * Executes a queried inner animation element within an animation sequence.\n *\n * @param options An options object that can contain a delay value for the start of the\n * animation, and additional override values for developer-defined parameters.\n * @return An object that encapsulates the child animation data.\n *\n * @usageNotes\n * Each time an animation is triggered in Angular, the parent animation\n * has priority and any child animations are blocked. In order\n * for a child animation to run, the parent animation must query each of the elements\n * containing child animations, and run them using this function.\n *\n * Note that this feature is designed to be used with `query()` and it will only work\n * with animations that are assigned using the Angular animation library. CSS keyframes\n * and transitions are not handled by this API.\n *\n * @publicApi\n */\nfunction animateChild(options = null) {\n return { type: 9 /* AnimationMetadataType.AnimateChild */, options };\n}\n/**\n * Starts a reusable animation that is created using the `animation()` function.\n *\n * @param animation The reusable animation to start.\n * @param options An options object that can contain a delay value for the start of\n * the animation, and additional override values for developer-defined parameters.\n * @return An object that contains the animation parameters.\n *\n * @publicApi\n */\nfunction useAnimation(animation, options = null) {\n return { type: 10 /* AnimationMetadataType.AnimateRef */, animation, options };\n}\n/**\n * Finds one or more inner elements within the current element that is\n * being animated within a sequence. Use with `animate()`.\n *\n * @param selector The element to query, or a set of elements that contain Angular-specific\n * characteristics, specified with one or more of the following tokens.\n * - `query(\":enter\")` or `query(\":leave\")` : Query for newly inserted/removed elements (not\n * all elements can be queried via these tokens, see\n * [Entering and Leaving Elements](#entering-and-leaving-elements))\n * - `query(\":animating\")` : Query all currently animating elements.\n * - `query(\"@triggerName\")` : Query elements that contain an animation trigger.\n * - `query(\"@*\")` : Query all elements that contain an animation triggers.\n * - `query(\":self\")` : Include the current element into the animation sequence.\n *\n * @param animation One or more animation steps to apply to the queried element or elements.\n * An array is treated as an animation sequence.\n * @param options An options object. Use the 'limit' field to limit the total number of\n * items to collect.\n * @return An object that encapsulates the query data.\n *\n * @usageNotes\n *\n * ### Multiple Tokens\n *\n * Tokens can be merged into a combined query selector string. For example:\n *\n * ```typescript\n * query(':self, .record:enter, .record:leave, @subTrigger', [...])\n * ```\n *\n * The `query()` function collects multiple elements and works internally by using\n * `element.querySelectorAll`. Use the `limit` field of an options object to limit\n * the total number of items to be collected. For example:\n *\n * ```js\n * query('div', [\n * animate(...),\n * animate(...)\n * ], { limit: 1 })\n * ```\n *\n * By default, throws an error when zero items are found. Set the\n * `optional` flag to ignore this error. For example:\n *\n * ```js\n * query('.some-element-that-may-not-be-there', [\n * animate(...),\n * animate(...)\n * ], { optional: true })\n * ```\n *\n * ### Entering and Leaving Elements\n *\n * Not all elements can be queried via the `:enter` and `:leave` tokens, the only ones\n * that can are those that Angular assumes can enter/leave based on their own logic\n * (if their insertion/removal is simply a consequence of that of their parent they\n * should be queried via a different token in their parent's `:enter`/`:leave` transitions).\n *\n * The only elements Angular assumes can enter/leave based on their own logic (thus the only\n * ones that can be queried via the `:enter` and `:leave` tokens) are:\n * - Those inserted dynamically (via `ViewContainerRef`)\n * - Those that have a structural directive (which, under the hood, are a subset of the above ones)\n *\n *
\n *\n * Note that elements will be successfully queried via `:enter`/`:leave` even if their\n * insertion/removal is not done manually via `ViewContainerRef`or caused by their structural\n * directive (e.g. they enter/exit alongside their parent).\n *\n *
\n *\n *
\n *\n * There is an exception to what previously mentioned, besides elements entering/leaving based on\n * their own logic, elements with an animation trigger can always be queried via `:leave` when\n * their parent is also leaving.\n *\n *
\n *\n * ### Usage Example\n *\n * The following example queries for inner elements and animates them\n * individually using `animate()`.\n *\n * ```typescript\n * @Component({\n * selector: 'inner',\n * template: `\n *
\n *

Title

\n *
\n * Blah blah blah\n *
\n *
\n * `,\n * animations: [\n * trigger('queryAnimation', [\n * transition('* => goAnimate', [\n * // hide the inner elements\n * query('h1', style({ opacity: 0 })),\n * query('.content', style({ opacity: 0 })),\n *\n * // animate the inner elements in, one by one\n * query('h1', animate(1000, style({ opacity: 1 }))),\n * query('.content', animate(1000, style({ opacity: 1 }))),\n * ])\n * ])\n * ]\n * })\n * class Cmp {\n * exp = '';\n *\n * goAnimate() {\n * this.exp = 'goAnimate';\n * }\n * }\n * ```\n *\n * @publicApi\n */\nfunction query(selector, animation, options = null) {\n return { type: 11 /* AnimationMetadataType.Query */, selector, animation, options };\n}\n/**\n * Use within an animation `query()` call to issue a timing gap after\n * each queried item is animated.\n *\n * @param timings A delay value.\n * @param animation One ore more animation steps.\n * @returns An object that encapsulates the stagger data.\n *\n * @usageNotes\n * In the following example, a container element wraps a list of items stamped out\n * by an `ngFor`. The container element contains an animation trigger that will later be set\n * to query for each of the inner items.\n *\n * Each time items are added, the opacity fade-in animation runs,\n * and each removed item is faded out.\n * When either of these animations occur, the stagger effect is\n * applied after each item's animation is started.\n *\n * ```html\n * \n * \n *
\n *
\n *
\n * {{ item }}\n *
\n *
\n * ```\n *\n * Here is the component code:\n *\n * ```typescript\n * import {trigger, transition, style, animate, query, stagger} from '@angular/animations';\n * @Component({\n * templateUrl: 'list.component.html',\n * animations: [\n * trigger('listAnimation', [\n * ...\n * ])\n * ]\n * })\n * class ListComponent {\n * items = [];\n *\n * showItems() {\n * this.items = [0,1,2,3,4];\n * }\n *\n * hideItems() {\n * this.items = [];\n * }\n *\n * toggle() {\n * this.items.length ? this.hideItems() : this.showItems();\n * }\n * }\n * ```\n *\n * Here is the animation trigger code:\n *\n * ```typescript\n * trigger('listAnimation', [\n * transition('* => *', [ // each time the binding value changes\n * query(':leave', [\n * stagger(100, [\n * animate('0.5s', style({ opacity: 0 }))\n * ])\n * ]),\n * query(':enter', [\n * style({ opacity: 0 }),\n * stagger(100, [\n * animate('0.5s', style({ opacity: 1 }))\n * ])\n * ])\n * ])\n * ])\n * ```\n *\n * @publicApi\n */\nfunction stagger(timings, animation) {\n return { type: 12 /* AnimationMetadataType.Stagger */, timings, animation };\n}\n\n/**\n * An empty programmatic controller for reusable animations.\n * Used internally when animations are disabled, to avoid\n * checking for the null case when an animation player is expected.\n *\n * @see {@link animate}\n * @see {@link AnimationPlayer}\n * @see {@link ɵAnimationGroupPlayer AnimationGroupPlayer}\n *\n * @publicApi\n */\nclass NoopAnimationPlayer {\n constructor(duration = 0, delay = 0) {\n this._onDoneFns = [];\n this._onStartFns = [];\n this._onDestroyFns = [];\n this._originalOnDoneFns = [];\n this._originalOnStartFns = [];\n this._started = false;\n this._destroyed = false;\n this._finished = false;\n this._position = 0;\n this.parentPlayer = null;\n this.totalTime = duration + delay;\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n onStart(fn) {\n this._originalOnStartFns.push(fn);\n this._onStartFns.push(fn);\n }\n onDone(fn) {\n this._originalOnDoneFns.push(fn);\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n hasStarted() {\n return this._started;\n }\n init() { }\n play() {\n if (!this.hasStarted()) {\n this._onStart();\n this.triggerMicrotask();\n }\n this._started = true;\n }\n /** @internal */\n triggerMicrotask() {\n queueMicrotask(() => this._onFinish());\n }\n _onStart() {\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n }\n pause() { }\n restart() { }\n finish() {\n this._onFinish();\n }\n destroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n if (!this.hasStarted()) {\n this._onStart();\n }\n this.finish();\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n reset() {\n this._started = false;\n this._finished = false;\n this._onStartFns = this._originalOnStartFns;\n this._onDoneFns = this._originalOnDoneFns;\n }\n setPosition(position) {\n this._position = this.totalTime ? position * this.totalTime : 1;\n }\n getPosition() {\n return this.totalTime ? this._position / this.totalTime : 1;\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\n\n/**\n * A programmatic controller for a group of reusable animations.\n * Used internally to control animations.\n *\n * @see {@link AnimationPlayer}\n * @see {@link animations/group group}\n *\n */\nclass AnimationGroupPlayer {\n constructor(_players) {\n this._onDoneFns = [];\n this._onStartFns = [];\n this._finished = false;\n this._started = false;\n this._destroyed = false;\n this._onDestroyFns = [];\n this.parentPlayer = null;\n this.totalTime = 0;\n this.players = _players;\n let doneCount = 0;\n let destroyCount = 0;\n let startCount = 0;\n const total = this.players.length;\n if (total == 0) {\n queueMicrotask(() => this._onFinish());\n }\n else {\n this.players.forEach(player => {\n player.onDone(() => {\n if (++doneCount == total) {\n this._onFinish();\n }\n });\n player.onDestroy(() => {\n if (++destroyCount == total) {\n this._onDestroy();\n }\n });\n player.onStart(() => {\n if (++startCount == total) {\n this._onStart();\n }\n });\n });\n }\n this.totalTime = this.players.reduce((time, player) => Math.max(time, player.totalTime), 0);\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n init() {\n this.players.forEach(player => player.init());\n }\n onStart(fn) {\n this._onStartFns.push(fn);\n }\n _onStart() {\n if (!this.hasStarted()) {\n this._started = true;\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n }\n }\n onDone(fn) {\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n hasStarted() {\n return this._started;\n }\n play() {\n if (!this.parentPlayer) {\n this.init();\n }\n this._onStart();\n this.players.forEach(player => player.play());\n }\n pause() {\n this.players.forEach(player => player.pause());\n }\n restart() {\n this.players.forEach(player => player.restart());\n }\n finish() {\n this._onFinish();\n this.players.forEach(player => player.finish());\n }\n destroy() {\n this._onDestroy();\n }\n _onDestroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n this._onFinish();\n this.players.forEach(player => player.destroy());\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n reset() {\n this.players.forEach(player => player.reset());\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n }\n setPosition(p) {\n const timeAtPosition = p * this.totalTime;\n this.players.forEach(player => {\n const position = player.totalTime ? Math.min(1, timeAtPosition / player.totalTime) : 1;\n player.setPosition(position);\n });\n }\n getPosition() {\n const longestPlayer = this.players.reduce((longestSoFar, player) => {\n const newPlayerIsLongest = longestSoFar === null || player.totalTime > longestSoFar.totalTime;\n return newPlayerIsLongest ? player : longestSoFar;\n }, null);\n return longestPlayer != null ? longestPlayer.getPosition() : 0;\n }\n beforeDestroy() {\n this.players.forEach(player => {\n if (player.beforeDestroy) {\n player.beforeDestroy();\n }\n });\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\n\nconst ɵPRE_STYLE = '!';\n\n/**\n * @module\n * @description\n * Entry point for all animation APIs of the animation package.\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AUTO_STYLE, AnimationBuilder, AnimationFactory, NoopAnimationPlayer, animate, animateChild, animation, group, keyframes, query, sequence, stagger, state, style, transition, trigger, useAnimation, AnimationGroupPlayer as ɵAnimationGroupPlayer, ɵPRE_STYLE };\n","/**\n * @license Angular v16.2.11\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { ɵAnimationGroupPlayer, NoopAnimationPlayer, AUTO_STYLE, ɵPRE_STYLE, sequence, style } from '@angular/animations';\nimport * as i0 from '@angular/core';\nimport { ɵRuntimeError, Injectable } from '@angular/core';\n\nconst LINE_START = '\\n - ';\nfunction invalidTimingValue(exp) {\n return new ɵRuntimeError(3000 /* RuntimeErrorCode.INVALID_TIMING_VALUE */, ngDevMode && `The provided timing value \"${exp}\" is invalid.`);\n}\nfunction negativeStepValue() {\n return new ɵRuntimeError(3100 /* RuntimeErrorCode.NEGATIVE_STEP_VALUE */, ngDevMode && 'Duration values below 0 are not allowed for this animation step.');\n}\nfunction negativeDelayValue() {\n return new ɵRuntimeError(3101 /* RuntimeErrorCode.NEGATIVE_DELAY_VALUE */, ngDevMode && 'Delay values below 0 are not allowed for this animation step.');\n}\nfunction invalidStyleParams(varName) {\n return new ɵRuntimeError(3001 /* RuntimeErrorCode.INVALID_STYLE_PARAMS */, ngDevMode &&\n `Unable to resolve the local animation param ${varName} in the given list of values`);\n}\nfunction invalidParamValue(varName) {\n return new ɵRuntimeError(3003 /* RuntimeErrorCode.INVALID_PARAM_VALUE */, ngDevMode && `Please provide a value for the animation param ${varName}`);\n}\nfunction invalidNodeType(nodeType) {\n return new ɵRuntimeError(3004 /* RuntimeErrorCode.INVALID_NODE_TYPE */, ngDevMode && `Unable to resolve animation metadata node #${nodeType}`);\n}\nfunction invalidCssUnitValue(userProvidedProperty, value) {\n return new ɵRuntimeError(3005 /* RuntimeErrorCode.INVALID_CSS_UNIT_VALUE */, ngDevMode && `Please provide a CSS unit value for ${userProvidedProperty}:${value}`);\n}\nfunction invalidTrigger() {\n return new ɵRuntimeError(3006 /* RuntimeErrorCode.INVALID_TRIGGER */, ngDevMode &&\n 'animation triggers cannot be prefixed with an `@` sign (e.g. trigger(\\'@foo\\', [...]))');\n}\nfunction invalidDefinition() {\n return new ɵRuntimeError(3007 /* RuntimeErrorCode.INVALID_DEFINITION */, ngDevMode && 'only state() and transition() definitions can sit inside of a trigger()');\n}\nfunction invalidState(metadataName, missingSubs) {\n return new ɵRuntimeError(3008 /* RuntimeErrorCode.INVALID_STATE */, ngDevMode &&\n `state(\"${metadataName}\", ...) must define default values for all the following style substitutions: ${missingSubs.join(', ')}`);\n}\nfunction invalidStyleValue(value) {\n return new ɵRuntimeError(3002 /* RuntimeErrorCode.INVALID_STYLE_VALUE */, ngDevMode && `The provided style string value ${value} is not allowed.`);\n}\nfunction invalidProperty(prop) {\n return new ɵRuntimeError(3009 /* RuntimeErrorCode.INVALID_PROPERTY */, ngDevMode &&\n `The provided animation property \"${prop}\" is not a supported CSS property for animations`);\n}\nfunction invalidParallelAnimation(prop, firstStart, firstEnd, secondStart, secondEnd) {\n return new ɵRuntimeError(3010 /* RuntimeErrorCode.INVALID_PARALLEL_ANIMATION */, ngDevMode &&\n `The CSS property \"${prop}\" that exists between the times of \"${firstStart}ms\" and \"${firstEnd}ms\" is also being animated in a parallel animation between the times of \"${secondStart}ms\" and \"${secondEnd}ms\"`);\n}\nfunction invalidKeyframes() {\n return new ɵRuntimeError(3011 /* RuntimeErrorCode.INVALID_KEYFRAMES */, ngDevMode && `keyframes() must be placed inside of a call to animate()`);\n}\nfunction invalidOffset() {\n return new ɵRuntimeError(3012 /* RuntimeErrorCode.INVALID_OFFSET */, ngDevMode && `Please ensure that all keyframe offsets are between 0 and 1`);\n}\nfunction keyframeOffsetsOutOfOrder() {\n return new ɵRuntimeError(3200 /* RuntimeErrorCode.KEYFRAME_OFFSETS_OUT_OF_ORDER */, ngDevMode && `Please ensure that all keyframe offsets are in order`);\n}\nfunction keyframesMissingOffsets() {\n return new ɵRuntimeError(3202 /* RuntimeErrorCode.KEYFRAMES_MISSING_OFFSETS */, ngDevMode && `Not all style() steps within the declared keyframes() contain offsets`);\n}\nfunction invalidStagger() {\n return new ɵRuntimeError(3013 /* RuntimeErrorCode.INVALID_STAGGER */, ngDevMode && `stagger() can only be used inside of query()`);\n}\nfunction invalidQuery(selector) {\n return new ɵRuntimeError(3014 /* RuntimeErrorCode.INVALID_QUERY */, ngDevMode &&\n `\\`query(\"${selector}\")\\` returned zero elements. (Use \\`query(\"${selector}\", { optional: true })\\` if you wish to allow this.)`);\n}\nfunction invalidExpression(expr) {\n return new ɵRuntimeError(3015 /* RuntimeErrorCode.INVALID_EXPRESSION */, ngDevMode && `The provided transition expression \"${expr}\" is not supported`);\n}\nfunction invalidTransitionAlias(alias) {\n return new ɵRuntimeError(3016 /* RuntimeErrorCode.INVALID_TRANSITION_ALIAS */, ngDevMode && `The transition alias value \"${alias}\" is not supported`);\n}\nfunction validationFailed(errors) {\n return new ɵRuntimeError(3500 /* RuntimeErrorCode.VALIDATION_FAILED */, ngDevMode && `animation validation failed:\\n${errors.map(err => err.message).join('\\n')}`);\n}\nfunction buildingFailed(errors) {\n return new ɵRuntimeError(3501 /* RuntimeErrorCode.BUILDING_FAILED */, ngDevMode && `animation building failed:\\n${errors.map(err => err.message).join('\\n')}`);\n}\nfunction triggerBuildFailed(name, errors) {\n return new ɵRuntimeError(3404 /* RuntimeErrorCode.TRIGGER_BUILD_FAILED */, ngDevMode &&\n `The animation trigger \"${name}\" has failed to build due to the following errors:\\n - ${errors.map(err => err.message).join('\\n - ')}`);\n}\nfunction animationFailed(errors) {\n return new ɵRuntimeError(3502 /* RuntimeErrorCode.ANIMATION_FAILED */, ngDevMode &&\n `Unable to animate due to the following errors:${LINE_START}${errors.map(err => err.message).join(LINE_START)}`);\n}\nfunction registerFailed(errors) {\n return new ɵRuntimeError(3503 /* RuntimeErrorCode.REGISTRATION_FAILED */, ngDevMode &&\n `Unable to build the animation due to the following errors: ${errors.map(err => err.message).join('\\n')}`);\n}\nfunction missingOrDestroyedAnimation() {\n return new ɵRuntimeError(3300 /* RuntimeErrorCode.MISSING_OR_DESTROYED_ANIMATION */, ngDevMode && 'The requested animation doesn\\'t exist or has already been destroyed');\n}\nfunction createAnimationFailed(errors) {\n return new ɵRuntimeError(3504 /* RuntimeErrorCode.CREATE_ANIMATION_FAILED */, ngDevMode &&\n `Unable to create the animation due to the following errors:${errors.map(err => err.message).join('\\n')}`);\n}\nfunction missingPlayer(id) {\n return new ɵRuntimeError(3301 /* RuntimeErrorCode.MISSING_PLAYER */, ngDevMode && `Unable to find the timeline player referenced by ${id}`);\n}\nfunction missingTrigger(phase, name) {\n return new ɵRuntimeError(3302 /* RuntimeErrorCode.MISSING_TRIGGER */, ngDevMode &&\n `Unable to listen on the animation trigger event \"${phase}\" because the animation trigger \"${name}\" doesn\\'t exist!`);\n}\nfunction missingEvent(name) {\n return new ɵRuntimeError(3303 /* RuntimeErrorCode.MISSING_EVENT */, ngDevMode &&\n `Unable to listen on the animation trigger \"${name}\" because the provided event is undefined!`);\n}\nfunction unsupportedTriggerEvent(phase, name) {\n return new ɵRuntimeError(3400 /* RuntimeErrorCode.UNSUPPORTED_TRIGGER_EVENT */, ngDevMode &&\n `The provided animation trigger event \"${phase}\" for the animation trigger \"${name}\" is not supported!`);\n}\nfunction unregisteredTrigger(name) {\n return new ɵRuntimeError(3401 /* RuntimeErrorCode.UNREGISTERED_TRIGGER */, ngDevMode && `The provided animation trigger \"${name}\" has not been registered!`);\n}\nfunction triggerTransitionsFailed(errors) {\n return new ɵRuntimeError(3402 /* RuntimeErrorCode.TRIGGER_TRANSITIONS_FAILED */, ngDevMode &&\n `Unable to process animations due to the following failed trigger transitions\\n ${errors.map(err => err.message).join('\\n')}`);\n}\nfunction triggerParsingFailed(name, errors) {\n return new ɵRuntimeError(3403 /* RuntimeErrorCode.TRIGGER_PARSING_FAILED */, ngDevMode &&\n `Animation parsing for the ${name} trigger have failed:${LINE_START}${errors.map(err => err.message).join(LINE_START)}`);\n}\nfunction transitionFailed(name, errors) {\n return new ɵRuntimeError(3505 /* RuntimeErrorCode.TRANSITION_FAILED */, ngDevMode && `@${name} has failed due to:\\n ${errors.map(err => err.message).join('\\n- ')}`);\n}\n\n/**\n * Set of all animatable CSS properties\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties\n */\nconst ANIMATABLE_PROP_SET = new Set([\n '-moz-outline-radius',\n '-moz-outline-radius-bottomleft',\n '-moz-outline-radius-bottomright',\n '-moz-outline-radius-topleft',\n '-moz-outline-radius-topright',\n '-ms-grid-columns',\n '-ms-grid-rows',\n '-webkit-line-clamp',\n '-webkit-text-fill-color',\n '-webkit-text-stroke',\n '-webkit-text-stroke-color',\n 'accent-color',\n 'all',\n 'backdrop-filter',\n 'background',\n 'background-color',\n 'background-position',\n 'background-size',\n 'block-size',\n 'border',\n 'border-block-end',\n 'border-block-end-color',\n 'border-block-end-width',\n 'border-block-start',\n 'border-block-start-color',\n 'border-block-start-width',\n 'border-bottom',\n 'border-bottom-color',\n 'border-bottom-left-radius',\n 'border-bottom-right-radius',\n 'border-bottom-width',\n 'border-color',\n 'border-end-end-radius',\n 'border-end-start-radius',\n 'border-image-outset',\n 'border-image-slice',\n 'border-image-width',\n 'border-inline-end',\n 'border-inline-end-color',\n 'border-inline-end-width',\n 'border-inline-start',\n 'border-inline-start-color',\n 'border-inline-start-width',\n 'border-left',\n 'border-left-color',\n 'border-left-width',\n 'border-radius',\n 'border-right',\n 'border-right-color',\n 'border-right-width',\n 'border-start-end-radius',\n 'border-start-start-radius',\n 'border-top',\n 'border-top-color',\n 'border-top-left-radius',\n 'border-top-right-radius',\n 'border-top-width',\n 'border-width',\n 'bottom',\n 'box-shadow',\n 'caret-color',\n 'clip',\n 'clip-path',\n 'color',\n 'column-count',\n 'column-gap',\n 'column-rule',\n 'column-rule-color',\n 'column-rule-width',\n 'column-width',\n 'columns',\n 'filter',\n 'flex',\n 'flex-basis',\n 'flex-grow',\n 'flex-shrink',\n 'font',\n 'font-size',\n 'font-size-adjust',\n 'font-stretch',\n 'font-variation-settings',\n 'font-weight',\n 'gap',\n 'grid-column-gap',\n 'grid-gap',\n 'grid-row-gap',\n 'grid-template-columns',\n 'grid-template-rows',\n 'height',\n 'inline-size',\n 'input-security',\n 'inset',\n 'inset-block',\n 'inset-block-end',\n 'inset-block-start',\n 'inset-inline',\n 'inset-inline-end',\n 'inset-inline-start',\n 'left',\n 'letter-spacing',\n 'line-clamp',\n 'line-height',\n 'margin',\n 'margin-block-end',\n 'margin-block-start',\n 'margin-bottom',\n 'margin-inline-end',\n 'margin-inline-start',\n 'margin-left',\n 'margin-right',\n 'margin-top',\n 'mask',\n 'mask-border',\n 'mask-position',\n 'mask-size',\n 'max-block-size',\n 'max-height',\n 'max-inline-size',\n 'max-lines',\n 'max-width',\n 'min-block-size',\n 'min-height',\n 'min-inline-size',\n 'min-width',\n 'object-position',\n 'offset',\n 'offset-anchor',\n 'offset-distance',\n 'offset-path',\n 'offset-position',\n 'offset-rotate',\n 'opacity',\n 'order',\n 'outline',\n 'outline-color',\n 'outline-offset',\n 'outline-width',\n 'padding',\n 'padding-block-end',\n 'padding-block-start',\n 'padding-bottom',\n 'padding-inline-end',\n 'padding-inline-start',\n 'padding-left',\n 'padding-right',\n 'padding-top',\n 'perspective',\n 'perspective-origin',\n 'right',\n 'rotate',\n 'row-gap',\n 'scale',\n 'scroll-margin',\n 'scroll-margin-block',\n 'scroll-margin-block-end',\n 'scroll-margin-block-start',\n 'scroll-margin-bottom',\n 'scroll-margin-inline',\n 'scroll-margin-inline-end',\n 'scroll-margin-inline-start',\n 'scroll-margin-left',\n 'scroll-margin-right',\n 'scroll-margin-top',\n 'scroll-padding',\n 'scroll-padding-block',\n 'scroll-padding-block-end',\n 'scroll-padding-block-start',\n 'scroll-padding-bottom',\n 'scroll-padding-inline',\n 'scroll-padding-inline-end',\n 'scroll-padding-inline-start',\n 'scroll-padding-left',\n 'scroll-padding-right',\n 'scroll-padding-top',\n 'scroll-snap-coordinate',\n 'scroll-snap-destination',\n 'scrollbar-color',\n 'shape-image-threshold',\n 'shape-margin',\n 'shape-outside',\n 'tab-size',\n 'text-decoration',\n 'text-decoration-color',\n 'text-decoration-thickness',\n 'text-emphasis',\n 'text-emphasis-color',\n 'text-indent',\n 'text-shadow',\n 'text-underline-offset',\n 'top',\n 'transform',\n 'transform-origin',\n 'translate',\n 'vertical-align',\n 'visibility',\n 'width',\n 'word-spacing',\n 'z-index',\n 'zoom',\n]);\n\nfunction optimizeGroupPlayer(players) {\n switch (players.length) {\n case 0:\n return new NoopAnimationPlayer();\n case 1:\n return players[0];\n default:\n return new ɵAnimationGroupPlayer(players);\n }\n}\nfunction normalizeKeyframes$1(normalizer, keyframes, preStyles = new Map(), postStyles = new Map()) {\n const errors = [];\n const normalizedKeyframes = [];\n let previousOffset = -1;\n let previousKeyframe = null;\n keyframes.forEach(kf => {\n const offset = kf.get('offset');\n const isSameOffset = offset == previousOffset;\n const normalizedKeyframe = (isSameOffset && previousKeyframe) || new Map();\n kf.forEach((val, prop) => {\n let normalizedProp = prop;\n let normalizedValue = val;\n if (prop !== 'offset') {\n normalizedProp = normalizer.normalizePropertyName(normalizedProp, errors);\n switch (normalizedValue) {\n case ɵPRE_STYLE:\n normalizedValue = preStyles.get(prop);\n break;\n case AUTO_STYLE:\n normalizedValue = postStyles.get(prop);\n break;\n default:\n normalizedValue =\n normalizer.normalizeStyleValue(prop, normalizedProp, normalizedValue, errors);\n break;\n }\n }\n normalizedKeyframe.set(normalizedProp, normalizedValue);\n });\n if (!isSameOffset) {\n normalizedKeyframes.push(normalizedKeyframe);\n }\n previousKeyframe = normalizedKeyframe;\n previousOffset = offset;\n });\n if (errors.length) {\n throw animationFailed(errors);\n }\n return normalizedKeyframes;\n}\nfunction listenOnPlayer(player, eventName, event, callback) {\n switch (eventName) {\n case 'start':\n player.onStart(() => callback(event && copyAnimationEvent(event, 'start', player)));\n break;\n case 'done':\n player.onDone(() => callback(event && copyAnimationEvent(event, 'done', player)));\n break;\n case 'destroy':\n player.onDestroy(() => callback(event && copyAnimationEvent(event, 'destroy', player)));\n break;\n }\n}\nfunction copyAnimationEvent(e, phaseName, player) {\n const totalTime = player.totalTime;\n const disabled = player.disabled ? true : false;\n const event = makeAnimationEvent(e.element, e.triggerName, e.fromState, e.toState, phaseName || e.phaseName, totalTime == undefined ? e.totalTime : totalTime, disabled);\n const data = e['_data'];\n if (data != null) {\n event['_data'] = data;\n }\n return event;\n}\nfunction makeAnimationEvent(element, triggerName, fromState, toState, phaseName = '', totalTime = 0, disabled) {\n return { element, triggerName, fromState, toState, phaseName, totalTime, disabled: !!disabled };\n}\nfunction getOrSetDefaultValue(map, key, defaultValue) {\n let value = map.get(key);\n if (!value) {\n map.set(key, value = defaultValue);\n }\n return value;\n}\nfunction parseTimelineCommand(command) {\n const separatorPos = command.indexOf(':');\n const id = command.substring(1, separatorPos);\n const action = command.slice(separatorPos + 1);\n return [id, action];\n}\nconst documentElement = \n/* @__PURE__ */ (() => typeof document === 'undefined' ? null : document.documentElement)();\nfunction getParentElement(element) {\n const parent = element.parentNode || element.host || null; // consider host to support shadow DOM\n if (parent === documentElement) {\n return null;\n }\n return parent;\n}\nfunction containsVendorPrefix(prop) {\n // Webkit is the only real popular vendor prefix nowadays\n // cc: http://shouldiprefix.com/\n return prop.substring(1, 6) == 'ebkit'; // webkit or Webkit\n}\nlet _CACHED_BODY = null;\nlet _IS_WEBKIT = false;\nfunction validateStyleProperty(prop) {\n if (!_CACHED_BODY) {\n _CACHED_BODY = getBodyNode() || {};\n _IS_WEBKIT = _CACHED_BODY.style ? ('WebkitAppearance' in _CACHED_BODY.style) : false;\n }\n let result = true;\n if (_CACHED_BODY.style && !containsVendorPrefix(prop)) {\n result = prop in _CACHED_BODY.style;\n if (!result && _IS_WEBKIT) {\n const camelProp = 'Webkit' + prop.charAt(0).toUpperCase() + prop.slice(1);\n result = camelProp in _CACHED_BODY.style;\n }\n }\n return result;\n}\nfunction validateWebAnimatableStyleProperty(prop) {\n return ANIMATABLE_PROP_SET.has(prop);\n}\nfunction getBodyNode() {\n if (typeof document != 'undefined') {\n return document.body;\n }\n return null;\n}\nfunction containsElement(elm1, elm2) {\n while (elm2) {\n if (elm2 === elm1) {\n return true;\n }\n elm2 = getParentElement(elm2);\n }\n return false;\n}\nfunction invokeQuery(element, selector, multi) {\n if (multi) {\n return Array.from(element.querySelectorAll(selector));\n }\n const elem = element.querySelector(selector);\n return elem ? [elem] : [];\n}\nfunction hypenatePropsKeys(original) {\n const newMap = new Map();\n original.forEach((val, prop) => {\n const newProp = prop.replace(/([a-z])([A-Z])/g, '$1-$2');\n newMap.set(newProp, val);\n });\n return newMap;\n}\n\n/**\n * @publicApi\n */\nclass NoopAnimationDriver {\n validateStyleProperty(prop) {\n return validateStyleProperty(prop);\n }\n matchesElement(_element, _selector) {\n // This method is deprecated and no longer in use so we return false.\n return false;\n }\n containsElement(elm1, elm2) {\n return containsElement(elm1, elm2);\n }\n getParentElement(element) {\n return getParentElement(element);\n }\n query(element, selector, multi) {\n return invokeQuery(element, selector, multi);\n }\n computeStyle(element, prop, defaultValue) {\n return defaultValue || '';\n }\n animate(element, keyframes, duration, delay, easing, previousPlayers = [], scrubberAccessRequested) {\n return new NoopAnimationPlayer(duration, delay);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.11\", ngImport: i0, type: NoopAnimationDriver, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.11\", ngImport: i0, type: NoopAnimationDriver }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.11\", ngImport: i0, type: NoopAnimationDriver, decorators: [{\n type: Injectable\n }] });\n/**\n * @publicApi\n */\nclass AnimationDriver {\n static { this.NOOP = ( /* @__PURE__ */new NoopAnimationDriver()); }\n}\n\nconst ONE_SECOND = 1000;\nconst SUBSTITUTION_EXPR_START = '{{';\nconst SUBSTITUTION_EXPR_END = '}}';\nconst ENTER_CLASSNAME = 'ng-enter';\nconst LEAVE_CLASSNAME = 'ng-leave';\nconst NG_TRIGGER_CLASSNAME = 'ng-trigger';\nconst NG_TRIGGER_SELECTOR = '.ng-trigger';\nconst NG_ANIMATING_CLASSNAME = 'ng-animating';\nconst NG_ANIMATING_SELECTOR = '.ng-animating';\nfunction resolveTimingValue(value) {\n if (typeof value == 'number')\n return value;\n const matches = value.match(/^(-?[\\.\\d]+)(m?s)/);\n if (!matches || matches.length < 2)\n return 0;\n return _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n}\nfunction _convertTimeValueToMS(value, unit) {\n switch (unit) {\n case 's':\n return value * ONE_SECOND;\n default: // ms or something else\n return value;\n }\n}\nfunction resolveTiming(timings, errors, allowNegativeValues) {\n return timings.hasOwnProperty('duration') ?\n timings :\n parseTimeExpression(timings, errors, allowNegativeValues);\n}\nfunction parseTimeExpression(exp, errors, allowNegativeValues) {\n const regex = /^(-?[\\.\\d]+)(m?s)(?:\\s+(-?[\\.\\d]+)(m?s))?(?:\\s+([-a-z]+(?:\\(.+?\\))?))?$/i;\n let duration;\n let delay = 0;\n let easing = '';\n if (typeof exp === 'string') {\n const matches = exp.match(regex);\n if (matches === null) {\n errors.push(invalidTimingValue(exp));\n return { duration: 0, delay: 0, easing: '' };\n }\n duration = _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n const delayMatch = matches[3];\n if (delayMatch != null) {\n delay = _convertTimeValueToMS(parseFloat(delayMatch), matches[4]);\n }\n const easingVal = matches[5];\n if (easingVal) {\n easing = easingVal;\n }\n }\n else {\n duration = exp;\n }\n if (!allowNegativeValues) {\n let containsErrors = false;\n let startIndex = errors.length;\n if (duration < 0) {\n errors.push(negativeStepValue());\n containsErrors = true;\n }\n if (delay < 0) {\n errors.push(negativeDelayValue());\n containsErrors = true;\n }\n if (containsErrors) {\n errors.splice(startIndex, 0, invalidTimingValue(exp));\n }\n }\n return { duration, delay, easing };\n}\nfunction copyObj(obj, destination = {}) {\n Object.keys(obj).forEach(prop => {\n destination[prop] = obj[prop];\n });\n return destination;\n}\nfunction convertToMap(obj) {\n const styleMap = new Map();\n Object.keys(obj).forEach(prop => {\n const val = obj[prop];\n styleMap.set(prop, val);\n });\n return styleMap;\n}\nfunction normalizeKeyframes(keyframes) {\n if (!keyframes.length) {\n return [];\n }\n if (keyframes[0] instanceof Map) {\n return keyframes;\n }\n return keyframes.map(kf => convertToMap(kf));\n}\nfunction normalizeStyles(styles) {\n const normalizedStyles = new Map();\n if (Array.isArray(styles)) {\n styles.forEach(data => copyStyles(data, normalizedStyles));\n }\n else {\n copyStyles(styles, normalizedStyles);\n }\n return normalizedStyles;\n}\nfunction copyStyles(styles, destination = new Map(), backfill) {\n if (backfill) {\n for (let [prop, val] of backfill) {\n destination.set(prop, val);\n }\n }\n for (let [prop, val] of styles) {\n destination.set(prop, val);\n }\n return destination;\n}\nfunction setStyles(element, styles, formerStyles) {\n styles.forEach((val, prop) => {\n const camelProp = dashCaseToCamelCase(prop);\n if (formerStyles && !formerStyles.has(prop)) {\n formerStyles.set(prop, element.style[camelProp]);\n }\n element.style[camelProp] = val;\n });\n}\nfunction eraseStyles(element, styles) {\n styles.forEach((_, prop) => {\n const camelProp = dashCaseToCamelCase(prop);\n element.style[camelProp] = '';\n });\n}\nfunction normalizeAnimationEntry(steps) {\n if (Array.isArray(steps)) {\n if (steps.length == 1)\n return steps[0];\n return sequence(steps);\n }\n return steps;\n}\nfunction validateStyleParams(value, options, errors) {\n const params = options.params || {};\n const matches = extractStyleParams(value);\n if (matches.length) {\n matches.forEach(varName => {\n if (!params.hasOwnProperty(varName)) {\n errors.push(invalidStyleParams(varName));\n }\n });\n }\n}\nconst PARAM_REGEX = new RegExp(`${SUBSTITUTION_EXPR_START}\\\\s*(.+?)\\\\s*${SUBSTITUTION_EXPR_END}`, 'g');\nfunction extractStyleParams(value) {\n let params = [];\n if (typeof value === 'string') {\n let match;\n while (match = PARAM_REGEX.exec(value)) {\n params.push(match[1]);\n }\n PARAM_REGEX.lastIndex = 0;\n }\n return params;\n}\nfunction interpolateParams(value, params, errors) {\n const original = value.toString();\n const str = original.replace(PARAM_REGEX, (_, varName) => {\n let localVal = params[varName];\n // this means that the value was never overridden by the data passed in by the user\n if (localVal == null) {\n errors.push(invalidParamValue(varName));\n localVal = '';\n }\n return localVal.toString();\n });\n // we do this to assert that numeric values stay as they are\n return str == original ? value : str;\n}\nfunction iteratorToArray(iterator) {\n const arr = [];\n let item = iterator.next();\n while (!item.done) {\n arr.push(item.value);\n item = iterator.next();\n }\n return arr;\n}\nconst DASH_CASE_REGEXP = /-+([a-z0-9])/g;\nfunction dashCaseToCamelCase(input) {\n return input.replace(DASH_CASE_REGEXP, (...m) => m[1].toUpperCase());\n}\nfunction camelCaseToDashCase(input) {\n return input.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\nfunction allowPreviousPlayerStylesMerge(duration, delay) {\n return duration === 0 || delay === 0;\n}\nfunction balancePreviousStylesIntoKeyframes(element, keyframes, previousStyles) {\n if (previousStyles.size && keyframes.length) {\n let startingKeyframe = keyframes[0];\n let missingStyleProps = [];\n previousStyles.forEach((val, prop) => {\n if (!startingKeyframe.has(prop)) {\n missingStyleProps.push(prop);\n }\n startingKeyframe.set(prop, val);\n });\n if (missingStyleProps.length) {\n for (let i = 1; i < keyframes.length; i++) {\n let kf = keyframes[i];\n missingStyleProps.forEach(prop => kf.set(prop, computeStyle(element, prop)));\n }\n }\n }\n return keyframes;\n}\nfunction visitDslNode(visitor, node, context) {\n switch (node.type) {\n case 7 /* AnimationMetadataType.Trigger */:\n return visitor.visitTrigger(node, context);\n case 0 /* AnimationMetadataType.State */:\n return visitor.visitState(node, context);\n case 1 /* AnimationMetadataType.Transition */:\n return visitor.visitTransition(node, context);\n case 2 /* AnimationMetadataType.Sequence */:\n return visitor.visitSequence(node, context);\n case 3 /* AnimationMetadataType.Group */:\n return visitor.visitGroup(node, context);\n case 4 /* AnimationMetadataType.Animate */:\n return visitor.visitAnimate(node, context);\n case 5 /* AnimationMetadataType.Keyframes */:\n return visitor.visitKeyframes(node, context);\n case 6 /* AnimationMetadataType.Style */:\n return visitor.visitStyle(node, context);\n case 8 /* AnimationMetadataType.Reference */:\n return visitor.visitReference(node, context);\n case 9 /* AnimationMetadataType.AnimateChild */:\n return visitor.visitAnimateChild(node, context);\n case 10 /* AnimationMetadataType.AnimateRef */:\n return visitor.visitAnimateRef(node, context);\n case 11 /* AnimationMetadataType.Query */:\n return visitor.visitQuery(node, context);\n case 12 /* AnimationMetadataType.Stagger */:\n return visitor.visitStagger(node, context);\n default:\n throw invalidNodeType(node.type);\n }\n}\nfunction computeStyle(element, prop) {\n return window.getComputedStyle(element)[prop];\n}\n\nfunction createListOfWarnings(warnings) {\n const LINE_START = '\\n - ';\n return `${LINE_START}${warnings.filter(Boolean).map(warning => warning).join(LINE_START)}`;\n}\nfunction warnValidation(warnings) {\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n console.warn(`animation validation warnings:${createListOfWarnings(warnings)}`);\n}\nfunction warnTriggerBuild(name, warnings) {\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n console.warn(`The animation trigger \"${name}\" has built with the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction warnRegister(warnings) {\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n console.warn(`Animation built with the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction triggerParsingWarnings(name, warnings) {\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n console.warn(`Animation parsing for the ${name} trigger presents the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction pushUnrecognizedPropertiesWarning(warnings, props) {\n if (props.length) {\n warnings.push(`The following provided properties are not recognized: ${props.join(', ')}`);\n }\n}\n\nconst ANY_STATE = '*';\nfunction parseTransitionExpr(transitionValue, errors) {\n const expressions = [];\n if (typeof transitionValue == 'string') {\n transitionValue.split(/\\s*,\\s*/).forEach(str => parseInnerTransitionStr(str, expressions, errors));\n }\n else {\n expressions.push(transitionValue);\n }\n return expressions;\n}\nfunction parseInnerTransitionStr(eventStr, expressions, errors) {\n if (eventStr[0] == ':') {\n const result = parseAnimationAlias(eventStr, errors);\n if (typeof result == 'function') {\n expressions.push(result);\n return;\n }\n eventStr = result;\n }\n const match = eventStr.match(/^(\\*|[-\\w]+)\\s*()\\s*(\\*|[-\\w]+)$/);\n if (match == null || match.length < 4) {\n errors.push(invalidExpression(eventStr));\n return expressions;\n }\n const fromState = match[1];\n const separator = match[2];\n const toState = match[3];\n expressions.push(makeLambdaFromStates(fromState, toState));\n const isFullAnyStateExpr = fromState == ANY_STATE && toState == ANY_STATE;\n if (separator[0] == '<' && !isFullAnyStateExpr) {\n expressions.push(makeLambdaFromStates(toState, fromState));\n }\n}\nfunction parseAnimationAlias(alias, errors) {\n switch (alias) {\n case ':enter':\n return 'void => *';\n case ':leave':\n return '* => void';\n case ':increment':\n return (fromState, toState) => parseFloat(toState) > parseFloat(fromState);\n case ':decrement':\n return (fromState, toState) => parseFloat(toState) < parseFloat(fromState);\n default:\n errors.push(invalidTransitionAlias(alias));\n return '* => *';\n }\n}\n// DO NOT REFACTOR ... keep the follow set instantiations\n// with the values intact (closure compiler for some reason\n// removes follow-up lines that add the values outside of\n// the constructor...\nconst TRUE_BOOLEAN_VALUES = new Set(['true', '1']);\nconst FALSE_BOOLEAN_VALUES = new Set(['false', '0']);\nfunction makeLambdaFromStates(lhs, rhs) {\n const LHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(lhs) || FALSE_BOOLEAN_VALUES.has(lhs);\n const RHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(rhs) || FALSE_BOOLEAN_VALUES.has(rhs);\n return (fromState, toState) => {\n let lhsMatch = lhs == ANY_STATE || lhs == fromState;\n let rhsMatch = rhs == ANY_STATE || rhs == toState;\n if (!lhsMatch && LHS_MATCH_BOOLEAN && typeof fromState === 'boolean') {\n lhsMatch = fromState ? TRUE_BOOLEAN_VALUES.has(lhs) : FALSE_BOOLEAN_VALUES.has(lhs);\n }\n if (!rhsMatch && RHS_MATCH_BOOLEAN && typeof toState === 'boolean') {\n rhsMatch = toState ? TRUE_BOOLEAN_VALUES.has(rhs) : FALSE_BOOLEAN_VALUES.has(rhs);\n }\n return lhsMatch && rhsMatch;\n };\n}\n\nconst SELF_TOKEN = ':self';\nconst SELF_TOKEN_REGEX = new RegExp(`s*${SELF_TOKEN}s*,?`, 'g');\n/*\n * [Validation]\n * The visitor code below will traverse the animation AST generated by the animation verb functions\n * (the output is a tree of objects) and attempt to perform a series of validations on the data. The\n * following corner-cases will be validated:\n *\n * 1. Overlap of animations\n * Given that a CSS property cannot be animated in more than one place at the same time, it's\n * important that this behavior is detected and validated. The way in which this occurs is that\n * each time a style property is examined, a string-map containing the property will be updated with\n * the start and end times for when the property is used within an animation step.\n *\n * If there are two or more parallel animations that are currently running (these are invoked by the\n * group()) on the same element then the validator will throw an error. Since the start/end timing\n * values are collected for each property then if the current animation step is animating the same\n * property and its timing values fall anywhere into the window of time that the property is\n * currently being animated within then this is what causes an error.\n *\n * 2. Timing values\n * The validator will validate to see if a timing value of `duration delay easing` or\n * `durationNumber` is valid or not.\n *\n * (note that upon validation the code below will replace the timing data with an object containing\n * {duration,delay,easing}.\n *\n * 3. Offset Validation\n * Each of the style() calls are allowed to have an offset value when placed inside of keyframes().\n * Offsets within keyframes() are considered valid when:\n *\n * - No offsets are used at all\n * - Each style() entry contains an offset value\n * - Each offset is between 0 and 1\n * - Each offset is greater to or equal than the previous one\n *\n * Otherwise an error will be thrown.\n */\nfunction buildAnimationAst(driver, metadata, errors, warnings) {\n return new AnimationAstBuilderVisitor(driver).build(metadata, errors, warnings);\n}\nconst ROOT_SELECTOR = '';\nclass AnimationAstBuilderVisitor {\n constructor(_driver) {\n this._driver = _driver;\n }\n build(metadata, errors, warnings) {\n const context = new AnimationAstBuilderContext(errors);\n this._resetContextStyleTimingState(context);\n const ast = visitDslNode(this, normalizeAnimationEntry(metadata), context);\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (context.unsupportedCSSPropertiesFound.size) {\n pushUnrecognizedPropertiesWarning(warnings, [...context.unsupportedCSSPropertiesFound.keys()]);\n }\n }\n return ast;\n }\n _resetContextStyleTimingState(context) {\n context.currentQuerySelector = ROOT_SELECTOR;\n context.collectedStyles = new Map();\n context.collectedStyles.set(ROOT_SELECTOR, new Map());\n context.currentTime = 0;\n }\n visitTrigger(metadata, context) {\n let queryCount = context.queryCount = 0;\n let depCount = context.depCount = 0;\n const states = [];\n const transitions = [];\n if (metadata.name.charAt(0) == '@') {\n context.errors.push(invalidTrigger());\n }\n metadata.definitions.forEach(def => {\n this._resetContextStyleTimingState(context);\n if (def.type == 0 /* AnimationMetadataType.State */) {\n const stateDef = def;\n const name = stateDef.name;\n name.toString().split(/\\s*,\\s*/).forEach(n => {\n stateDef.name = n;\n states.push(this.visitState(stateDef, context));\n });\n stateDef.name = name;\n }\n else if (def.type == 1 /* AnimationMetadataType.Transition */) {\n const transition = this.visitTransition(def, context);\n queryCount += transition.queryCount;\n depCount += transition.depCount;\n transitions.push(transition);\n }\n else {\n context.errors.push(invalidDefinition());\n }\n });\n return {\n type: 7 /* AnimationMetadataType.Trigger */,\n name: metadata.name,\n states,\n transitions,\n queryCount,\n depCount,\n options: null\n };\n }\n visitState(metadata, context) {\n const styleAst = this.visitStyle(metadata.styles, context);\n const astParams = (metadata.options && metadata.options.params) || null;\n if (styleAst.containsDynamicStyles) {\n const missingSubs = new Set();\n const params = astParams || {};\n styleAst.styles.forEach(style => {\n if (style instanceof Map) {\n style.forEach(value => {\n extractStyleParams(value).forEach(sub => {\n if (!params.hasOwnProperty(sub)) {\n missingSubs.add(sub);\n }\n });\n });\n }\n });\n if (missingSubs.size) {\n const missingSubsArr = iteratorToArray(missingSubs.values());\n context.errors.push(invalidState(metadata.name, missingSubsArr));\n }\n }\n return {\n type: 0 /* AnimationMetadataType.State */,\n name: metadata.name,\n style: styleAst,\n options: astParams ? { params: astParams } : null\n };\n }\n visitTransition(metadata, context) {\n context.queryCount = 0;\n context.depCount = 0;\n const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);\n const matchers = parseTransitionExpr(metadata.expr, context.errors);\n return {\n type: 1 /* AnimationMetadataType.Transition */,\n matchers,\n animation,\n queryCount: context.queryCount,\n depCount: context.depCount,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitSequence(metadata, context) {\n return {\n type: 2 /* AnimationMetadataType.Sequence */,\n steps: metadata.steps.map(s => visitDslNode(this, s, context)),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitGroup(metadata, context) {\n const currentTime = context.currentTime;\n let furthestTime = 0;\n const steps = metadata.steps.map(step => {\n context.currentTime = currentTime;\n const innerAst = visitDslNode(this, step, context);\n furthestTime = Math.max(furthestTime, context.currentTime);\n return innerAst;\n });\n context.currentTime = furthestTime;\n return {\n type: 3 /* AnimationMetadataType.Group */,\n steps,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimate(metadata, context) {\n const timingAst = constructTimingAst(metadata.timings, context.errors);\n context.currentAnimateTimings = timingAst;\n let styleAst;\n let styleMetadata = metadata.styles ? metadata.styles : style({});\n if (styleMetadata.type == 5 /* AnimationMetadataType.Keyframes */) {\n styleAst = this.visitKeyframes(styleMetadata, context);\n }\n else {\n let styleMetadata = metadata.styles;\n let isEmpty = false;\n if (!styleMetadata) {\n isEmpty = true;\n const newStyleData = {};\n if (timingAst.easing) {\n newStyleData['easing'] = timingAst.easing;\n }\n styleMetadata = style(newStyleData);\n }\n context.currentTime += timingAst.duration + timingAst.delay;\n const _styleAst = this.visitStyle(styleMetadata, context);\n _styleAst.isEmptyStep = isEmpty;\n styleAst = _styleAst;\n }\n context.currentAnimateTimings = null;\n return {\n type: 4 /* AnimationMetadataType.Animate */,\n timings: timingAst,\n style: styleAst,\n options: null\n };\n }\n visitStyle(metadata, context) {\n const ast = this._makeStyleAst(metadata, context);\n this._validateStyleAst(ast, context);\n return ast;\n }\n _makeStyleAst(metadata, context) {\n const styles = [];\n const metadataStyles = Array.isArray(metadata.styles) ? metadata.styles : [metadata.styles];\n for (let styleTuple of metadataStyles) {\n if (typeof styleTuple === 'string') {\n if (styleTuple === AUTO_STYLE) {\n styles.push(styleTuple);\n }\n else {\n context.errors.push(invalidStyleValue(styleTuple));\n }\n }\n else {\n styles.push(convertToMap(styleTuple));\n }\n }\n let containsDynamicStyles = false;\n let collectedEasing = null;\n styles.forEach(styleData => {\n if (styleData instanceof Map) {\n if (styleData.has('easing')) {\n collectedEasing = styleData.get('easing');\n styleData.delete('easing');\n }\n if (!containsDynamicStyles) {\n for (let value of styleData.values()) {\n if (value.toString().indexOf(SUBSTITUTION_EXPR_START) >= 0) {\n containsDynamicStyles = true;\n break;\n }\n }\n }\n }\n });\n return {\n type: 6 /* AnimationMetadataType.Style */,\n styles,\n easing: collectedEasing,\n offset: metadata.offset,\n containsDynamicStyles,\n options: null\n };\n }\n _validateStyleAst(ast, context) {\n const timings = context.currentAnimateTimings;\n let endTime = context.currentTime;\n let startTime = context.currentTime;\n if (timings && startTime > 0) {\n startTime -= timings.duration + timings.delay;\n }\n ast.styles.forEach(tuple => {\n if (typeof tuple === 'string')\n return;\n tuple.forEach((value, prop) => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._driver.validateStyleProperty(prop)) {\n tuple.delete(prop);\n context.unsupportedCSSPropertiesFound.add(prop);\n return;\n }\n }\n // This is guaranteed to have a defined Map at this querySelector location making it\n // safe to add the assertion here. It is set as a default empty map in prior methods.\n const collectedStyles = context.collectedStyles.get(context.currentQuerySelector);\n const collectedEntry = collectedStyles.get(prop);\n let updateCollectedStyle = true;\n if (collectedEntry) {\n if (startTime != endTime && startTime >= collectedEntry.startTime &&\n endTime <= collectedEntry.endTime) {\n context.errors.push(invalidParallelAnimation(prop, collectedEntry.startTime, collectedEntry.endTime, startTime, endTime));\n updateCollectedStyle = false;\n }\n // we always choose the smaller start time value since we\n // want to have a record of the entire animation window where\n // the style property is being animated in between\n startTime = collectedEntry.startTime;\n }\n if (updateCollectedStyle) {\n collectedStyles.set(prop, { startTime, endTime });\n }\n if (context.options) {\n validateStyleParams(value, context.options, context.errors);\n }\n });\n });\n }\n visitKeyframes(metadata, context) {\n const ast = { type: 5 /* AnimationMetadataType.Keyframes */, styles: [], options: null };\n if (!context.currentAnimateTimings) {\n context.errors.push(invalidKeyframes());\n return ast;\n }\n const MAX_KEYFRAME_OFFSET = 1;\n let totalKeyframesWithOffsets = 0;\n const offsets = [];\n let offsetsOutOfOrder = false;\n let keyframesOutOfRange = false;\n let previousOffset = 0;\n const keyframes = metadata.steps.map(styles => {\n const style = this._makeStyleAst(styles, context);\n let offsetVal = style.offset != null ? style.offset : consumeOffset(style.styles);\n let offset = 0;\n if (offsetVal != null) {\n totalKeyframesWithOffsets++;\n offset = style.offset = offsetVal;\n }\n keyframesOutOfRange = keyframesOutOfRange || offset < 0 || offset > 1;\n offsetsOutOfOrder = offsetsOutOfOrder || offset < previousOffset;\n previousOffset = offset;\n offsets.push(offset);\n return style;\n });\n if (keyframesOutOfRange) {\n context.errors.push(invalidOffset());\n }\n if (offsetsOutOfOrder) {\n context.errors.push(keyframeOffsetsOutOfOrder());\n }\n const length = metadata.steps.length;\n let generatedOffset = 0;\n if (totalKeyframesWithOffsets > 0 && totalKeyframesWithOffsets < length) {\n context.errors.push(keyframesMissingOffsets());\n }\n else if (totalKeyframesWithOffsets == 0) {\n generatedOffset = MAX_KEYFRAME_OFFSET / (length - 1);\n }\n const limit = length - 1;\n const currentTime = context.currentTime;\n const currentAnimateTimings = context.currentAnimateTimings;\n const animateDuration = currentAnimateTimings.duration;\n keyframes.forEach((kf, i) => {\n const offset = generatedOffset > 0 ? (i == limit ? 1 : (generatedOffset * i)) : offsets[i];\n const durationUpToThisFrame = offset * animateDuration;\n context.currentTime = currentTime + currentAnimateTimings.delay + durationUpToThisFrame;\n currentAnimateTimings.duration = durationUpToThisFrame;\n this._validateStyleAst(kf, context);\n kf.offset = offset;\n ast.styles.push(kf);\n });\n return ast;\n }\n visitReference(metadata, context) {\n return {\n type: 8 /* AnimationMetadataType.Reference */,\n animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimateChild(metadata, context) {\n context.depCount++;\n return {\n type: 9 /* AnimationMetadataType.AnimateChild */,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimateRef(metadata, context) {\n return {\n type: 10 /* AnimationMetadataType.AnimateRef */,\n animation: this.visitReference(metadata.animation, context),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitQuery(metadata, context) {\n const parentSelector = context.currentQuerySelector;\n const options = (metadata.options || {});\n context.queryCount++;\n context.currentQuery = metadata;\n const [selector, includeSelf] = normalizeSelector(metadata.selector);\n context.currentQuerySelector =\n parentSelector.length ? (parentSelector + ' ' + selector) : selector;\n getOrSetDefaultValue(context.collectedStyles, context.currentQuerySelector, new Map());\n const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);\n context.currentQuery = null;\n context.currentQuerySelector = parentSelector;\n return {\n type: 11 /* AnimationMetadataType.Query */,\n selector,\n limit: options.limit || 0,\n optional: !!options.optional,\n includeSelf,\n animation,\n originalSelector: metadata.selector,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitStagger(metadata, context) {\n if (!context.currentQuery) {\n context.errors.push(invalidStagger());\n }\n const timings = metadata.timings === 'full' ?\n { duration: 0, delay: 0, easing: 'full' } :\n resolveTiming(metadata.timings, context.errors, true);\n return {\n type: 12 /* AnimationMetadataType.Stagger */,\n animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),\n timings,\n options: null\n };\n }\n}\nfunction normalizeSelector(selector) {\n const hasAmpersand = selector.split(/\\s*,\\s*/).find(token => token == SELF_TOKEN) ? true : false;\n if (hasAmpersand) {\n selector = selector.replace(SELF_TOKEN_REGEX, '');\n }\n // Note: the :enter and :leave aren't normalized here since those\n // selectors are filled in at runtime during timeline building\n selector = selector.replace(/@\\*/g, NG_TRIGGER_SELECTOR)\n .replace(/@\\w+/g, match => NG_TRIGGER_SELECTOR + '-' + match.slice(1))\n .replace(/:animating/g, NG_ANIMATING_SELECTOR);\n return [selector, hasAmpersand];\n}\nfunction normalizeParams(obj) {\n return obj ? copyObj(obj) : null;\n}\nclass AnimationAstBuilderContext {\n constructor(errors) {\n this.errors = errors;\n this.queryCount = 0;\n this.depCount = 0;\n this.currentTransition = null;\n this.currentQuery = null;\n this.currentQuerySelector = null;\n this.currentAnimateTimings = null;\n this.currentTime = 0;\n this.collectedStyles = new Map();\n this.options = null;\n this.unsupportedCSSPropertiesFound = new Set();\n }\n}\nfunction consumeOffset(styles) {\n if (typeof styles == 'string')\n return null;\n let offset = null;\n if (Array.isArray(styles)) {\n styles.forEach(styleTuple => {\n if (styleTuple instanceof Map && styleTuple.has('offset')) {\n const obj = styleTuple;\n offset = parseFloat(obj.get('offset'));\n obj.delete('offset');\n }\n });\n }\n else if (styles instanceof Map && styles.has('offset')) {\n const obj = styles;\n offset = parseFloat(obj.get('offset'));\n obj.delete('offset');\n }\n return offset;\n}\nfunction constructTimingAst(value, errors) {\n if (value.hasOwnProperty('duration')) {\n return value;\n }\n if (typeof value == 'number') {\n const duration = resolveTiming(value, errors).duration;\n return makeTimingAst(duration, 0, '');\n }\n const strValue = value;\n const isDynamic = strValue.split(/\\s+/).some(v => v.charAt(0) == '{' && v.charAt(1) == '{');\n if (isDynamic) {\n const ast = makeTimingAst(0, 0, '');\n ast.dynamic = true;\n ast.strValue = strValue;\n return ast;\n }\n const timings = resolveTiming(strValue, errors);\n return makeTimingAst(timings.duration, timings.delay, timings.easing);\n}\nfunction normalizeAnimationOptions(options) {\n if (options) {\n options = copyObj(options);\n if (options['params']) {\n options['params'] = normalizeParams(options['params']);\n }\n }\n else {\n options = {};\n }\n return options;\n}\nfunction makeTimingAst(duration, delay, easing) {\n return { duration, delay, easing };\n}\n\nfunction createTimelineInstruction(element, keyframes, preStyleProps, postStyleProps, duration, delay, easing = null, subTimeline = false) {\n return {\n type: 1 /* AnimationTransitionInstructionType.TimelineAnimation */,\n element,\n keyframes,\n preStyleProps,\n postStyleProps,\n duration,\n delay,\n totalTime: duration + delay,\n easing,\n subTimeline\n };\n}\n\nclass ElementInstructionMap {\n constructor() {\n this._map = new Map();\n }\n get(element) {\n return this._map.get(element) || [];\n }\n append(element, instructions) {\n let existingInstructions = this._map.get(element);\n if (!existingInstructions) {\n this._map.set(element, existingInstructions = []);\n }\n existingInstructions.push(...instructions);\n }\n has(element) {\n return this._map.has(element);\n }\n clear() {\n this._map.clear();\n }\n}\n\nconst ONE_FRAME_IN_MILLISECONDS = 1;\nconst ENTER_TOKEN = ':enter';\nconst ENTER_TOKEN_REGEX = new RegExp(ENTER_TOKEN, 'g');\nconst LEAVE_TOKEN = ':leave';\nconst LEAVE_TOKEN_REGEX = new RegExp(LEAVE_TOKEN, 'g');\n/*\n * The code within this file aims to generate web-animations-compatible keyframes from Angular's\n * animation DSL code.\n *\n * The code below will be converted from:\n *\n * ```\n * sequence([\n * style({ opacity: 0 }),\n * animate(1000, style({ opacity: 0 }))\n * ])\n * ```\n *\n * To:\n * ```\n * keyframes = [{ opacity: 0, offset: 0 }, { opacity: 1, offset: 1 }]\n * duration = 1000\n * delay = 0\n * easing = ''\n * ```\n *\n * For this operation to cover the combination of animation verbs (style, animate, group, etc...) a\n * combination of AST traversal and merge-sort-like algorithms are used.\n *\n * [AST Traversal]\n * Each of the animation verbs, when executed, will return an string-map object representing what\n * type of action it is (style, animate, group, etc...) and the data associated with it. This means\n * that when functional composition mix of these functions is evaluated (like in the example above)\n * then it will end up producing a tree of objects representing the animation itself.\n *\n * When this animation object tree is processed by the visitor code below it will visit each of the\n * verb statements within the visitor. And during each visit it will build the context of the\n * animation keyframes by interacting with the `TimelineBuilder`.\n *\n * [TimelineBuilder]\n * This class is responsible for tracking the styles and building a series of keyframe objects for a\n * timeline between a start and end time. The builder starts off with an initial timeline and each\n * time the AST comes across a `group()`, `keyframes()` or a combination of the two within a\n * `sequence()` then it will generate a sub timeline for each step as well as a new one after\n * they are complete.\n *\n * As the AST is traversed, the timing state on each of the timelines will be incremented. If a sub\n * timeline was created (based on one of the cases above) then the parent timeline will attempt to\n * merge the styles used within the sub timelines into itself (only with group() this will happen).\n * This happens with a merge operation (much like how the merge works in mergeSort) and it will only\n * copy the most recently used styles from the sub timelines into the parent timeline. This ensures\n * that if the styles are used later on in another phase of the animation then they will be the most\n * up-to-date values.\n *\n * [How Missing Styles Are Updated]\n * Each timeline has a `backFill` property which is responsible for filling in new styles into\n * already processed keyframes if a new style shows up later within the animation sequence.\n *\n * ```\n * sequence([\n * style({ width: 0 }),\n * animate(1000, style({ width: 100 })),\n * animate(1000, style({ width: 200 })),\n * animate(1000, style({ width: 300 }))\n * animate(1000, style({ width: 400, height: 400 })) // notice how `height` doesn't exist anywhere\n * else\n * ])\n * ```\n *\n * What is happening here is that the `height` value is added later in the sequence, but is missing\n * from all previous animation steps. Therefore when a keyframe is created it would also be missing\n * from all previous keyframes up until where it is first used. For the timeline keyframe generation\n * to properly fill in the style it will place the previous value (the value from the parent\n * timeline) or a default value of `*` into the backFill map. The `copyStyles` method in util.ts\n * handles propagating that backfill map to the styles object.\n *\n * When a sub-timeline is created it will have its own backFill property. This is done so that\n * styles present within the sub-timeline do not accidentally seep into the previous/future timeline\n * keyframes\n *\n * [Validation]\n * The code in this file is not responsible for validation. That functionality happens with within\n * the `AnimationValidatorVisitor` code.\n */\nfunction buildAnimationTimelines(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles = new Map(), finalStyles = new Map(), options, subInstructions, errors = []) {\n return new AnimationTimelineBuilderVisitor().buildKeyframes(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles, options, subInstructions, errors);\n}\nclass AnimationTimelineBuilderVisitor {\n buildKeyframes(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles, options, subInstructions, errors = []) {\n subInstructions = subInstructions || new ElementInstructionMap();\n const context = new AnimationTimelineContext(driver, rootElement, subInstructions, enterClassName, leaveClassName, errors, []);\n context.options = options;\n const delay = options.delay ? resolveTimingValue(options.delay) : 0;\n context.currentTimeline.delayNextStep(delay);\n context.currentTimeline.setStyles([startingStyles], null, context.errors, options);\n visitDslNode(this, ast, context);\n // this checks to see if an actual animation happened\n const timelines = context.timelines.filter(timeline => timeline.containsAnimation());\n // note: we just want to apply the final styles for the rootElement, so we do not\n // just apply the styles to the last timeline but the last timeline which\n // element is the root one (basically `*`-styles are replaced with the actual\n // state style values only for the root element)\n if (timelines.length && finalStyles.size) {\n let lastRootTimeline;\n for (let i = timelines.length - 1; i >= 0; i--) {\n const timeline = timelines[i];\n if (timeline.element === rootElement) {\n lastRootTimeline = timeline;\n break;\n }\n }\n if (lastRootTimeline && !lastRootTimeline.allowOnlyTimelineStyles()) {\n lastRootTimeline.setStyles([finalStyles], null, context.errors, options);\n }\n }\n return timelines.length ?\n timelines.map(timeline => timeline.buildKeyframes()) :\n [createTimelineInstruction(rootElement, [], [], [], 0, delay, '', false)];\n }\n visitTrigger(ast, context) {\n // these values are not visited in this AST\n }\n visitState(ast, context) {\n // these values are not visited in this AST\n }\n visitTransition(ast, context) {\n // these values are not visited in this AST\n }\n visitAnimateChild(ast, context) {\n const elementInstructions = context.subInstructions.get(context.element);\n if (elementInstructions) {\n const innerContext = context.createSubContext(ast.options);\n const startTime = context.currentTimeline.currentTime;\n const endTime = this._visitSubInstructions(elementInstructions, innerContext, innerContext.options);\n if (startTime != endTime) {\n // we do this on the upper context because we created a sub context for\n // the sub child animations\n context.transformIntoNewTimeline(endTime);\n }\n }\n context.previousNode = ast;\n }\n visitAnimateRef(ast, context) {\n const innerContext = context.createSubContext(ast.options);\n innerContext.transformIntoNewTimeline();\n this._applyAnimationRefDelays([ast.options, ast.animation.options], context, innerContext);\n this.visitReference(ast.animation, innerContext);\n context.transformIntoNewTimeline(innerContext.currentTimeline.currentTime);\n context.previousNode = ast;\n }\n _applyAnimationRefDelays(animationsRefsOptions, context, innerContext) {\n for (const animationRefOptions of animationsRefsOptions) {\n const animationDelay = animationRefOptions?.delay;\n if (animationDelay) {\n const animationDelayValue = typeof animationDelay === 'number' ?\n animationDelay :\n resolveTimingValue(interpolateParams(animationDelay, animationRefOptions?.params ?? {}, context.errors));\n innerContext.delayNextStep(animationDelayValue);\n }\n }\n }\n _visitSubInstructions(instructions, context, options) {\n const startTime = context.currentTimeline.currentTime;\n let furthestTime = startTime;\n // this is a special-case for when a user wants to skip a sub\n // animation from being fired entirely.\n const duration = options.duration != null ? resolveTimingValue(options.duration) : null;\n const delay = options.delay != null ? resolveTimingValue(options.delay) : null;\n if (duration !== 0) {\n instructions.forEach(instruction => {\n const instructionTimings = context.appendInstructionToTimeline(instruction, duration, delay);\n furthestTime =\n Math.max(furthestTime, instructionTimings.duration + instructionTimings.delay);\n });\n }\n return furthestTime;\n }\n visitReference(ast, context) {\n context.updateOptions(ast.options, true);\n visitDslNode(this, ast.animation, context);\n context.previousNode = ast;\n }\n visitSequence(ast, context) {\n const subContextCount = context.subContextCount;\n let ctx = context;\n const options = ast.options;\n if (options && (options.params || options.delay)) {\n ctx = context.createSubContext(options);\n ctx.transformIntoNewTimeline();\n if (options.delay != null) {\n if (ctx.previousNode.type == 6 /* AnimationMetadataType.Style */) {\n ctx.currentTimeline.snapshotCurrentStyles();\n ctx.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n }\n const delay = resolveTimingValue(options.delay);\n ctx.delayNextStep(delay);\n }\n }\n if (ast.steps.length) {\n ast.steps.forEach(s => visitDslNode(this, s, ctx));\n // this is here just in case the inner steps only contain or end with a style() call\n ctx.currentTimeline.applyStylesToKeyframe();\n // this means that some animation function within the sequence\n // ended up creating a sub timeline (which means the current\n // timeline cannot overlap with the contents of the sequence)\n if (ctx.subContextCount > subContextCount) {\n ctx.transformIntoNewTimeline();\n }\n }\n context.previousNode = ast;\n }\n visitGroup(ast, context) {\n const innerTimelines = [];\n let furthestTime = context.currentTimeline.currentTime;\n const delay = ast.options && ast.options.delay ? resolveTimingValue(ast.options.delay) : 0;\n ast.steps.forEach(s => {\n const innerContext = context.createSubContext(ast.options);\n if (delay) {\n innerContext.delayNextStep(delay);\n }\n visitDslNode(this, s, innerContext);\n furthestTime = Math.max(furthestTime, innerContext.currentTimeline.currentTime);\n innerTimelines.push(innerContext.currentTimeline);\n });\n // this operation is run after the AST loop because otherwise\n // if the parent timeline's collected styles were updated then\n // it would pass in invalid data into the new-to-be forked items\n innerTimelines.forEach(timeline => context.currentTimeline.mergeTimelineCollectedStyles(timeline));\n context.transformIntoNewTimeline(furthestTime);\n context.previousNode = ast;\n }\n _visitTiming(ast, context) {\n if (ast.dynamic) {\n const strValue = ast.strValue;\n const timingValue = context.params ? interpolateParams(strValue, context.params, context.errors) : strValue;\n return resolveTiming(timingValue, context.errors);\n }\n else {\n return { duration: ast.duration, delay: ast.delay, easing: ast.easing };\n }\n }\n visitAnimate(ast, context) {\n const timings = context.currentAnimateTimings = this._visitTiming(ast.timings, context);\n const timeline = context.currentTimeline;\n if (timings.delay) {\n context.incrementTime(timings.delay);\n timeline.snapshotCurrentStyles();\n }\n const style = ast.style;\n if (style.type == 5 /* AnimationMetadataType.Keyframes */) {\n this.visitKeyframes(style, context);\n }\n else {\n context.incrementTime(timings.duration);\n this.visitStyle(style, context);\n timeline.applyStylesToKeyframe();\n }\n context.currentAnimateTimings = null;\n context.previousNode = ast;\n }\n visitStyle(ast, context) {\n const timeline = context.currentTimeline;\n const timings = context.currentAnimateTimings;\n // this is a special case for when a style() call\n // directly follows an animate() call (but not inside of an animate() call)\n if (!timings && timeline.hasCurrentStyleProperties()) {\n timeline.forwardFrame();\n }\n const easing = (timings && timings.easing) || ast.easing;\n if (ast.isEmptyStep) {\n timeline.applyEmptyStep(easing);\n }\n else {\n timeline.setStyles(ast.styles, easing, context.errors, context.options);\n }\n context.previousNode = ast;\n }\n visitKeyframes(ast, context) {\n const currentAnimateTimings = context.currentAnimateTimings;\n const startTime = (context.currentTimeline).duration;\n const duration = currentAnimateTimings.duration;\n const innerContext = context.createSubContext();\n const innerTimeline = innerContext.currentTimeline;\n innerTimeline.easing = currentAnimateTimings.easing;\n ast.styles.forEach(step => {\n const offset = step.offset || 0;\n innerTimeline.forwardTime(offset * duration);\n innerTimeline.setStyles(step.styles, step.easing, context.errors, context.options);\n innerTimeline.applyStylesToKeyframe();\n });\n // this will ensure that the parent timeline gets all the styles from\n // the child even if the new timeline below is not used\n context.currentTimeline.mergeTimelineCollectedStyles(innerTimeline);\n // we do this because the window between this timeline and the sub timeline\n // should ensure that the styles within are exactly the same as they were before\n context.transformIntoNewTimeline(startTime + duration);\n context.previousNode = ast;\n }\n visitQuery(ast, context) {\n // in the event that the first step before this is a style step we need\n // to ensure the styles are applied before the children are animated\n const startTime = context.currentTimeline.currentTime;\n const options = (ast.options || {});\n const delay = options.delay ? resolveTimingValue(options.delay) : 0;\n if (delay &&\n (context.previousNode.type === 6 /* AnimationMetadataType.Style */ ||\n (startTime == 0 && context.currentTimeline.hasCurrentStyleProperties()))) {\n context.currentTimeline.snapshotCurrentStyles();\n context.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n }\n let furthestTime = startTime;\n const elms = context.invokeQuery(ast.selector, ast.originalSelector, ast.limit, ast.includeSelf, options.optional ? true : false, context.errors);\n context.currentQueryTotal = elms.length;\n let sameElementTimeline = null;\n elms.forEach((element, i) => {\n context.currentQueryIndex = i;\n const innerContext = context.createSubContext(ast.options, element);\n if (delay) {\n innerContext.delayNextStep(delay);\n }\n if (element === context.element) {\n sameElementTimeline = innerContext.currentTimeline;\n }\n visitDslNode(this, ast.animation, innerContext);\n // this is here just incase the inner steps only contain or end\n // with a style() call (which is here to signal that this is a preparatory\n // call to style an element before it is animated again)\n innerContext.currentTimeline.applyStylesToKeyframe();\n const endTime = innerContext.currentTimeline.currentTime;\n furthestTime = Math.max(furthestTime, endTime);\n });\n context.currentQueryIndex = 0;\n context.currentQueryTotal = 0;\n context.transformIntoNewTimeline(furthestTime);\n if (sameElementTimeline) {\n context.currentTimeline.mergeTimelineCollectedStyles(sameElementTimeline);\n context.currentTimeline.snapshotCurrentStyles();\n }\n context.previousNode = ast;\n }\n visitStagger(ast, context) {\n const parentContext = context.parentContext;\n const tl = context.currentTimeline;\n const timings = ast.timings;\n const duration = Math.abs(timings.duration);\n const maxTime = duration * (context.currentQueryTotal - 1);\n let delay = duration * context.currentQueryIndex;\n let staggerTransformer = timings.duration < 0 ? 'reverse' : timings.easing;\n switch (staggerTransformer) {\n case 'reverse':\n delay = maxTime - delay;\n break;\n case 'full':\n delay = parentContext.currentStaggerTime;\n break;\n }\n const timeline = context.currentTimeline;\n if (delay) {\n timeline.delayNextStep(delay);\n }\n const startingTime = timeline.currentTime;\n visitDslNode(this, ast.animation, context);\n context.previousNode = ast;\n // time = duration + delay\n // the reason why this computation is so complex is because\n // the inner timeline may either have a delay value or a stretched\n // keyframe depending on if a subtimeline is not used or is used.\n parentContext.currentStaggerTime =\n (tl.currentTime - startingTime) + (tl.startTime - parentContext.currentTimeline.startTime);\n }\n}\nconst DEFAULT_NOOP_PREVIOUS_NODE = {};\nclass AnimationTimelineContext {\n constructor(_driver, element, subInstructions, _enterClassName, _leaveClassName, errors, timelines, initialTimeline) {\n this._driver = _driver;\n this.element = element;\n this.subInstructions = subInstructions;\n this._enterClassName = _enterClassName;\n this._leaveClassName = _leaveClassName;\n this.errors = errors;\n this.timelines = timelines;\n this.parentContext = null;\n this.currentAnimateTimings = null;\n this.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n this.subContextCount = 0;\n this.options = {};\n this.currentQueryIndex = 0;\n this.currentQueryTotal = 0;\n this.currentStaggerTime = 0;\n this.currentTimeline = initialTimeline || new TimelineBuilder(this._driver, element, 0);\n timelines.push(this.currentTimeline);\n }\n get params() {\n return this.options.params;\n }\n updateOptions(options, skipIfExists) {\n if (!options)\n return;\n const newOptions = options;\n let optionsToUpdate = this.options;\n // NOTE: this will get patched up when other animation methods support duration overrides\n if (newOptions.duration != null) {\n optionsToUpdate.duration = resolveTimingValue(newOptions.duration);\n }\n if (newOptions.delay != null) {\n optionsToUpdate.delay = resolveTimingValue(newOptions.delay);\n }\n const newParams = newOptions.params;\n if (newParams) {\n let paramsToUpdate = optionsToUpdate.params;\n if (!paramsToUpdate) {\n paramsToUpdate = this.options.params = {};\n }\n Object.keys(newParams).forEach(name => {\n if (!skipIfExists || !paramsToUpdate.hasOwnProperty(name)) {\n paramsToUpdate[name] = interpolateParams(newParams[name], paramsToUpdate, this.errors);\n }\n });\n }\n }\n _copyOptions() {\n const options = {};\n if (this.options) {\n const oldParams = this.options.params;\n if (oldParams) {\n const params = options['params'] = {};\n Object.keys(oldParams).forEach(name => {\n params[name] = oldParams[name];\n });\n }\n }\n return options;\n }\n createSubContext(options = null, element, newTime) {\n const target = element || this.element;\n const context = new AnimationTimelineContext(this._driver, target, this.subInstructions, this._enterClassName, this._leaveClassName, this.errors, this.timelines, this.currentTimeline.fork(target, newTime || 0));\n context.previousNode = this.previousNode;\n context.currentAnimateTimings = this.currentAnimateTimings;\n context.options = this._copyOptions();\n context.updateOptions(options);\n context.currentQueryIndex = this.currentQueryIndex;\n context.currentQueryTotal = this.currentQueryTotal;\n context.parentContext = this;\n this.subContextCount++;\n return context;\n }\n transformIntoNewTimeline(newTime) {\n this.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n this.currentTimeline = this.currentTimeline.fork(this.element, newTime);\n this.timelines.push(this.currentTimeline);\n return this.currentTimeline;\n }\n appendInstructionToTimeline(instruction, duration, delay) {\n const updatedTimings = {\n duration: duration != null ? duration : instruction.duration,\n delay: this.currentTimeline.currentTime + (delay != null ? delay : 0) + instruction.delay,\n easing: ''\n };\n const builder = new SubTimelineBuilder(this._driver, instruction.element, instruction.keyframes, instruction.preStyleProps, instruction.postStyleProps, updatedTimings, instruction.stretchStartingKeyframe);\n this.timelines.push(builder);\n return updatedTimings;\n }\n incrementTime(time) {\n this.currentTimeline.forwardTime(this.currentTimeline.duration + time);\n }\n delayNextStep(delay) {\n // negative delays are not yet supported\n if (delay > 0) {\n this.currentTimeline.delayNextStep(delay);\n }\n }\n invokeQuery(selector, originalSelector, limit, includeSelf, optional, errors) {\n let results = [];\n if (includeSelf) {\n results.push(this.element);\n }\n if (selector.length > 0) { // only if :self is used then the selector can be empty\n selector = selector.replace(ENTER_TOKEN_REGEX, '.' + this._enterClassName);\n selector = selector.replace(LEAVE_TOKEN_REGEX, '.' + this._leaveClassName);\n const multi = limit != 1;\n let elements = this._driver.query(this.element, selector, multi);\n if (limit !== 0) {\n elements = limit < 0 ? elements.slice(elements.length + limit, elements.length) :\n elements.slice(0, limit);\n }\n results.push(...elements);\n }\n if (!optional && results.length == 0) {\n errors.push(invalidQuery(originalSelector));\n }\n return results;\n }\n}\nclass TimelineBuilder {\n constructor(_driver, element, startTime, _elementTimelineStylesLookup) {\n this._driver = _driver;\n this.element = element;\n this.startTime = startTime;\n this._elementTimelineStylesLookup = _elementTimelineStylesLookup;\n this.duration = 0;\n this.easing = null;\n this._previousKeyframe = new Map();\n this._currentKeyframe = new Map();\n this._keyframes = new Map();\n this._styleSummary = new Map();\n this._localTimelineStyles = new Map();\n this._pendingStyles = new Map();\n this._backFill = new Map();\n this._currentEmptyStepKeyframe = null;\n if (!this._elementTimelineStylesLookup) {\n this._elementTimelineStylesLookup = new Map();\n }\n this._globalTimelineStyles = this._elementTimelineStylesLookup.get(element);\n if (!this._globalTimelineStyles) {\n this._globalTimelineStyles = this._localTimelineStyles;\n this._elementTimelineStylesLookup.set(element, this._localTimelineStyles);\n }\n this._loadKeyframe();\n }\n containsAnimation() {\n switch (this._keyframes.size) {\n case 0:\n return false;\n case 1:\n return this.hasCurrentStyleProperties();\n default:\n return true;\n }\n }\n hasCurrentStyleProperties() {\n return this._currentKeyframe.size > 0;\n }\n get currentTime() {\n return this.startTime + this.duration;\n }\n delayNextStep(delay) {\n // in the event that a style() step is placed right before a stagger()\n // and that style() step is the very first style() value in the animation\n // then we need to make a copy of the keyframe [0, copy, 1] so that the delay\n // properly applies the style() values to work with the stagger...\n const hasPreStyleStep = this._keyframes.size === 1 && this._pendingStyles.size;\n if (this.duration || hasPreStyleStep) {\n this.forwardTime(this.currentTime + delay);\n if (hasPreStyleStep) {\n this.snapshotCurrentStyles();\n }\n }\n else {\n this.startTime += delay;\n }\n }\n fork(element, currentTime) {\n this.applyStylesToKeyframe();\n return new TimelineBuilder(this._driver, element, currentTime || this.currentTime, this._elementTimelineStylesLookup);\n }\n _loadKeyframe() {\n if (this._currentKeyframe) {\n this._previousKeyframe = this._currentKeyframe;\n }\n this._currentKeyframe = this._keyframes.get(this.duration);\n if (!this._currentKeyframe) {\n this._currentKeyframe = new Map();\n this._keyframes.set(this.duration, this._currentKeyframe);\n }\n }\n forwardFrame() {\n this.duration += ONE_FRAME_IN_MILLISECONDS;\n this._loadKeyframe();\n }\n forwardTime(time) {\n this.applyStylesToKeyframe();\n this.duration = time;\n this._loadKeyframe();\n }\n _updateStyle(prop, value) {\n this._localTimelineStyles.set(prop, value);\n this._globalTimelineStyles.set(prop, value);\n this._styleSummary.set(prop, { time: this.currentTime, value });\n }\n allowOnlyTimelineStyles() {\n return this._currentEmptyStepKeyframe !== this._currentKeyframe;\n }\n applyEmptyStep(easing) {\n if (easing) {\n this._previousKeyframe.set('easing', easing);\n }\n // special case for animate(duration):\n // all missing styles are filled with a `*` value then\n // if any destination styles are filled in later on the same\n // keyframe then they will override the overridden styles\n // We use `_globalTimelineStyles` here because there may be\n // styles in previous keyframes that are not present in this timeline\n for (let [prop, value] of this._globalTimelineStyles) {\n this._backFill.set(prop, value || AUTO_STYLE);\n this._currentKeyframe.set(prop, AUTO_STYLE);\n }\n this._currentEmptyStepKeyframe = this._currentKeyframe;\n }\n setStyles(input, easing, errors, options) {\n if (easing) {\n this._previousKeyframe.set('easing', easing);\n }\n const params = (options && options.params) || {};\n const styles = flattenStyles(input, this._globalTimelineStyles);\n for (let [prop, value] of styles) {\n const val = interpolateParams(value, params, errors);\n this._pendingStyles.set(prop, val);\n if (!this._localTimelineStyles.has(prop)) {\n this._backFill.set(prop, this._globalTimelineStyles.get(prop) ?? AUTO_STYLE);\n }\n this._updateStyle(prop, val);\n }\n }\n applyStylesToKeyframe() {\n if (this._pendingStyles.size == 0)\n return;\n this._pendingStyles.forEach((val, prop) => {\n this._currentKeyframe.set(prop, val);\n });\n this._pendingStyles.clear();\n this._localTimelineStyles.forEach((val, prop) => {\n if (!this._currentKeyframe.has(prop)) {\n this._currentKeyframe.set(prop, val);\n }\n });\n }\n snapshotCurrentStyles() {\n for (let [prop, val] of this._localTimelineStyles) {\n this._pendingStyles.set(prop, val);\n this._updateStyle(prop, val);\n }\n }\n getFinalKeyframe() {\n return this._keyframes.get(this.duration);\n }\n get properties() {\n const properties = [];\n for (let prop in this._currentKeyframe) {\n properties.push(prop);\n }\n return properties;\n }\n mergeTimelineCollectedStyles(timeline) {\n timeline._styleSummary.forEach((details1, prop) => {\n const details0 = this._styleSummary.get(prop);\n if (!details0 || details1.time > details0.time) {\n this._updateStyle(prop, details1.value);\n }\n });\n }\n buildKeyframes() {\n this.applyStylesToKeyframe();\n const preStyleProps = new Set();\n const postStyleProps = new Set();\n const isEmpty = this._keyframes.size === 1 && this.duration === 0;\n let finalKeyframes = [];\n this._keyframes.forEach((keyframe, time) => {\n const finalKeyframe = copyStyles(keyframe, new Map(), this._backFill);\n finalKeyframe.forEach((value, prop) => {\n if (value === ɵPRE_STYLE) {\n preStyleProps.add(prop);\n }\n else if (value === AUTO_STYLE) {\n postStyleProps.add(prop);\n }\n });\n if (!isEmpty) {\n finalKeyframe.set('offset', time / this.duration);\n }\n finalKeyframes.push(finalKeyframe);\n });\n const preProps = preStyleProps.size ? iteratorToArray(preStyleProps.values()) : [];\n const postProps = postStyleProps.size ? iteratorToArray(postStyleProps.values()) : [];\n // special case for a 0-second animation (which is designed just to place styles onscreen)\n if (isEmpty) {\n const kf0 = finalKeyframes[0];\n const kf1 = new Map(kf0);\n kf0.set('offset', 0);\n kf1.set('offset', 1);\n finalKeyframes = [kf0, kf1];\n }\n return createTimelineInstruction(this.element, finalKeyframes, preProps, postProps, this.duration, this.startTime, this.easing, false);\n }\n}\nclass SubTimelineBuilder extends TimelineBuilder {\n constructor(driver, element, keyframes, preStyleProps, postStyleProps, timings, _stretchStartingKeyframe = false) {\n super(driver, element, timings.delay);\n this.keyframes = keyframes;\n this.preStyleProps = preStyleProps;\n this.postStyleProps = postStyleProps;\n this._stretchStartingKeyframe = _stretchStartingKeyframe;\n this.timings = { duration: timings.duration, delay: timings.delay, easing: timings.easing };\n }\n containsAnimation() {\n return this.keyframes.length > 1;\n }\n buildKeyframes() {\n let keyframes = this.keyframes;\n let { delay, duration, easing } = this.timings;\n if (this._stretchStartingKeyframe && delay) {\n const newKeyframes = [];\n const totalTime = duration + delay;\n const startingGap = delay / totalTime;\n // the original starting keyframe now starts once the delay is done\n const newFirstKeyframe = copyStyles(keyframes[0]);\n newFirstKeyframe.set('offset', 0);\n newKeyframes.push(newFirstKeyframe);\n const oldFirstKeyframe = copyStyles(keyframes[0]);\n oldFirstKeyframe.set('offset', roundOffset(startingGap));\n newKeyframes.push(oldFirstKeyframe);\n /*\n When the keyframe is stretched then it means that the delay before the animation\n starts is gone. Instead the first keyframe is placed at the start of the animation\n and it is then copied to where it starts when the original delay is over. This basically\n means nothing animates during that delay, but the styles are still rendered. For this\n to work the original offset values that exist in the original keyframes must be \"warped\"\n so that they can take the new keyframe + delay into account.\n \n delay=1000, duration=1000, keyframes = 0 .5 1\n \n turns into\n \n delay=0, duration=2000, keyframes = 0 .33 .66 1\n */\n // offsets between 1 ... n -1 are all warped by the keyframe stretch\n const limit = keyframes.length - 1;\n for (let i = 1; i <= limit; i++) {\n let kf = copyStyles(keyframes[i]);\n const oldOffset = kf.get('offset');\n const timeAtKeyframe = delay + oldOffset * duration;\n kf.set('offset', roundOffset(timeAtKeyframe / totalTime));\n newKeyframes.push(kf);\n }\n // the new starting keyframe should be added at the start\n duration = totalTime;\n delay = 0;\n easing = '';\n keyframes = newKeyframes;\n }\n return createTimelineInstruction(this.element, keyframes, this.preStyleProps, this.postStyleProps, duration, delay, easing, true);\n }\n}\nfunction roundOffset(offset, decimalPoints = 3) {\n const mult = Math.pow(10, decimalPoints - 1);\n return Math.round(offset * mult) / mult;\n}\nfunction flattenStyles(input, allStyles) {\n const styles = new Map();\n let allProperties;\n input.forEach(token => {\n if (token === '*') {\n allProperties = allProperties || allStyles.keys();\n for (let prop of allProperties) {\n styles.set(prop, AUTO_STYLE);\n }\n }\n else {\n copyStyles(token, styles);\n }\n });\n return styles;\n}\n\nclass Animation {\n constructor(_driver, input) {\n this._driver = _driver;\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(_driver, input, errors, warnings);\n if (errors.length) {\n throw validationFailed(errors);\n }\n if (warnings.length) {\n warnValidation(warnings);\n }\n this._animationAst = ast;\n }\n buildTimelines(element, startingStyles, destinationStyles, options, subInstructions) {\n const start = Array.isArray(startingStyles) ? normalizeStyles(startingStyles) :\n startingStyles;\n const dest = Array.isArray(destinationStyles) ? normalizeStyles(destinationStyles) :\n destinationStyles;\n const errors = [];\n subInstructions = subInstructions || new ElementInstructionMap();\n const result = buildAnimationTimelines(this._driver, element, this._animationAst, ENTER_CLASSNAME, LEAVE_CLASSNAME, start, dest, options, subInstructions, errors);\n if (errors.length) {\n throw buildingFailed(errors);\n }\n return result;\n }\n}\n\n/**\n * @publicApi\n */\nclass AnimationStyleNormalizer {\n}\n/**\n * @publicApi\n */\nclass NoopAnimationStyleNormalizer {\n normalizePropertyName(propertyName, errors) {\n return propertyName;\n }\n normalizeStyleValue(userProvidedProperty, normalizedProperty, value, errors) {\n return value;\n }\n}\n\nconst DIMENSIONAL_PROP_SET = new Set([\n 'width',\n 'height',\n 'minWidth',\n 'minHeight',\n 'maxWidth',\n 'maxHeight',\n 'left',\n 'top',\n 'bottom',\n 'right',\n 'fontSize',\n 'outlineWidth',\n 'outlineOffset',\n 'paddingTop',\n 'paddingLeft',\n 'paddingBottom',\n 'paddingRight',\n 'marginTop',\n 'marginLeft',\n 'marginBottom',\n 'marginRight',\n 'borderRadius',\n 'borderWidth',\n 'borderTopWidth',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderBottomWidth',\n 'textIndent',\n 'perspective'\n]);\nclass WebAnimationsStyleNormalizer extends AnimationStyleNormalizer {\n normalizePropertyName(propertyName, errors) {\n return dashCaseToCamelCase(propertyName);\n }\n normalizeStyleValue(userProvidedProperty, normalizedProperty, value, errors) {\n let unit = '';\n const strVal = value.toString().trim();\n if (DIMENSIONAL_PROP_SET.has(normalizedProperty) && value !== 0 && value !== '0') {\n if (typeof value === 'number') {\n unit = 'px';\n }\n else {\n const valAndSuffixMatch = value.match(/^[+-]?[\\d\\.]+([a-z]*)$/);\n if (valAndSuffixMatch && valAndSuffixMatch[1].length == 0) {\n errors.push(invalidCssUnitValue(userProvidedProperty, value));\n }\n }\n }\n return strVal + unit;\n }\n}\n\nfunction createTransitionInstruction(element, triggerName, fromState, toState, isRemovalTransition, fromStyles, toStyles, timelines, queriedElements, preStyleProps, postStyleProps, totalTime, errors) {\n return {\n type: 0 /* AnimationTransitionInstructionType.TransitionAnimation */,\n element,\n triggerName,\n isRemovalTransition,\n fromState,\n fromStyles,\n toState,\n toStyles,\n timelines,\n queriedElements,\n preStyleProps,\n postStyleProps,\n totalTime,\n errors\n };\n}\n\nconst EMPTY_OBJECT = {};\nclass AnimationTransitionFactory {\n constructor(_triggerName, ast, _stateStyles) {\n this._triggerName = _triggerName;\n this.ast = ast;\n this._stateStyles = _stateStyles;\n }\n match(currentState, nextState, element, params) {\n return oneOrMoreTransitionsMatch(this.ast.matchers, currentState, nextState, element, params);\n }\n buildStyles(stateName, params, errors) {\n let styler = this._stateStyles.get('*');\n if (stateName !== undefined) {\n styler = this._stateStyles.get(stateName?.toString()) || styler;\n }\n return styler ? styler.buildStyles(params, errors) : new Map();\n }\n build(driver, element, currentState, nextState, enterClassName, leaveClassName, currentOptions, nextOptions, subInstructions, skipAstBuild) {\n const errors = [];\n const transitionAnimationParams = this.ast.options && this.ast.options.params || EMPTY_OBJECT;\n const currentAnimationParams = currentOptions && currentOptions.params || EMPTY_OBJECT;\n const currentStateStyles = this.buildStyles(currentState, currentAnimationParams, errors);\n const nextAnimationParams = nextOptions && nextOptions.params || EMPTY_OBJECT;\n const nextStateStyles = this.buildStyles(nextState, nextAnimationParams, errors);\n const queriedElements = new Set();\n const preStyleMap = new Map();\n const postStyleMap = new Map();\n const isRemoval = nextState === 'void';\n const animationOptions = {\n params: applyParamDefaults(nextAnimationParams, transitionAnimationParams),\n delay: this.ast.options?.delay,\n };\n const timelines = skipAstBuild ?\n [] :\n buildAnimationTimelines(driver, element, this.ast.animation, enterClassName, leaveClassName, currentStateStyles, nextStateStyles, animationOptions, subInstructions, errors);\n let totalTime = 0;\n timelines.forEach(tl => {\n totalTime = Math.max(tl.duration + tl.delay, totalTime);\n });\n if (errors.length) {\n return createTransitionInstruction(element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles, nextStateStyles, [], [], preStyleMap, postStyleMap, totalTime, errors);\n }\n timelines.forEach(tl => {\n const elm = tl.element;\n const preProps = getOrSetDefaultValue(preStyleMap, elm, new Set());\n tl.preStyleProps.forEach(prop => preProps.add(prop));\n const postProps = getOrSetDefaultValue(postStyleMap, elm, new Set());\n tl.postStyleProps.forEach(prop => postProps.add(prop));\n if (elm !== element) {\n queriedElements.add(elm);\n }\n });\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n checkNonAnimatableInTimelines(timelines, this._triggerName, driver);\n }\n const queriedElementsList = iteratorToArray(queriedElements.values());\n return createTransitionInstruction(element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles, nextStateStyles, timelines, queriedElementsList, preStyleMap, postStyleMap, totalTime);\n }\n}\n/**\n * Checks inside a set of timelines if they try to animate a css property which is not considered\n * animatable, in that case it prints a warning on the console.\n * Besides that the function doesn't have any other effect.\n *\n * Note: this check is done here after the timelines are built instead of doing on a lower level so\n * that we can make sure that the warning appears only once per instruction (we can aggregate here\n * all the issues instead of finding them separately).\n *\n * @param timelines The built timelines for the current instruction.\n * @param triggerName The name of the trigger for the current instruction.\n * @param driver Animation driver used to perform the check.\n *\n */\nfunction checkNonAnimatableInTimelines(timelines, triggerName, driver) {\n if (!driver.validateAnimatableStyleProperty) {\n return;\n }\n const allowedNonAnimatableProps = new Set([\n // 'easing' is a utility/synthetic prop we use to represent\n // easing functions, it represents a property of the animation\n // which is not animatable but different values can be used\n // in different steps\n 'easing'\n ]);\n const invalidNonAnimatableProps = new Set();\n timelines.forEach(({ keyframes }) => {\n const nonAnimatablePropsInitialValues = new Map();\n keyframes.forEach(keyframe => {\n const entriesToCheck = Array.from(keyframe.entries()).filter(([prop]) => !allowedNonAnimatableProps.has(prop));\n for (const [prop, value] of entriesToCheck) {\n if (!driver.validateAnimatableStyleProperty(prop)) {\n if (nonAnimatablePropsInitialValues.has(prop) && !invalidNonAnimatableProps.has(prop)) {\n const propInitialValue = nonAnimatablePropsInitialValues.get(prop);\n if (propInitialValue !== value) {\n invalidNonAnimatableProps.add(prop);\n }\n }\n else {\n nonAnimatablePropsInitialValues.set(prop, value);\n }\n }\n }\n });\n });\n if (invalidNonAnimatableProps.size > 0) {\n console.warn(`Warning: The animation trigger \"${triggerName}\" is attempting to animate the following` +\n ' not animatable properties: ' + Array.from(invalidNonAnimatableProps).join(', ') + '\\n' +\n '(to check the list of all animatable properties visit https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties)');\n }\n}\nfunction oneOrMoreTransitionsMatch(matchFns, currentState, nextState, element, params) {\n return matchFns.some(fn => fn(currentState, nextState, element, params));\n}\nfunction applyParamDefaults(userParams, defaults) {\n const result = copyObj(defaults);\n for (const key in userParams) {\n if (userParams.hasOwnProperty(key) && userParams[key] != null) {\n result[key] = userParams[key];\n }\n }\n return result;\n}\nclass AnimationStateStyles {\n constructor(styles, defaultParams, normalizer) {\n this.styles = styles;\n this.defaultParams = defaultParams;\n this.normalizer = normalizer;\n }\n buildStyles(params, errors) {\n const finalStyles = new Map();\n const combinedParams = copyObj(this.defaultParams);\n Object.keys(params).forEach(key => {\n const value = params[key];\n if (value !== null) {\n combinedParams[key] = value;\n }\n });\n this.styles.styles.forEach(value => {\n if (typeof value !== 'string') {\n value.forEach((val, prop) => {\n if (val) {\n val = interpolateParams(val, combinedParams, errors);\n }\n const normalizedProp = this.normalizer.normalizePropertyName(prop, errors);\n val = this.normalizer.normalizeStyleValue(prop, normalizedProp, val, errors);\n finalStyles.set(prop, val);\n });\n }\n });\n return finalStyles;\n }\n}\n\nfunction buildTrigger(name, ast, normalizer) {\n return new AnimationTrigger(name, ast, normalizer);\n}\nclass AnimationTrigger {\n constructor(name, ast, _normalizer) {\n this.name = name;\n this.ast = ast;\n this._normalizer = _normalizer;\n this.transitionFactories = [];\n this.states = new Map();\n ast.states.forEach(ast => {\n const defaultParams = (ast.options && ast.options.params) || {};\n this.states.set(ast.name, new AnimationStateStyles(ast.style, defaultParams, _normalizer));\n });\n balanceProperties(this.states, 'true', '1');\n balanceProperties(this.states, 'false', '0');\n ast.transitions.forEach(ast => {\n this.transitionFactories.push(new AnimationTransitionFactory(name, ast, this.states));\n });\n this.fallbackTransition = createFallbackTransition(name, this.states, this._normalizer);\n }\n get containsQueries() {\n return this.ast.queryCount > 0;\n }\n matchTransition(currentState, nextState, element, params) {\n const entry = this.transitionFactories.find(f => f.match(currentState, nextState, element, params));\n return entry || null;\n }\n matchStyles(currentState, params, errors) {\n return this.fallbackTransition.buildStyles(currentState, params, errors);\n }\n}\nfunction createFallbackTransition(triggerName, states, normalizer) {\n const matchers = [(fromState, toState) => true];\n const animation = { type: 2 /* AnimationMetadataType.Sequence */, steps: [], options: null };\n const transition = {\n type: 1 /* AnimationMetadataType.Transition */,\n animation,\n matchers,\n options: null,\n queryCount: 0,\n depCount: 0\n };\n return new AnimationTransitionFactory(triggerName, transition, states);\n}\nfunction balanceProperties(stateMap, key1, key2) {\n if (stateMap.has(key1)) {\n if (!stateMap.has(key2)) {\n stateMap.set(key2, stateMap.get(key1));\n }\n }\n else if (stateMap.has(key2)) {\n stateMap.set(key1, stateMap.get(key2));\n }\n}\n\nconst EMPTY_INSTRUCTION_MAP = new ElementInstructionMap();\nclass TimelineAnimationEngine {\n constructor(bodyNode, _driver, _normalizer) {\n this.bodyNode = bodyNode;\n this._driver = _driver;\n this._normalizer = _normalizer;\n this._animations = new Map();\n this._playersById = new Map();\n this.players = [];\n }\n register(id, metadata) {\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(this._driver, metadata, errors, warnings);\n if (errors.length) {\n throw registerFailed(errors);\n }\n else {\n if (warnings.length) {\n warnRegister(warnings);\n }\n this._animations.set(id, ast);\n }\n }\n _buildPlayer(i, preStyles, postStyles) {\n const element = i.element;\n const keyframes = normalizeKeyframes$1(this._normalizer, i.keyframes, preStyles, postStyles);\n return this._driver.animate(element, keyframes, i.duration, i.delay, i.easing, [], true);\n }\n create(id, element, options = {}) {\n const errors = [];\n const ast = this._animations.get(id);\n let instructions;\n const autoStylesMap = new Map();\n if (ast) {\n instructions = buildAnimationTimelines(this._driver, element, ast, ENTER_CLASSNAME, LEAVE_CLASSNAME, new Map(), new Map(), options, EMPTY_INSTRUCTION_MAP, errors);\n instructions.forEach(inst => {\n const styles = getOrSetDefaultValue(autoStylesMap, inst.element, new Map());\n inst.postStyleProps.forEach(prop => styles.set(prop, null));\n });\n }\n else {\n errors.push(missingOrDestroyedAnimation());\n instructions = [];\n }\n if (errors.length) {\n throw createAnimationFailed(errors);\n }\n autoStylesMap.forEach((styles, element) => {\n styles.forEach((_, prop) => {\n styles.set(prop, this._driver.computeStyle(element, prop, AUTO_STYLE));\n });\n });\n const players = instructions.map(i => {\n const styles = autoStylesMap.get(i.element);\n return this._buildPlayer(i, new Map(), styles);\n });\n const player = optimizeGroupPlayer(players);\n this._playersById.set(id, player);\n player.onDestroy(() => this.destroy(id));\n this.players.push(player);\n return player;\n }\n destroy(id) {\n const player = this._getPlayer(id);\n player.destroy();\n this._playersById.delete(id);\n const index = this.players.indexOf(player);\n if (index >= 0) {\n this.players.splice(index, 1);\n }\n }\n _getPlayer(id) {\n const player = this._playersById.get(id);\n if (!player) {\n throw missingPlayer(id);\n }\n return player;\n }\n listen(id, element, eventName, callback) {\n // triggerName, fromState, toState are all ignored for timeline animations\n const baseEvent = makeAnimationEvent(element, '', '', '');\n listenOnPlayer(this._getPlayer(id), eventName, baseEvent, callback);\n return () => { };\n }\n command(id, element, command, args) {\n if (command == 'register') {\n this.register(id, args[0]);\n return;\n }\n if (command == 'create') {\n const options = (args[0] || {});\n this.create(id, element, options);\n return;\n }\n const player = this._getPlayer(id);\n switch (command) {\n case 'play':\n player.play();\n break;\n case 'pause':\n player.pause();\n break;\n case 'reset':\n player.reset();\n break;\n case 'restart':\n player.restart();\n break;\n case 'finish':\n player.finish();\n break;\n case 'init':\n player.init();\n break;\n case 'setPosition':\n player.setPosition(parseFloat(args[0]));\n break;\n case 'destroy':\n this.destroy(id);\n break;\n }\n }\n}\n\nconst QUEUED_CLASSNAME = 'ng-animate-queued';\nconst QUEUED_SELECTOR = '.ng-animate-queued';\nconst DISABLED_CLASSNAME = 'ng-animate-disabled';\nconst DISABLED_SELECTOR = '.ng-animate-disabled';\nconst STAR_CLASSNAME = 'ng-star-inserted';\nconst STAR_SELECTOR = '.ng-star-inserted';\nconst EMPTY_PLAYER_ARRAY = [];\nconst NULL_REMOVAL_STATE = {\n namespaceId: '',\n setForRemoval: false,\n setForMove: false,\n hasAnimation: false,\n removedBeforeQueried: false\n};\nconst NULL_REMOVED_QUERIED_STATE = {\n namespaceId: '',\n setForMove: false,\n setForRemoval: false,\n hasAnimation: false,\n removedBeforeQueried: true\n};\nconst REMOVAL_FLAG = '__ng_removed';\nclass StateValue {\n get params() {\n return this.options.params;\n }\n constructor(input, namespaceId = '') {\n this.namespaceId = namespaceId;\n const isObj = input && input.hasOwnProperty('value');\n const value = isObj ? input['value'] : input;\n this.value = normalizeTriggerValue(value);\n if (isObj) {\n const options = copyObj(input);\n delete options['value'];\n this.options = options;\n }\n else {\n this.options = {};\n }\n if (!this.options.params) {\n this.options.params = {};\n }\n }\n absorbOptions(options) {\n const newParams = options.params;\n if (newParams) {\n const oldParams = this.options.params;\n Object.keys(newParams).forEach(prop => {\n if (oldParams[prop] == null) {\n oldParams[prop] = newParams[prop];\n }\n });\n }\n }\n}\nconst VOID_VALUE = 'void';\nconst DEFAULT_STATE_VALUE = new StateValue(VOID_VALUE);\nclass AnimationTransitionNamespace {\n constructor(id, hostElement, _engine) {\n this.id = id;\n this.hostElement = hostElement;\n this._engine = _engine;\n this.players = [];\n this._triggers = new Map();\n this._queue = [];\n this._elementListeners = new Map();\n this._hostClassName = 'ng-tns-' + id;\n addClass(hostElement, this._hostClassName);\n }\n listen(element, name, phase, callback) {\n if (!this._triggers.has(name)) {\n throw missingTrigger(phase, name);\n }\n if (phase == null || phase.length == 0) {\n throw missingEvent(name);\n }\n if (!isTriggerEventValid(phase)) {\n throw unsupportedTriggerEvent(phase, name);\n }\n const listeners = getOrSetDefaultValue(this._elementListeners, element, []);\n const data = { name, phase, callback };\n listeners.push(data);\n const triggersWithStates = getOrSetDefaultValue(this._engine.statesByElement, element, new Map());\n if (!triggersWithStates.has(name)) {\n addClass(element, NG_TRIGGER_CLASSNAME);\n addClass(element, NG_TRIGGER_CLASSNAME + '-' + name);\n triggersWithStates.set(name, DEFAULT_STATE_VALUE);\n }\n return () => {\n // the event listener is removed AFTER the flush has occurred such\n // that leave animations callbacks can fire (otherwise if the node\n // is removed in between then the listeners would be deregistered)\n this._engine.afterFlush(() => {\n const index = listeners.indexOf(data);\n if (index >= 0) {\n listeners.splice(index, 1);\n }\n if (!this._triggers.has(name)) {\n triggersWithStates.delete(name);\n }\n });\n };\n }\n register(name, ast) {\n if (this._triggers.has(name)) {\n // throw\n return false;\n }\n else {\n this._triggers.set(name, ast);\n return true;\n }\n }\n _getTrigger(name) {\n const trigger = this._triggers.get(name);\n if (!trigger) {\n throw unregisteredTrigger(name);\n }\n return trigger;\n }\n trigger(element, triggerName, value, defaultToFallback = true) {\n const trigger = this._getTrigger(triggerName);\n const player = new TransitionAnimationPlayer(this.id, triggerName, element);\n let triggersWithStates = this._engine.statesByElement.get(element);\n if (!triggersWithStates) {\n addClass(element, NG_TRIGGER_CLASSNAME);\n addClass(element, NG_TRIGGER_CLASSNAME + '-' + triggerName);\n this._engine.statesByElement.set(element, triggersWithStates = new Map());\n }\n let fromState = triggersWithStates.get(triggerName);\n const toState = new StateValue(value, this.id);\n const isObj = value && value.hasOwnProperty('value');\n if (!isObj && fromState) {\n toState.absorbOptions(fromState.options);\n }\n triggersWithStates.set(triggerName, toState);\n if (!fromState) {\n fromState = DEFAULT_STATE_VALUE;\n }\n const isRemoval = toState.value === VOID_VALUE;\n // normally this isn't reached by here, however, if an object expression\n // is passed in then it may be a new object each time. Comparing the value\n // is important since that will stay the same despite there being a new object.\n // The removal arc here is special cased because the same element is triggered\n // twice in the event that it contains animations on the outer/inner portions\n // of the host container\n if (!isRemoval && fromState.value === toState.value) {\n // this means that despite the value not changing, some inner params\n // have changed which means that the animation final styles need to be applied\n if (!objEquals(fromState.params, toState.params)) {\n const errors = [];\n const fromStyles = trigger.matchStyles(fromState.value, fromState.params, errors);\n const toStyles = trigger.matchStyles(toState.value, toState.params, errors);\n if (errors.length) {\n this._engine.reportError(errors);\n }\n else {\n this._engine.afterFlush(() => {\n eraseStyles(element, fromStyles);\n setStyles(element, toStyles);\n });\n }\n }\n return;\n }\n const playersOnElement = getOrSetDefaultValue(this._engine.playersByElement, element, []);\n playersOnElement.forEach(player => {\n // only remove the player if it is queued on the EXACT same trigger/namespace\n // we only also deal with queued players here because if the animation has\n // started then we want to keep the player alive until the flush happens\n // (which is where the previousPlayers are passed into the new player)\n if (player.namespaceId == this.id && player.triggerName == triggerName && player.queued) {\n player.destroy();\n }\n });\n let transition = trigger.matchTransition(fromState.value, toState.value, element, toState.params);\n let isFallbackTransition = false;\n if (!transition) {\n if (!defaultToFallback)\n return;\n transition = trigger.fallbackTransition;\n isFallbackTransition = true;\n }\n this._engine.totalQueuedPlayers++;\n this._queue.push({ element, triggerName, transition, fromState, toState, player, isFallbackTransition });\n if (!isFallbackTransition) {\n addClass(element, QUEUED_CLASSNAME);\n player.onStart(() => {\n removeClass(element, QUEUED_CLASSNAME);\n });\n }\n player.onDone(() => {\n let index = this.players.indexOf(player);\n if (index >= 0) {\n this.players.splice(index, 1);\n }\n const players = this._engine.playersByElement.get(element);\n if (players) {\n let index = players.indexOf(player);\n if (index >= 0) {\n players.splice(index, 1);\n }\n }\n });\n this.players.push(player);\n playersOnElement.push(player);\n return player;\n }\n deregister(name) {\n this._triggers.delete(name);\n this._engine.statesByElement.forEach(stateMap => stateMap.delete(name));\n this._elementListeners.forEach((listeners, element) => {\n this._elementListeners.set(element, listeners.filter(entry => {\n return entry.name != name;\n }));\n });\n }\n clearElementCache(element) {\n this._engine.statesByElement.delete(element);\n this._elementListeners.delete(element);\n const elementPlayers = this._engine.playersByElement.get(element);\n if (elementPlayers) {\n elementPlayers.forEach(player => player.destroy());\n this._engine.playersByElement.delete(element);\n }\n }\n _signalRemovalForInnerTriggers(rootElement, context) {\n const elements = this._engine.driver.query(rootElement, NG_TRIGGER_SELECTOR, true);\n // emulate a leave animation for all inner nodes within this node.\n // If there are no animations found for any of the nodes then clear the cache\n // for the element.\n elements.forEach(elm => {\n // this means that an inner remove() operation has already kicked off\n // the animation on this element...\n if (elm[REMOVAL_FLAG])\n return;\n const namespaces = this._engine.fetchNamespacesByElement(elm);\n if (namespaces.size) {\n namespaces.forEach(ns => ns.triggerLeaveAnimation(elm, context, false, true));\n }\n else {\n this.clearElementCache(elm);\n }\n });\n // If the child elements were removed along with the parent, their animations might not\n // have completed. Clear all the elements from the cache so we don't end up with a memory leak.\n this._engine.afterFlushAnimationsDone(() => elements.forEach(elm => this.clearElementCache(elm)));\n }\n triggerLeaveAnimation(element, context, destroyAfterComplete, defaultToFallback) {\n const triggerStates = this._engine.statesByElement.get(element);\n const previousTriggersValues = new Map();\n if (triggerStates) {\n const players = [];\n triggerStates.forEach((state, triggerName) => {\n previousTriggersValues.set(triggerName, state.value);\n // this check is here in the event that an element is removed\n // twice (both on the host level and the component level)\n if (this._triggers.has(triggerName)) {\n const player = this.trigger(element, triggerName, VOID_VALUE, defaultToFallback);\n if (player) {\n players.push(player);\n }\n }\n });\n if (players.length) {\n this._engine.markElementAsRemoved(this.id, element, true, context, previousTriggersValues);\n if (destroyAfterComplete) {\n optimizeGroupPlayer(players).onDone(() => this._engine.processLeaveNode(element));\n }\n return true;\n }\n }\n return false;\n }\n prepareLeaveAnimationListeners(element) {\n const listeners = this._elementListeners.get(element);\n const elementStates = this._engine.statesByElement.get(element);\n // if this statement fails then it means that the element was picked up\n // by an earlier flush (or there are no listeners at all to track the leave).\n if (listeners && elementStates) {\n const visitedTriggers = new Set();\n listeners.forEach(listener => {\n const triggerName = listener.name;\n if (visitedTriggers.has(triggerName))\n return;\n visitedTriggers.add(triggerName);\n const trigger = this._triggers.get(triggerName);\n const transition = trigger.fallbackTransition;\n const fromState = elementStates.get(triggerName) || DEFAULT_STATE_VALUE;\n const toState = new StateValue(VOID_VALUE);\n const player = new TransitionAnimationPlayer(this.id, triggerName, element);\n this._engine.totalQueuedPlayers++;\n this._queue.push({\n element,\n triggerName,\n transition,\n fromState,\n toState,\n player,\n isFallbackTransition: true\n });\n });\n }\n }\n removeNode(element, context) {\n const engine = this._engine;\n if (element.childElementCount) {\n this._signalRemovalForInnerTriggers(element, context);\n }\n // this means that a * => VOID animation was detected and kicked off\n if (this.triggerLeaveAnimation(element, context, true))\n return;\n // find the player that is animating and make sure that the\n // removal is delayed until that player has completed\n let containsPotentialParentTransition = false;\n if (engine.totalAnimations) {\n const currentPlayers = engine.players.length ? engine.playersByQueriedElement.get(element) : [];\n // when this `if statement` does not continue forward it means that\n // a previous animation query has selected the current element and\n // is animating it. In this situation want to continue forwards and\n // allow the element to be queued up for animation later.\n if (currentPlayers && currentPlayers.length) {\n containsPotentialParentTransition = true;\n }\n else {\n let parent = element;\n while (parent = parent.parentNode) {\n const triggers = engine.statesByElement.get(parent);\n if (triggers) {\n containsPotentialParentTransition = true;\n break;\n }\n }\n }\n }\n // at this stage we know that the element will either get removed\n // during flush or will be picked up by a parent query. Either way\n // we need to fire the listeners for this element when it DOES get\n // removed (once the query parent animation is done or after flush)\n this.prepareLeaveAnimationListeners(element);\n // whether or not a parent has an animation we need to delay the deferral of the leave\n // operation until we have more information (which we do after flush() has been called)\n if (containsPotentialParentTransition) {\n engine.markElementAsRemoved(this.id, element, false, context);\n }\n else {\n const removalFlag = element[REMOVAL_FLAG];\n if (!removalFlag || removalFlag === NULL_REMOVAL_STATE) {\n // we do this after the flush has occurred such\n // that the callbacks can be fired\n engine.afterFlush(() => this.clearElementCache(element));\n engine.destroyInnerAnimations(element);\n engine._onRemovalComplete(element, context);\n }\n }\n }\n insertNode(element, parent) {\n addClass(element, this._hostClassName);\n }\n drainQueuedTransitions(microtaskId) {\n const instructions = [];\n this._queue.forEach(entry => {\n const player = entry.player;\n if (player.destroyed)\n return;\n const element = entry.element;\n const listeners = this._elementListeners.get(element);\n if (listeners) {\n listeners.forEach((listener) => {\n if (listener.name == entry.triggerName) {\n const baseEvent = makeAnimationEvent(element, entry.triggerName, entry.fromState.value, entry.toState.value);\n baseEvent['_data'] = microtaskId;\n listenOnPlayer(entry.player, listener.phase, baseEvent, listener.callback);\n }\n });\n }\n if (player.markedForDestroy) {\n this._engine.afterFlush(() => {\n // now we can destroy the element properly since the event listeners have\n // been bound to the player\n player.destroy();\n });\n }\n else {\n instructions.push(entry);\n }\n });\n this._queue = [];\n return instructions.sort((a, b) => {\n // if depCount == 0 them move to front\n // otherwise if a contains b then move back\n const d0 = a.transition.ast.depCount;\n const d1 = b.transition.ast.depCount;\n if (d0 == 0 || d1 == 0) {\n return d0 - d1;\n }\n return this._engine.driver.containsElement(a.element, b.element) ? 1 : -1;\n });\n }\n destroy(context) {\n this.players.forEach(p => p.destroy());\n this._signalRemovalForInnerTriggers(this.hostElement, context);\n }\n}\nclass TransitionAnimationEngine {\n /** @internal */\n _onRemovalComplete(element, context) {\n this.onRemovalComplete(element, context);\n }\n constructor(bodyNode, driver, _normalizer) {\n this.bodyNode = bodyNode;\n this.driver = driver;\n this._normalizer = _normalizer;\n this.players = [];\n this.newHostElements = new Map();\n this.playersByElement = new Map();\n this.playersByQueriedElement = new Map();\n this.statesByElement = new Map();\n this.disabledNodes = new Set();\n this.totalAnimations = 0;\n this.totalQueuedPlayers = 0;\n this._namespaceLookup = {};\n this._namespaceList = [];\n this._flushFns = [];\n this._whenQuietFns = [];\n this.namespacesByHostElement = new Map();\n this.collectedEnterElements = [];\n this.collectedLeaveElements = [];\n // this method is designed to be overridden by the code that uses this engine\n this.onRemovalComplete = (element, context) => { };\n }\n get queuedPlayers() {\n const players = [];\n this._namespaceList.forEach(ns => {\n ns.players.forEach(player => {\n if (player.queued) {\n players.push(player);\n }\n });\n });\n return players;\n }\n createNamespace(namespaceId, hostElement) {\n const ns = new AnimationTransitionNamespace(namespaceId, hostElement, this);\n if (this.bodyNode && this.driver.containsElement(this.bodyNode, hostElement)) {\n this._balanceNamespaceList(ns, hostElement);\n }\n else {\n // defer this later until flush during when the host element has\n // been inserted so that we know exactly where to place it in\n // the namespace list\n this.newHostElements.set(hostElement, ns);\n // given that this host element is a part of the animation code, it\n // may or may not be inserted by a parent node that is of an\n // animation renderer type. If this happens then we can still have\n // access to this item when we query for :enter nodes. If the parent\n // is a renderer then the set data-structure will normalize the entry\n this.collectEnterElement(hostElement);\n }\n return this._namespaceLookup[namespaceId] = ns;\n }\n _balanceNamespaceList(ns, hostElement) {\n const namespaceList = this._namespaceList;\n const namespacesByHostElement = this.namespacesByHostElement;\n const limit = namespaceList.length - 1;\n if (limit >= 0) {\n let found = false;\n // Find the closest ancestor with an existing namespace so we can then insert `ns` after it,\n // establishing a top-down ordering of namespaces in `this._namespaceList`.\n let ancestor = this.driver.getParentElement(hostElement);\n while (ancestor) {\n const ancestorNs = namespacesByHostElement.get(ancestor);\n if (ancestorNs) {\n // An animation namespace has been registered for this ancestor, so we insert `ns`\n // right after it to establish top-down ordering of animation namespaces.\n const index = namespaceList.indexOf(ancestorNs);\n namespaceList.splice(index + 1, 0, ns);\n found = true;\n break;\n }\n ancestor = this.driver.getParentElement(ancestor);\n }\n if (!found) {\n // No namespace exists that is an ancestor of `ns`, so `ns` is inserted at the front to\n // ensure that any existing descendants are ordered after `ns`, retaining the desired\n // top-down ordering.\n namespaceList.unshift(ns);\n }\n }\n else {\n namespaceList.push(ns);\n }\n namespacesByHostElement.set(hostElement, ns);\n return ns;\n }\n register(namespaceId, hostElement) {\n let ns = this._namespaceLookup[namespaceId];\n if (!ns) {\n ns = this.createNamespace(namespaceId, hostElement);\n }\n return ns;\n }\n registerTrigger(namespaceId, name, trigger) {\n let ns = this._namespaceLookup[namespaceId];\n if (ns && ns.register(name, trigger)) {\n this.totalAnimations++;\n }\n }\n destroy(namespaceId, context) {\n if (!namespaceId)\n return;\n this.afterFlush(() => { });\n this.afterFlushAnimationsDone(() => {\n const ns = this._fetchNamespace(namespaceId);\n this.namespacesByHostElement.delete(ns.hostElement);\n const index = this._namespaceList.indexOf(ns);\n if (index >= 0) {\n this._namespaceList.splice(index, 1);\n }\n ns.destroy(context);\n delete this._namespaceLookup[namespaceId];\n });\n }\n _fetchNamespace(id) {\n return this._namespaceLookup[id];\n }\n fetchNamespacesByElement(element) {\n // normally there should only be one namespace per element, however\n // if @triggers are placed on both the component element and then\n // its host element (within the component code) then there will be\n // two namespaces returned. We use a set here to simply deduplicate\n // the namespaces in case (for the reason described above) there are multiple triggers\n const namespaces = new Set();\n const elementStates = this.statesByElement.get(element);\n if (elementStates) {\n for (let stateValue of elementStates.values()) {\n if (stateValue.namespaceId) {\n const ns = this._fetchNamespace(stateValue.namespaceId);\n if (ns) {\n namespaces.add(ns);\n }\n }\n }\n }\n return namespaces;\n }\n trigger(namespaceId, element, name, value) {\n if (isElementNode(element)) {\n const ns = this._fetchNamespace(namespaceId);\n if (ns) {\n ns.trigger(element, name, value);\n return true;\n }\n }\n return false;\n }\n insertNode(namespaceId, element, parent, insertBefore) {\n if (!isElementNode(element))\n return;\n // special case for when an element is removed and reinserted (move operation)\n // when this occurs we do not want to use the element for deletion later\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n details.setForRemoval = false;\n details.setForMove = true;\n const index = this.collectedLeaveElements.indexOf(element);\n if (index >= 0) {\n this.collectedLeaveElements.splice(index, 1);\n }\n }\n // in the event that the namespaceId is blank then the caller\n // code does not contain any animation code in it, but it is\n // just being called so that the node is marked as being inserted\n if (namespaceId) {\n const ns = this._fetchNamespace(namespaceId);\n // This if-statement is a workaround for router issue #21947.\n // The router sometimes hits a race condition where while a route\n // is being instantiated a new navigation arrives, triggering leave\n // animation of DOM that has not been fully initialized, until this\n // is resolved, we need to handle the scenario when DOM is not in a\n // consistent state during the animation.\n if (ns) {\n ns.insertNode(element, parent);\n }\n }\n // only *directives and host elements are inserted before\n if (insertBefore) {\n this.collectEnterElement(element);\n }\n }\n collectEnterElement(element) {\n this.collectedEnterElements.push(element);\n }\n markElementAsDisabled(element, value) {\n if (value) {\n if (!this.disabledNodes.has(element)) {\n this.disabledNodes.add(element);\n addClass(element, DISABLED_CLASSNAME);\n }\n }\n else if (this.disabledNodes.has(element)) {\n this.disabledNodes.delete(element);\n removeClass(element, DISABLED_CLASSNAME);\n }\n }\n removeNode(namespaceId, element, context) {\n if (isElementNode(element)) {\n const ns = namespaceId ? this._fetchNamespace(namespaceId) : null;\n if (ns) {\n ns.removeNode(element, context);\n }\n else {\n this.markElementAsRemoved(namespaceId, element, false, context);\n }\n const hostNS = this.namespacesByHostElement.get(element);\n if (hostNS && hostNS.id !== namespaceId) {\n hostNS.removeNode(element, context);\n }\n }\n else {\n this._onRemovalComplete(element, context);\n }\n }\n markElementAsRemoved(namespaceId, element, hasAnimation, context, previousTriggersValues) {\n this.collectedLeaveElements.push(element);\n element[REMOVAL_FLAG] = {\n namespaceId,\n setForRemoval: context,\n hasAnimation,\n removedBeforeQueried: false,\n previousTriggersValues\n };\n }\n listen(namespaceId, element, name, phase, callback) {\n if (isElementNode(element)) {\n return this._fetchNamespace(namespaceId).listen(element, name, phase, callback);\n }\n return () => { };\n }\n _buildInstruction(entry, subTimelines, enterClassName, leaveClassName, skipBuildAst) {\n return entry.transition.build(this.driver, entry.element, entry.fromState.value, entry.toState.value, enterClassName, leaveClassName, entry.fromState.options, entry.toState.options, subTimelines, skipBuildAst);\n }\n destroyInnerAnimations(containerElement) {\n let elements = this.driver.query(containerElement, NG_TRIGGER_SELECTOR, true);\n elements.forEach(element => this.destroyActiveAnimationsForElement(element));\n if (this.playersByQueriedElement.size == 0)\n return;\n elements = this.driver.query(containerElement, NG_ANIMATING_SELECTOR, true);\n elements.forEach(element => this.finishActiveQueriedAnimationOnElement(element));\n }\n destroyActiveAnimationsForElement(element) {\n const players = this.playersByElement.get(element);\n if (players) {\n players.forEach(player => {\n // special case for when an element is set for destruction, but hasn't started.\n // in this situation we want to delay the destruction until the flush occurs\n // so that any event listeners attached to the player are triggered.\n if (player.queued) {\n player.markedForDestroy = true;\n }\n else {\n player.destroy();\n }\n });\n }\n }\n finishActiveQueriedAnimationOnElement(element) {\n const players = this.playersByQueriedElement.get(element);\n if (players) {\n players.forEach(player => player.finish());\n }\n }\n whenRenderingDone() {\n return new Promise(resolve => {\n if (this.players.length) {\n return optimizeGroupPlayer(this.players).onDone(() => resolve());\n }\n else {\n resolve();\n }\n });\n }\n processLeaveNode(element) {\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n // this will prevent it from removing it twice\n element[REMOVAL_FLAG] = NULL_REMOVAL_STATE;\n if (details.namespaceId) {\n this.destroyInnerAnimations(element);\n const ns = this._fetchNamespace(details.namespaceId);\n if (ns) {\n ns.clearElementCache(element);\n }\n }\n this._onRemovalComplete(element, details.setForRemoval);\n }\n if (element.classList?.contains(DISABLED_CLASSNAME)) {\n this.markElementAsDisabled(element, false);\n }\n this.driver.query(element, DISABLED_SELECTOR, true).forEach(node => {\n this.markElementAsDisabled(node, false);\n });\n }\n flush(microtaskId = -1) {\n let players = [];\n if (this.newHostElements.size) {\n this.newHostElements.forEach((ns, element) => this._balanceNamespaceList(ns, element));\n this.newHostElements.clear();\n }\n if (this.totalAnimations && this.collectedEnterElements.length) {\n for (let i = 0; i < this.collectedEnterElements.length; i++) {\n const elm = this.collectedEnterElements[i];\n addClass(elm, STAR_CLASSNAME);\n }\n }\n if (this._namespaceList.length &&\n (this.totalQueuedPlayers || this.collectedLeaveElements.length)) {\n const cleanupFns = [];\n try {\n players = this._flushAnimations(cleanupFns, microtaskId);\n }\n finally {\n for (let i = 0; i < cleanupFns.length; i++) {\n cleanupFns[i]();\n }\n }\n }\n else {\n for (let i = 0; i < this.collectedLeaveElements.length; i++) {\n const element = this.collectedLeaveElements[i];\n this.processLeaveNode(element);\n }\n }\n this.totalQueuedPlayers = 0;\n this.collectedEnterElements.length = 0;\n this.collectedLeaveElements.length = 0;\n this._flushFns.forEach(fn => fn());\n this._flushFns = [];\n if (this._whenQuietFns.length) {\n // we move these over to a variable so that\n // if any new callbacks are registered in another\n // flush they do not populate the existing set\n const quietFns = this._whenQuietFns;\n this._whenQuietFns = [];\n if (players.length) {\n optimizeGroupPlayer(players).onDone(() => {\n quietFns.forEach(fn => fn());\n });\n }\n else {\n quietFns.forEach(fn => fn());\n }\n }\n }\n reportError(errors) {\n throw triggerTransitionsFailed(errors);\n }\n _flushAnimations(cleanupFns, microtaskId) {\n const subTimelines = new ElementInstructionMap();\n const skippedPlayers = [];\n const skippedPlayersMap = new Map();\n const queuedInstructions = [];\n const queriedElements = new Map();\n const allPreStyleElements = new Map();\n const allPostStyleElements = new Map();\n const disabledElementsSet = new Set();\n this.disabledNodes.forEach(node => {\n disabledElementsSet.add(node);\n const nodesThatAreDisabled = this.driver.query(node, QUEUED_SELECTOR, true);\n for (let i = 0; i < nodesThatAreDisabled.length; i++) {\n disabledElementsSet.add(nodesThatAreDisabled[i]);\n }\n });\n const bodyNode = this.bodyNode;\n const allTriggerElements = Array.from(this.statesByElement.keys());\n const enterNodeMap = buildRootMap(allTriggerElements, this.collectedEnterElements);\n // this must occur before the instructions are built below such that\n // the :enter queries match the elements (since the timeline queries\n // are fired during instruction building).\n const enterNodeMapIds = new Map();\n let i = 0;\n enterNodeMap.forEach((nodes, root) => {\n const className = ENTER_CLASSNAME + i++;\n enterNodeMapIds.set(root, className);\n nodes.forEach(node => addClass(node, className));\n });\n const allLeaveNodes = [];\n const mergedLeaveNodes = new Set();\n const leaveNodesWithoutAnimations = new Set();\n for (let i = 0; i < this.collectedLeaveElements.length; i++) {\n const element = this.collectedLeaveElements[i];\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n allLeaveNodes.push(element);\n mergedLeaveNodes.add(element);\n if (details.hasAnimation) {\n this.driver.query(element, STAR_SELECTOR, true).forEach(elm => mergedLeaveNodes.add(elm));\n }\n else {\n leaveNodesWithoutAnimations.add(element);\n }\n }\n }\n const leaveNodeMapIds = new Map();\n const leaveNodeMap = buildRootMap(allTriggerElements, Array.from(mergedLeaveNodes));\n leaveNodeMap.forEach((nodes, root) => {\n const className = LEAVE_CLASSNAME + i++;\n leaveNodeMapIds.set(root, className);\n nodes.forEach(node => addClass(node, className));\n });\n cleanupFns.push(() => {\n enterNodeMap.forEach((nodes, root) => {\n const className = enterNodeMapIds.get(root);\n nodes.forEach(node => removeClass(node, className));\n });\n leaveNodeMap.forEach((nodes, root) => {\n const className = leaveNodeMapIds.get(root);\n nodes.forEach(node => removeClass(node, className));\n });\n allLeaveNodes.forEach(element => {\n this.processLeaveNode(element);\n });\n });\n const allPlayers = [];\n const erroneousTransitions = [];\n for (let i = this._namespaceList.length - 1; i >= 0; i--) {\n const ns = this._namespaceList[i];\n ns.drainQueuedTransitions(microtaskId).forEach(entry => {\n const player = entry.player;\n const element = entry.element;\n allPlayers.push(player);\n if (this.collectedEnterElements.length) {\n const details = element[REMOVAL_FLAG];\n // animations for move operations (elements being removed and reinserted,\n // e.g. when the order of an *ngFor list changes) are currently not supported\n if (details && details.setForMove) {\n if (details.previousTriggersValues &&\n details.previousTriggersValues.has(entry.triggerName)) {\n const previousValue = details.previousTriggersValues.get(entry.triggerName);\n // we need to restore the previous trigger value since the element has\n // only been moved and hasn't actually left the DOM\n const triggersWithStates = this.statesByElement.get(entry.element);\n if (triggersWithStates && triggersWithStates.has(entry.triggerName)) {\n const state = triggersWithStates.get(entry.triggerName);\n state.value = previousValue;\n triggersWithStates.set(entry.triggerName, state);\n }\n }\n player.destroy();\n return;\n }\n }\n const nodeIsOrphaned = !bodyNode || !this.driver.containsElement(bodyNode, element);\n const leaveClassName = leaveNodeMapIds.get(element);\n const enterClassName = enterNodeMapIds.get(element);\n const instruction = this._buildInstruction(entry, subTimelines, enterClassName, leaveClassName, nodeIsOrphaned);\n if (instruction.errors && instruction.errors.length) {\n erroneousTransitions.push(instruction);\n return;\n }\n // even though the element may not be in the DOM, it may still\n // be added at a later point (due to the mechanics of content\n // projection and/or dynamic component insertion) therefore it's\n // important to still style the element.\n if (nodeIsOrphaned) {\n player.onStart(() => eraseStyles(element, instruction.fromStyles));\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n skippedPlayers.push(player);\n return;\n }\n // if an unmatched transition is queued and ready to go\n // then it SHOULD NOT render an animation and cancel the\n // previously running animations.\n if (entry.isFallbackTransition) {\n player.onStart(() => eraseStyles(element, instruction.fromStyles));\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n skippedPlayers.push(player);\n return;\n }\n // this means that if a parent animation uses this animation as a sub-trigger\n // then it will instruct the timeline builder not to add a player delay, but\n // instead stretch the first keyframe gap until the animation starts. This is\n // important in order to prevent extra initialization styles from being\n // required by the user for the animation.\n const timelines = [];\n instruction.timelines.forEach(tl => {\n tl.stretchStartingKeyframe = true;\n if (!this.disabledNodes.has(tl.element)) {\n timelines.push(tl);\n }\n });\n instruction.timelines = timelines;\n subTimelines.append(element, instruction.timelines);\n const tuple = { instruction, player, element };\n queuedInstructions.push(tuple);\n instruction.queriedElements.forEach(element => getOrSetDefaultValue(queriedElements, element, []).push(player));\n instruction.preStyleProps.forEach((stringMap, element) => {\n if (stringMap.size) {\n let setVal = allPreStyleElements.get(element);\n if (!setVal) {\n allPreStyleElements.set(element, setVal = new Set());\n }\n stringMap.forEach((_, prop) => setVal.add(prop));\n }\n });\n instruction.postStyleProps.forEach((stringMap, element) => {\n let setVal = allPostStyleElements.get(element);\n if (!setVal) {\n allPostStyleElements.set(element, setVal = new Set());\n }\n stringMap.forEach((_, prop) => setVal.add(prop));\n });\n });\n }\n if (erroneousTransitions.length) {\n const errors = [];\n erroneousTransitions.forEach(instruction => {\n errors.push(transitionFailed(instruction.triggerName, instruction.errors));\n });\n allPlayers.forEach(player => player.destroy());\n this.reportError(errors);\n }\n const allPreviousPlayersMap = new Map();\n // this map tells us which element in the DOM tree is contained by\n // which animation. Further down this map will get populated once\n // the players are built and in doing so we can use it to efficiently\n // figure out if a sub player is skipped due to a parent player having priority.\n const animationElementMap = new Map();\n queuedInstructions.forEach(entry => {\n const element = entry.element;\n if (subTimelines.has(element)) {\n animationElementMap.set(element, element);\n this._beforeAnimationBuild(entry.player.namespaceId, entry.instruction, allPreviousPlayersMap);\n }\n });\n skippedPlayers.forEach(player => {\n const element = player.element;\n const previousPlayers = this._getPreviousPlayers(element, false, player.namespaceId, player.triggerName, null);\n previousPlayers.forEach(prevPlayer => {\n getOrSetDefaultValue(allPreviousPlayersMap, element, []).push(prevPlayer);\n prevPlayer.destroy();\n });\n });\n // this is a special case for nodes that will be removed either by\n // having their own leave animations or by being queried in a container\n // that will be removed once a parent animation is complete. The idea\n // here is that * styles must be identical to ! styles because of\n // backwards compatibility (* is also filled in by default in many places).\n // Otherwise * styles will return an empty value or \"auto\" since the element\n // passed to getComputedStyle will not be visible (since * === destination)\n const replaceNodes = allLeaveNodes.filter(node => {\n return replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements);\n });\n // POST STAGE: fill the * styles\n const postStylesMap = new Map();\n const allLeaveQueriedNodes = cloakAndComputeStyles(postStylesMap, this.driver, leaveNodesWithoutAnimations, allPostStyleElements, AUTO_STYLE);\n allLeaveQueriedNodes.forEach(node => {\n if (replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements)) {\n replaceNodes.push(node);\n }\n });\n // PRE STAGE: fill the ! styles\n const preStylesMap = new Map();\n enterNodeMap.forEach((nodes, root) => {\n cloakAndComputeStyles(preStylesMap, this.driver, new Set(nodes), allPreStyleElements, ɵPRE_STYLE);\n });\n replaceNodes.forEach(node => {\n const post = postStylesMap.get(node);\n const pre = preStylesMap.get(node);\n postStylesMap.set(node, new Map([...(post?.entries() ?? []), ...(pre?.entries() ?? [])]));\n });\n const rootPlayers = [];\n const subPlayers = [];\n const NO_PARENT_ANIMATION_ELEMENT_DETECTED = {};\n queuedInstructions.forEach(entry => {\n const { element, player, instruction } = entry;\n // this means that it was never consumed by a parent animation which\n // means that it is independent and therefore should be set for animation\n if (subTimelines.has(element)) {\n if (disabledElementsSet.has(element)) {\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n player.disabled = true;\n player.overrideTotalTime(instruction.totalTime);\n skippedPlayers.push(player);\n return;\n }\n // this will flow up the DOM and query the map to figure out\n // if a parent animation has priority over it. In the situation\n // that a parent is detected then it will cancel the loop. If\n // nothing is detected, or it takes a few hops to find a parent,\n // then it will fill in the missing nodes and signal them as having\n // a detected parent (or a NO_PARENT value via a special constant).\n let parentWithAnimation = NO_PARENT_ANIMATION_ELEMENT_DETECTED;\n if (animationElementMap.size > 1) {\n let elm = element;\n const parentsToAdd = [];\n while (elm = elm.parentNode) {\n const detectedParent = animationElementMap.get(elm);\n if (detectedParent) {\n parentWithAnimation = detectedParent;\n break;\n }\n parentsToAdd.push(elm);\n }\n parentsToAdd.forEach(parent => animationElementMap.set(parent, parentWithAnimation));\n }\n const innerPlayer = this._buildAnimation(player.namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap, postStylesMap);\n player.setRealPlayer(innerPlayer);\n if (parentWithAnimation === NO_PARENT_ANIMATION_ELEMENT_DETECTED) {\n rootPlayers.push(player);\n }\n else {\n const parentPlayers = this.playersByElement.get(parentWithAnimation);\n if (parentPlayers && parentPlayers.length) {\n player.parentPlayer = optimizeGroupPlayer(parentPlayers);\n }\n skippedPlayers.push(player);\n }\n }\n else {\n eraseStyles(element, instruction.fromStyles);\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n // there still might be a ancestor player animating this\n // element therefore we will still add it as a sub player\n // even if its animation may be disabled\n subPlayers.push(player);\n if (disabledElementsSet.has(element)) {\n skippedPlayers.push(player);\n }\n }\n });\n // find all of the sub players' corresponding inner animation players\n subPlayers.forEach(player => {\n // even if no players are found for a sub animation it\n // will still complete itself after the next tick since it's Noop\n const playersForElement = skippedPlayersMap.get(player.element);\n if (playersForElement && playersForElement.length) {\n const innerPlayer = optimizeGroupPlayer(playersForElement);\n player.setRealPlayer(innerPlayer);\n }\n });\n // the reason why we don't actually play the animation is\n // because all that a skipped player is designed to do is to\n // fire the start/done transition callback events\n skippedPlayers.forEach(player => {\n if (player.parentPlayer) {\n player.syncPlayerEvents(player.parentPlayer);\n }\n else {\n player.destroy();\n }\n });\n // run through all of the queued removals and see if they\n // were picked up by a query. If not then perform the removal\n // operation right away unless a parent animation is ongoing.\n for (let i = 0; i < allLeaveNodes.length; i++) {\n const element = allLeaveNodes[i];\n const details = element[REMOVAL_FLAG];\n removeClass(element, LEAVE_CLASSNAME);\n // this means the element has a removal animation that is being\n // taken care of and therefore the inner elements will hang around\n // until that animation is over (or the parent queried animation)\n if (details && details.hasAnimation)\n continue;\n let players = [];\n // if this element is queried or if it contains queried children\n // then we want for the element not to be removed from the page\n // until the queried animations have finished\n if (queriedElements.size) {\n let queriedPlayerResults = queriedElements.get(element);\n if (queriedPlayerResults && queriedPlayerResults.length) {\n players.push(...queriedPlayerResults);\n }\n let queriedInnerElements = this.driver.query(element, NG_ANIMATING_SELECTOR, true);\n for (let j = 0; j < queriedInnerElements.length; j++) {\n let queriedPlayers = queriedElements.get(queriedInnerElements[j]);\n if (queriedPlayers && queriedPlayers.length) {\n players.push(...queriedPlayers);\n }\n }\n }\n const activePlayers = players.filter(p => !p.destroyed);\n if (activePlayers.length) {\n removeNodesAfterAnimationDone(this, element, activePlayers);\n }\n else {\n this.processLeaveNode(element);\n }\n }\n // this is required so the cleanup method doesn't remove them\n allLeaveNodes.length = 0;\n rootPlayers.forEach(player => {\n this.players.push(player);\n player.onDone(() => {\n player.destroy();\n const index = this.players.indexOf(player);\n this.players.splice(index, 1);\n });\n player.play();\n });\n return rootPlayers;\n }\n afterFlush(callback) {\n this._flushFns.push(callback);\n }\n afterFlushAnimationsDone(callback) {\n this._whenQuietFns.push(callback);\n }\n _getPreviousPlayers(element, isQueriedElement, namespaceId, triggerName, toStateValue) {\n let players = [];\n if (isQueriedElement) {\n const queriedElementPlayers = this.playersByQueriedElement.get(element);\n if (queriedElementPlayers) {\n players = queriedElementPlayers;\n }\n }\n else {\n const elementPlayers = this.playersByElement.get(element);\n if (elementPlayers) {\n const isRemovalAnimation = !toStateValue || toStateValue == VOID_VALUE;\n elementPlayers.forEach(player => {\n if (player.queued)\n return;\n if (!isRemovalAnimation && player.triggerName != triggerName)\n return;\n players.push(player);\n });\n }\n }\n if (namespaceId || triggerName) {\n players = players.filter(player => {\n if (namespaceId && namespaceId != player.namespaceId)\n return false;\n if (triggerName && triggerName != player.triggerName)\n return false;\n return true;\n });\n }\n return players;\n }\n _beforeAnimationBuild(namespaceId, instruction, allPreviousPlayersMap) {\n const triggerName = instruction.triggerName;\n const rootElement = instruction.element;\n // when a removal animation occurs, ALL previous players are collected\n // and destroyed (even if they are outside of the current namespace)\n const targetNameSpaceId = instruction.isRemovalTransition ? undefined : namespaceId;\n const targetTriggerName = instruction.isRemovalTransition ? undefined : triggerName;\n for (const timelineInstruction of instruction.timelines) {\n const element = timelineInstruction.element;\n const isQueriedElement = element !== rootElement;\n const players = getOrSetDefaultValue(allPreviousPlayersMap, element, []);\n const previousPlayers = this._getPreviousPlayers(element, isQueriedElement, targetNameSpaceId, targetTriggerName, instruction.toState);\n previousPlayers.forEach(player => {\n const realPlayer = player.getRealPlayer();\n if (realPlayer.beforeDestroy) {\n realPlayer.beforeDestroy();\n }\n player.destroy();\n players.push(player);\n });\n }\n // this needs to be done so that the PRE/POST styles can be\n // computed properly without interfering with the previous animation\n eraseStyles(rootElement, instruction.fromStyles);\n }\n _buildAnimation(namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap, postStylesMap) {\n const triggerName = instruction.triggerName;\n const rootElement = instruction.element;\n // we first run this so that the previous animation player\n // data can be passed into the successive animation players\n const allQueriedPlayers = [];\n const allConsumedElements = new Set();\n const allSubElements = new Set();\n const allNewPlayers = instruction.timelines.map(timelineInstruction => {\n const element = timelineInstruction.element;\n allConsumedElements.add(element);\n // FIXME (matsko): make sure to-be-removed animations are removed properly\n const details = element[REMOVAL_FLAG];\n if (details && details.removedBeforeQueried)\n return new NoopAnimationPlayer(timelineInstruction.duration, timelineInstruction.delay);\n const isQueriedElement = element !== rootElement;\n const previousPlayers = flattenGroupPlayers((allPreviousPlayersMap.get(element) || EMPTY_PLAYER_ARRAY)\n .map(p => p.getRealPlayer()))\n .filter(p => {\n // the `element` is not apart of the AnimationPlayer definition, but\n // Mock/WebAnimations\n // use the element within their implementation. This will be added in Angular5 to\n // AnimationPlayer\n const pp = p;\n return pp.element ? pp.element === element : false;\n });\n const preStyles = preStylesMap.get(element);\n const postStyles = postStylesMap.get(element);\n const keyframes = normalizeKeyframes$1(this._normalizer, timelineInstruction.keyframes, preStyles, postStyles);\n const player = this._buildPlayer(timelineInstruction, keyframes, previousPlayers);\n // this means that this particular player belongs to a sub trigger. It is\n // important that we match this player up with the corresponding (@trigger.listener)\n if (timelineInstruction.subTimeline && skippedPlayersMap) {\n allSubElements.add(element);\n }\n if (isQueriedElement) {\n const wrappedPlayer = new TransitionAnimationPlayer(namespaceId, triggerName, element);\n wrappedPlayer.setRealPlayer(player);\n allQueriedPlayers.push(wrappedPlayer);\n }\n return player;\n });\n allQueriedPlayers.forEach(player => {\n getOrSetDefaultValue(this.playersByQueriedElement, player.element, []).push(player);\n player.onDone(() => deleteOrUnsetInMap(this.playersByQueriedElement, player.element, player));\n });\n allConsumedElements.forEach(element => addClass(element, NG_ANIMATING_CLASSNAME));\n const player = optimizeGroupPlayer(allNewPlayers);\n player.onDestroy(() => {\n allConsumedElements.forEach(element => removeClass(element, NG_ANIMATING_CLASSNAME));\n setStyles(rootElement, instruction.toStyles);\n });\n // this basically makes all of the callbacks for sub element animations\n // be dependent on the upper players for when they finish\n allSubElements.forEach(element => {\n getOrSetDefaultValue(skippedPlayersMap, element, []).push(player);\n });\n return player;\n }\n _buildPlayer(instruction, keyframes, previousPlayers) {\n if (keyframes.length > 0) {\n return this.driver.animate(instruction.element, keyframes, instruction.duration, instruction.delay, instruction.easing, previousPlayers);\n }\n // special case for when an empty transition|definition is provided\n // ... there is no point in rendering an empty animation\n return new NoopAnimationPlayer(instruction.duration, instruction.delay);\n }\n}\nclass TransitionAnimationPlayer {\n constructor(namespaceId, triggerName, element) {\n this.namespaceId = namespaceId;\n this.triggerName = triggerName;\n this.element = element;\n this._player = new NoopAnimationPlayer();\n this._containsRealPlayer = false;\n this._queuedCallbacks = new Map();\n this.destroyed = false;\n this.parentPlayer = null;\n this.markedForDestroy = false;\n this.disabled = false;\n this.queued = true;\n this.totalTime = 0;\n }\n setRealPlayer(player) {\n if (this._containsRealPlayer)\n return;\n this._player = player;\n this._queuedCallbacks.forEach((callbacks, phase) => {\n callbacks.forEach(callback => listenOnPlayer(player, phase, undefined, callback));\n });\n this._queuedCallbacks.clear();\n this._containsRealPlayer = true;\n this.overrideTotalTime(player.totalTime);\n this.queued = false;\n }\n getRealPlayer() {\n return this._player;\n }\n overrideTotalTime(totalTime) {\n this.totalTime = totalTime;\n }\n syncPlayerEvents(player) {\n const p = this._player;\n if (p.triggerCallback) {\n player.onStart(() => p.triggerCallback('start'));\n }\n player.onDone(() => this.finish());\n player.onDestroy(() => this.destroy());\n }\n _queueEvent(name, callback) {\n getOrSetDefaultValue(this._queuedCallbacks, name, []).push(callback);\n }\n onDone(fn) {\n if (this.queued) {\n this._queueEvent('done', fn);\n }\n this._player.onDone(fn);\n }\n onStart(fn) {\n if (this.queued) {\n this._queueEvent('start', fn);\n }\n this._player.onStart(fn);\n }\n onDestroy(fn) {\n if (this.queued) {\n this._queueEvent('destroy', fn);\n }\n this._player.onDestroy(fn);\n }\n init() {\n this._player.init();\n }\n hasStarted() {\n return this.queued ? false : this._player.hasStarted();\n }\n play() {\n !this.queued && this._player.play();\n }\n pause() {\n !this.queued && this._player.pause();\n }\n restart() {\n !this.queued && this._player.restart();\n }\n finish() {\n this._player.finish();\n }\n destroy() {\n this.destroyed = true;\n this._player.destroy();\n }\n reset() {\n !this.queued && this._player.reset();\n }\n setPosition(p) {\n if (!this.queued) {\n this._player.setPosition(p);\n }\n }\n getPosition() {\n return this.queued ? 0 : this._player.getPosition();\n }\n /** @internal */\n triggerCallback(phaseName) {\n const p = this._player;\n if (p.triggerCallback) {\n p.triggerCallback(phaseName);\n }\n }\n}\nfunction deleteOrUnsetInMap(map, key, value) {\n let currentValues = map.get(key);\n if (currentValues) {\n if (currentValues.length) {\n const index = currentValues.indexOf(value);\n currentValues.splice(index, 1);\n }\n if (currentValues.length == 0) {\n map.delete(key);\n }\n }\n return currentValues;\n}\nfunction normalizeTriggerValue(value) {\n // we use `!= null` here because it's the most simple\n // way to test against a \"falsy\" value without mixing\n // in empty strings or a zero value. DO NOT OPTIMIZE.\n return value != null ? value : null;\n}\nfunction isElementNode(node) {\n return node && node['nodeType'] === 1;\n}\nfunction isTriggerEventValid(eventName) {\n return eventName == 'start' || eventName == 'done';\n}\nfunction cloakElement(element, value) {\n const oldValue = element.style.display;\n element.style.display = value != null ? value : 'none';\n return oldValue;\n}\nfunction cloakAndComputeStyles(valuesMap, driver, elements, elementPropsMap, defaultStyle) {\n const cloakVals = [];\n elements.forEach(element => cloakVals.push(cloakElement(element)));\n const failedElements = [];\n elementPropsMap.forEach((props, element) => {\n const styles = new Map();\n props.forEach(prop => {\n const value = driver.computeStyle(element, prop, defaultStyle);\n styles.set(prop, value);\n // there is no easy way to detect this because a sub element could be removed\n // by a parent animation element being detached.\n if (!value || value.length == 0) {\n element[REMOVAL_FLAG] = NULL_REMOVED_QUERIED_STATE;\n failedElements.push(element);\n }\n });\n valuesMap.set(element, styles);\n });\n // we use a index variable here since Set.forEach(a, i) does not return\n // an index value for the closure (but instead just the value)\n let i = 0;\n elements.forEach(element => cloakElement(element, cloakVals[i++]));\n return failedElements;\n}\n/*\nSince the Angular renderer code will return a collection of inserted\nnodes in all areas of a DOM tree, it's up to this algorithm to figure\nout which nodes are roots for each animation @trigger.\n\nBy placing each inserted node into a Set and traversing upwards, it\nis possible to find the @trigger elements and well any direct *star\ninsertion nodes, if a @trigger root is found then the enter element\nis placed into the Map[@trigger] spot.\n */\nfunction buildRootMap(roots, nodes) {\n const rootMap = new Map();\n roots.forEach(root => rootMap.set(root, []));\n if (nodes.length == 0)\n return rootMap;\n const NULL_NODE = 1;\n const nodeSet = new Set(nodes);\n const localRootMap = new Map();\n function getRoot(node) {\n if (!node)\n return NULL_NODE;\n let root = localRootMap.get(node);\n if (root)\n return root;\n const parent = node.parentNode;\n if (rootMap.has(parent)) { // ngIf inside @trigger\n root = parent;\n }\n else if (nodeSet.has(parent)) { // ngIf inside ngIf\n root = NULL_NODE;\n }\n else { // recurse upwards\n root = getRoot(parent);\n }\n localRootMap.set(node, root);\n return root;\n }\n nodes.forEach(node => {\n const root = getRoot(node);\n if (root !== NULL_NODE) {\n rootMap.get(root).push(node);\n }\n });\n return rootMap;\n}\nfunction addClass(element, className) {\n element.classList?.add(className);\n}\nfunction removeClass(element, className) {\n element.classList?.remove(className);\n}\nfunction removeNodesAfterAnimationDone(engine, element, players) {\n optimizeGroupPlayer(players).onDone(() => engine.processLeaveNode(element));\n}\nfunction flattenGroupPlayers(players) {\n const finalPlayers = [];\n _flattenGroupPlayersRecur(players, finalPlayers);\n return finalPlayers;\n}\nfunction _flattenGroupPlayersRecur(players, finalPlayers) {\n for (let i = 0; i < players.length; i++) {\n const player = players[i];\n if (player instanceof ɵAnimationGroupPlayer) {\n _flattenGroupPlayersRecur(player.players, finalPlayers);\n }\n else {\n finalPlayers.push(player);\n }\n }\n}\nfunction objEquals(a, b) {\n const k1 = Object.keys(a);\n const k2 = Object.keys(b);\n if (k1.length != k2.length)\n return false;\n for (let i = 0; i < k1.length; i++) {\n const prop = k1[i];\n if (!b.hasOwnProperty(prop) || a[prop] !== b[prop])\n return false;\n }\n return true;\n}\nfunction replacePostStylesAsPre(element, allPreStyleElements, allPostStyleElements) {\n const postEntry = allPostStyleElements.get(element);\n if (!postEntry)\n return false;\n let preEntry = allPreStyleElements.get(element);\n if (preEntry) {\n postEntry.forEach(data => preEntry.add(data));\n }\n else {\n allPreStyleElements.set(element, postEntry);\n }\n allPostStyleElements.delete(element);\n return true;\n}\n\nclass AnimationEngine {\n constructor(bodyNode, _driver, _normalizer) {\n this.bodyNode = bodyNode;\n this._driver = _driver;\n this._normalizer = _normalizer;\n this._triggerCache = {};\n // this method is designed to be overridden by the code that uses this engine\n this.onRemovalComplete = (element, context) => { };\n this._transitionEngine = new TransitionAnimationEngine(bodyNode, _driver, _normalizer);\n this._timelineEngine = new TimelineAnimationEngine(bodyNode, _driver, _normalizer);\n this._transitionEngine.onRemovalComplete = (element, context) => this.onRemovalComplete(element, context);\n }\n registerTrigger(componentId, namespaceId, hostElement, name, metadata) {\n const cacheKey = componentId + '-' + name;\n let trigger = this._triggerCache[cacheKey];\n if (!trigger) {\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(this._driver, metadata, errors, warnings);\n if (errors.length) {\n throw triggerBuildFailed(name, errors);\n }\n if (warnings.length) {\n warnTriggerBuild(name, warnings);\n }\n trigger = buildTrigger(name, ast, this._normalizer);\n this._triggerCache[cacheKey] = trigger;\n }\n this._transitionEngine.registerTrigger(namespaceId, name, trigger);\n }\n register(namespaceId, hostElement) {\n this._transitionEngine.register(namespaceId, hostElement);\n }\n destroy(namespaceId, context) {\n this._transitionEngine.destroy(namespaceId, context);\n }\n onInsert(namespaceId, element, parent, insertBefore) {\n this._transitionEngine.insertNode(namespaceId, element, parent, insertBefore);\n }\n onRemove(namespaceId, element, context) {\n this._transitionEngine.removeNode(namespaceId, element, context);\n }\n disableAnimations(element, disable) {\n this._transitionEngine.markElementAsDisabled(element, disable);\n }\n process(namespaceId, element, property, value) {\n if (property.charAt(0) == '@') {\n const [id, action] = parseTimelineCommand(property);\n const args = value;\n this._timelineEngine.command(id, element, action, args);\n }\n else {\n this._transitionEngine.trigger(namespaceId, element, property, value);\n }\n }\n listen(namespaceId, element, eventName, eventPhase, callback) {\n // @@listen\n if (eventName.charAt(0) == '@') {\n const [id, action] = parseTimelineCommand(eventName);\n return this._timelineEngine.listen(id, element, action, callback);\n }\n return this._transitionEngine.listen(namespaceId, element, eventName, eventPhase, callback);\n }\n flush(microtaskId = -1) {\n this._transitionEngine.flush(microtaskId);\n }\n get players() {\n return [\n ...this._transitionEngine.players,\n ...this._timelineEngine.players,\n ];\n }\n whenRenderingDone() {\n return this._transitionEngine.whenRenderingDone();\n }\n afterFlushAnimationsDone(cb) {\n this._transitionEngine.afterFlushAnimationsDone(cb);\n }\n}\n\n/**\n * Returns an instance of `SpecialCasedStyles` if and when any special (non animateable) styles are\n * detected.\n *\n * In CSS there exist properties that cannot be animated within a keyframe animation\n * (whether it be via CSS keyframes or web-animations) and the animation implementation\n * will ignore them. This function is designed to detect those special cased styles and\n * return a container that will be executed at the start and end of the animation.\n *\n * @returns an instance of `SpecialCasedStyles` if any special styles are detected otherwise `null`\n */\nfunction packageNonAnimatableStyles(element, styles) {\n let startStyles = null;\n let endStyles = null;\n if (Array.isArray(styles) && styles.length) {\n startStyles = filterNonAnimatableStyles(styles[0]);\n if (styles.length > 1) {\n endStyles = filterNonAnimatableStyles(styles[styles.length - 1]);\n }\n }\n else if (styles instanceof Map) {\n startStyles = filterNonAnimatableStyles(styles);\n }\n return (startStyles || endStyles) ? new SpecialCasedStyles(element, startStyles, endStyles) :\n null;\n}\n/**\n * Designed to be executed during a keyframe-based animation to apply any special-cased styles.\n *\n * When started (when the `start()` method is run) then the provided `startStyles`\n * will be applied. When finished (when the `finish()` method is called) the\n * `endStyles` will be applied as well any any starting styles. Finally when\n * `destroy()` is called then all styles will be removed.\n */\nclass SpecialCasedStyles {\n static { this.initialStylesByElement = ( /* @__PURE__ */new WeakMap()); }\n constructor(_element, _startStyles, _endStyles) {\n this._element = _element;\n this._startStyles = _startStyles;\n this._endStyles = _endStyles;\n this._state = 0 /* SpecialCasedStylesState.Pending */;\n let initialStyles = SpecialCasedStyles.initialStylesByElement.get(_element);\n if (!initialStyles) {\n SpecialCasedStyles.initialStylesByElement.set(_element, initialStyles = new Map());\n }\n this._initialStyles = initialStyles;\n }\n start() {\n if (this._state < 1 /* SpecialCasedStylesState.Started */) {\n if (this._startStyles) {\n setStyles(this._element, this._startStyles, this._initialStyles);\n }\n this._state = 1 /* SpecialCasedStylesState.Started */;\n }\n }\n finish() {\n this.start();\n if (this._state < 2 /* SpecialCasedStylesState.Finished */) {\n setStyles(this._element, this._initialStyles);\n if (this._endStyles) {\n setStyles(this._element, this._endStyles);\n this._endStyles = null;\n }\n this._state = 1 /* SpecialCasedStylesState.Started */;\n }\n }\n destroy() {\n this.finish();\n if (this._state < 3 /* SpecialCasedStylesState.Destroyed */) {\n SpecialCasedStyles.initialStylesByElement.delete(this._element);\n if (this._startStyles) {\n eraseStyles(this._element, this._startStyles);\n this._endStyles = null;\n }\n if (this._endStyles) {\n eraseStyles(this._element, this._endStyles);\n this._endStyles = null;\n }\n setStyles(this._element, this._initialStyles);\n this._state = 3 /* SpecialCasedStylesState.Destroyed */;\n }\n }\n}\nfunction filterNonAnimatableStyles(styles) {\n let result = null;\n styles.forEach((val, prop) => {\n if (isNonAnimatableStyle(prop)) {\n result = result || new Map();\n result.set(prop, val);\n }\n });\n return result;\n}\nfunction isNonAnimatableStyle(prop) {\n return prop === 'display' || prop === 'position';\n}\n\nclass WebAnimationsPlayer {\n constructor(element, keyframes, options, _specialStyles) {\n this.element = element;\n this.keyframes = keyframes;\n this.options = options;\n this._specialStyles = _specialStyles;\n this._onDoneFns = [];\n this._onStartFns = [];\n this._onDestroyFns = [];\n this._initialized = false;\n this._finished = false;\n this._started = false;\n this._destroyed = false;\n // the following original fns are persistent copies of the _onStartFns and _onDoneFns\n // and are used to reset the fns to their original values upon reset()\n // (since the _onStartFns and _onDoneFns get deleted after they are called)\n this._originalOnDoneFns = [];\n this._originalOnStartFns = [];\n this.time = 0;\n this.parentPlayer = null;\n this.currentSnapshot = new Map();\n this._duration = options['duration'];\n this._delay = options['delay'] || 0;\n this.time = this._duration + this._delay;\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n init() {\n this._buildPlayer();\n this._preparePlayerBeforeStart();\n }\n _buildPlayer() {\n if (this._initialized)\n return;\n this._initialized = true;\n const keyframes = this.keyframes;\n // @ts-expect-error overwriting a readonly property\n this.domPlayer = this._triggerWebAnimation(this.element, keyframes, this.options);\n this._finalKeyframe = keyframes.length ? keyframes[keyframes.length - 1] : new Map();\n this.domPlayer.addEventListener('finish', () => this._onFinish());\n }\n _preparePlayerBeforeStart() {\n // this is required so that the player doesn't start to animate right away\n if (this._delay) {\n this._resetDomPlayerState();\n }\n else {\n this.domPlayer.pause();\n }\n }\n _convertKeyframesToObject(keyframes) {\n const kfs = [];\n keyframes.forEach(frame => {\n kfs.push(Object.fromEntries(frame));\n });\n return kfs;\n }\n /** @internal */\n _triggerWebAnimation(element, keyframes, options) {\n return element.animate(this._convertKeyframesToObject(keyframes), options);\n }\n onStart(fn) {\n this._originalOnStartFns.push(fn);\n this._onStartFns.push(fn);\n }\n onDone(fn) {\n this._originalOnDoneFns.push(fn);\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n play() {\n this._buildPlayer();\n if (!this.hasStarted()) {\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n this._started = true;\n if (this._specialStyles) {\n this._specialStyles.start();\n }\n }\n this.domPlayer.play();\n }\n pause() {\n this.init();\n this.domPlayer.pause();\n }\n finish() {\n this.init();\n if (this._specialStyles) {\n this._specialStyles.finish();\n }\n this._onFinish();\n this.domPlayer.finish();\n }\n reset() {\n this._resetDomPlayerState();\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n this._onStartFns = this._originalOnStartFns;\n this._onDoneFns = this._originalOnDoneFns;\n }\n _resetDomPlayerState() {\n if (this.domPlayer) {\n this.domPlayer.cancel();\n }\n }\n restart() {\n this.reset();\n this.play();\n }\n hasStarted() {\n return this._started;\n }\n destroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n this._resetDomPlayerState();\n this._onFinish();\n if (this._specialStyles) {\n this._specialStyles.destroy();\n }\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n setPosition(p) {\n if (this.domPlayer === undefined) {\n this.init();\n }\n this.domPlayer.currentTime = p * this.time;\n }\n getPosition() {\n // tsc is complaining with TS2362 without the conversion to number\n return +(this.domPlayer.currentTime ?? 0) / this.time;\n }\n get totalTime() {\n return this._delay + this._duration;\n }\n beforeDestroy() {\n const styles = new Map();\n if (this.hasStarted()) {\n // note: this code is invoked only when the `play` function was called prior to this\n // (thus `hasStarted` returns true), this implies that the code that initializes\n // `_finalKeyframe` has also been executed and the non-null assertion can be safely used here\n const finalKeyframe = this._finalKeyframe;\n finalKeyframe.forEach((val, prop) => {\n if (prop !== 'offset') {\n styles.set(prop, this._finished ? val : computeStyle(this.element, prop));\n }\n });\n }\n this.currentSnapshot = styles;\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName === 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\n\nclass WebAnimationsDriver {\n validateStyleProperty(prop) {\n // Perform actual validation in dev mode only, in prod mode this check is a noop.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n return validateStyleProperty(prop);\n }\n return true;\n }\n validateAnimatableStyleProperty(prop) {\n // Perform actual validation in dev mode only, in prod mode this check is a noop.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const cssProp = camelCaseToDashCase(prop);\n return validateWebAnimatableStyleProperty(cssProp);\n }\n return true;\n }\n matchesElement(_element, _selector) {\n // This method is deprecated and no longer in use so we return false.\n return false;\n }\n containsElement(elm1, elm2) {\n return containsElement(elm1, elm2);\n }\n getParentElement(element) {\n return getParentElement(element);\n }\n query(element, selector, multi) {\n return invokeQuery(element, selector, multi);\n }\n computeStyle(element, prop, defaultValue) {\n return window.getComputedStyle(element)[prop];\n }\n animate(element, keyframes, duration, delay, easing, previousPlayers = []) {\n const fill = delay == 0 ? 'both' : 'forwards';\n const playerOptions = { duration, delay, fill };\n // we check for this to avoid having a null|undefined value be present\n // for the easing (which results in an error for certain browsers #9752)\n if (easing) {\n playerOptions['easing'] = easing;\n }\n const previousStyles = new Map();\n const previousWebAnimationPlayers = previousPlayers.filter(player => player instanceof WebAnimationsPlayer);\n if (allowPreviousPlayerStylesMerge(duration, delay)) {\n previousWebAnimationPlayers.forEach(player => {\n player.currentSnapshot.forEach((val, prop) => previousStyles.set(prop, val));\n });\n }\n let _keyframes = normalizeKeyframes(keyframes).map(styles => copyStyles(styles));\n _keyframes = balancePreviousStylesIntoKeyframes(element, _keyframes, previousStyles);\n const specialStyles = packageNonAnimatableStyles(element, _keyframes);\n return new WebAnimationsPlayer(element, _keyframes, playerOptions, specialStyles);\n }\n}\n\n/**\n * @module\n * @description\n * Entry point for all animation APIs of the animation browser package.\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AnimationDriver, Animation as ɵAnimation, AnimationEngine as ɵAnimationEngine, AnimationStyleNormalizer as ɵAnimationStyleNormalizer, NoopAnimationDriver as ɵNoopAnimationDriver, NoopAnimationStyleNormalizer as ɵNoopAnimationStyleNormalizer, WebAnimationsDriver as ɵWebAnimationsDriver, WebAnimationsPlayer as ɵWebAnimationsPlayer, WebAnimationsStyleNormalizer as ɵWebAnimationsStyleNormalizer, allowPreviousPlayerStylesMerge as ɵallowPreviousPlayerStylesMerge, containsElement as ɵcontainsElement, getParentElement as ɵgetParentElement, invokeQuery as ɵinvokeQuery, normalizeKeyframes as ɵnormalizeKeyframes, validateStyleProperty as ɵvalidateStyleProperty };\n","/**\n * @license Angular v16.2.11\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { ViewEncapsulation, Injectable, Inject, RendererFactory2, NgZone, ANIMATION_MODULE_TYPE, NgModule } from '@angular/core';\nexport { ANIMATION_MODULE_TYPE } from '@angular/core';\nimport { ɵDomRendererFactory2, BrowserModule } from '@angular/platform-browser';\nimport { AnimationBuilder, sequence, AnimationFactory } from '@angular/animations';\nimport * as i1 from '@angular/animations/browser';\nimport { ɵAnimationEngine, ɵWebAnimationsStyleNormalizer, ɵAnimationStyleNormalizer, AnimationDriver, ɵWebAnimationsDriver, ɵNoopAnimationDriver } from '@angular/animations/browser';\nimport { DOCUMENT } from '@angular/common';\n\nclass BrowserAnimationBuilder extends AnimationBuilder {\n constructor(rootRenderer, doc) {\n super();\n this._nextAnimationId = 0;\n const typeData = { id: '0', encapsulation: ViewEncapsulation.None, styles: [], data: { animation: [] } };\n this._renderer = rootRenderer.createRenderer(doc.body, typeData);\n }\n build(animation) {\n const id = this._nextAnimationId.toString();\n this._nextAnimationId++;\n const entry = Array.isArray(animation) ? sequence(animation) : animation;\n issueAnimationCommand(this._renderer, null, id, 'register', [entry]);\n return new BrowserAnimationFactory(id, this._renderer);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.11\", ngImport: i0, type: BrowserAnimationBuilder, deps: [{ token: i0.RendererFactory2 }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.11\", ngImport: i0, type: BrowserAnimationBuilder }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.11\", ngImport: i0, type: BrowserAnimationBuilder, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.RendererFactory2 }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\nclass BrowserAnimationFactory extends AnimationFactory {\n constructor(_id, _renderer) {\n super();\n this._id = _id;\n this._renderer = _renderer;\n }\n create(element, options) {\n return new RendererAnimationPlayer(this._id, element, options || {}, this._renderer);\n }\n}\nclass RendererAnimationPlayer {\n constructor(id, element, options, _renderer) {\n this.id = id;\n this.element = element;\n this._renderer = _renderer;\n this.parentPlayer = null;\n this._started = false;\n this.totalTime = 0;\n this._command('create', options);\n }\n _listen(eventName, callback) {\n return this._renderer.listen(this.element, `@@${this.id}:${eventName}`, callback);\n }\n _command(command, ...args) {\n return issueAnimationCommand(this._renderer, this.element, this.id, command, args);\n }\n onDone(fn) {\n this._listen('done', fn);\n }\n onStart(fn) {\n this._listen('start', fn);\n }\n onDestroy(fn) {\n this._listen('destroy', fn);\n }\n init() {\n this._command('init');\n }\n hasStarted() {\n return this._started;\n }\n play() {\n this._command('play');\n this._started = true;\n }\n pause() {\n this._command('pause');\n }\n restart() {\n this._command('restart');\n }\n finish() {\n this._command('finish');\n }\n destroy() {\n this._command('destroy');\n }\n reset() {\n this._command('reset');\n this._started = false;\n }\n setPosition(p) {\n this._command('setPosition', p);\n }\n getPosition() {\n return this._renderer.engine.players[+this.id]?.getPosition() ?? 0;\n }\n}\nfunction issueAnimationCommand(renderer, element, id, command, args) {\n return renderer.setProperty(element, `@@${id}:${command}`, args);\n}\n\nconst ANIMATION_PREFIX = '@';\nconst DISABLE_ANIMATIONS_FLAG = '@.disabled';\nclass AnimationRendererFactory {\n constructor(delegate, engine, _zone) {\n this.delegate = delegate;\n this.engine = engine;\n this._zone = _zone;\n this._currentId = 0;\n this._microtaskId = 1;\n this._animationCallbacksBuffer = [];\n this._rendererCache = new Map();\n this._cdRecurDepth = 0;\n engine.onRemovalComplete = (element, delegate) => {\n // Note: if a component element has a leave animation, and a host leave animation,\n // the view engine will call `removeChild` for the parent\n // component renderer as well as for the child component renderer.\n // Therefore, we need to check if we already removed the element.\n const parentNode = delegate?.parentNode(element);\n if (parentNode) {\n delegate.removeChild(parentNode, element);\n }\n };\n }\n createRenderer(hostElement, type) {\n const EMPTY_NAMESPACE_ID = '';\n // cache the delegates to find out which cached delegate can\n // be used by which cached renderer\n const delegate = this.delegate.createRenderer(hostElement, type);\n if (!hostElement || !type || !type.data || !type.data['animation']) {\n let renderer = this._rendererCache.get(delegate);\n if (!renderer) {\n // Ensure that the renderer is removed from the cache on destroy\n // since it may contain references to detached DOM nodes.\n const onRendererDestroy = () => this._rendererCache.delete(delegate);\n renderer =\n new BaseAnimationRenderer(EMPTY_NAMESPACE_ID, delegate, this.engine, onRendererDestroy);\n // only cache this result when the base renderer is used\n this._rendererCache.set(delegate, renderer);\n }\n return renderer;\n }\n const componentId = type.id;\n const namespaceId = type.id + '-' + this._currentId;\n this._currentId++;\n this.engine.register(namespaceId, hostElement);\n const registerTrigger = (trigger) => {\n if (Array.isArray(trigger)) {\n trigger.forEach(registerTrigger);\n }\n else {\n this.engine.registerTrigger(componentId, namespaceId, hostElement, trigger.name, trigger);\n }\n };\n const animationTriggers = type.data['animation'];\n animationTriggers.forEach(registerTrigger);\n return new AnimationRenderer(this, namespaceId, delegate, this.engine);\n }\n begin() {\n this._cdRecurDepth++;\n if (this.delegate.begin) {\n this.delegate.begin();\n }\n }\n _scheduleCountTask() {\n queueMicrotask(() => {\n this._microtaskId++;\n });\n }\n /** @internal */\n scheduleListenerCallback(count, fn, data) {\n if (count >= 0 && count < this._microtaskId) {\n this._zone.run(() => fn(data));\n return;\n }\n if (this._animationCallbacksBuffer.length == 0) {\n queueMicrotask(() => {\n this._zone.run(() => {\n this._animationCallbacksBuffer.forEach(tuple => {\n const [fn, data] = tuple;\n fn(data);\n });\n this._animationCallbacksBuffer = [];\n });\n });\n }\n this._animationCallbacksBuffer.push([fn, data]);\n }\n end() {\n this._cdRecurDepth--;\n // this is to prevent animations from running twice when an inner\n // component does CD when a parent component instead has inserted it\n if (this._cdRecurDepth == 0) {\n this._zone.runOutsideAngular(() => {\n this._scheduleCountTask();\n this.engine.flush(this._microtaskId);\n });\n }\n if (this.delegate.end) {\n this.delegate.end();\n }\n }\n whenRenderingDone() {\n return this.engine.whenRenderingDone();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.11\", ngImport: i0, type: AnimationRendererFactory, deps: [{ token: i0.RendererFactory2 }, { token: i1.ɵAnimationEngine }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.11\", ngImport: i0, type: AnimationRendererFactory }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.11\", ngImport: i0, type: AnimationRendererFactory, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.RendererFactory2 }, { type: i1.ɵAnimationEngine }, { type: i0.NgZone }]; } });\nclass BaseAnimationRenderer {\n constructor(namespaceId, delegate, engine, _onDestroy) {\n this.namespaceId = namespaceId;\n this.delegate = delegate;\n this.engine = engine;\n this._onDestroy = _onDestroy;\n }\n get data() {\n return this.delegate.data;\n }\n destroyNode(node) {\n this.delegate.destroyNode?.(node);\n }\n destroy() {\n this.engine.destroy(this.namespaceId, this.delegate);\n this.engine.afterFlushAnimationsDone(() => {\n // Call the renderer destroy method after the animations has finished as otherwise\n // styles will be removed too early which will cause an unstyled animation.\n queueMicrotask(() => {\n this.delegate.destroy();\n });\n });\n this._onDestroy?.();\n }\n createElement(name, namespace) {\n return this.delegate.createElement(name, namespace);\n }\n createComment(value) {\n return this.delegate.createComment(value);\n }\n createText(value) {\n return this.delegate.createText(value);\n }\n appendChild(parent, newChild) {\n this.delegate.appendChild(parent, newChild);\n this.engine.onInsert(this.namespaceId, newChild, parent, false);\n }\n insertBefore(parent, newChild, refChild, isMove = true) {\n this.delegate.insertBefore(parent, newChild, refChild);\n // If `isMove` true than we should animate this insert.\n this.engine.onInsert(this.namespaceId, newChild, parent, isMove);\n }\n removeChild(parent, oldChild, isHostElement) {\n this.engine.onRemove(this.namespaceId, oldChild, this.delegate);\n }\n selectRootElement(selectorOrNode, preserveContent) {\n return this.delegate.selectRootElement(selectorOrNode, preserveContent);\n }\n parentNode(node) {\n return this.delegate.parentNode(node);\n }\n nextSibling(node) {\n return this.delegate.nextSibling(node);\n }\n setAttribute(el, name, value, namespace) {\n this.delegate.setAttribute(el, name, value, namespace);\n }\n removeAttribute(el, name, namespace) {\n this.delegate.removeAttribute(el, name, namespace);\n }\n addClass(el, name) {\n this.delegate.addClass(el, name);\n }\n removeClass(el, name) {\n this.delegate.removeClass(el, name);\n }\n setStyle(el, style, value, flags) {\n this.delegate.setStyle(el, style, value, flags);\n }\n removeStyle(el, style, flags) {\n this.delegate.removeStyle(el, style, flags);\n }\n setProperty(el, name, value) {\n if (name.charAt(0) == ANIMATION_PREFIX && name == DISABLE_ANIMATIONS_FLAG) {\n this.disableAnimations(el, !!value);\n }\n else {\n this.delegate.setProperty(el, name, value);\n }\n }\n setValue(node, value) {\n this.delegate.setValue(node, value);\n }\n listen(target, eventName, callback) {\n return this.delegate.listen(target, eventName, callback);\n }\n disableAnimations(element, value) {\n this.engine.disableAnimations(element, value);\n }\n}\nclass AnimationRenderer extends BaseAnimationRenderer {\n constructor(factory, namespaceId, delegate, engine, onDestroy) {\n super(namespaceId, delegate, engine, onDestroy);\n this.factory = factory;\n this.namespaceId = namespaceId;\n }\n setProperty(el, name, value) {\n if (name.charAt(0) == ANIMATION_PREFIX) {\n if (name.charAt(1) == '.' && name == DISABLE_ANIMATIONS_FLAG) {\n value = value === undefined ? true : !!value;\n this.disableAnimations(el, value);\n }\n else {\n this.engine.process(this.namespaceId, el, name.slice(1), value);\n }\n }\n else {\n this.delegate.setProperty(el, name, value);\n }\n }\n listen(target, eventName, callback) {\n if (eventName.charAt(0) == ANIMATION_PREFIX) {\n const element = resolveElementFromTarget(target);\n let name = eventName.slice(1);\n let phase = '';\n // @listener.phase is for trigger animation callbacks\n // @@listener is for animation builder callbacks\n if (name.charAt(0) != ANIMATION_PREFIX) {\n [name, phase] = parseTriggerCallbackName(name);\n }\n return this.engine.listen(this.namespaceId, element, name, phase, event => {\n const countId = event['_data'] || -1;\n this.factory.scheduleListenerCallback(countId, callback, event);\n });\n }\n return this.delegate.listen(target, eventName, callback);\n }\n}\nfunction resolveElementFromTarget(target) {\n switch (target) {\n case 'body':\n return document.body;\n case 'document':\n return document;\n case 'window':\n return window;\n default:\n return target;\n }\n}\nfunction parseTriggerCallbackName(triggerName) {\n const dotIndex = triggerName.indexOf('.');\n const trigger = triggerName.substring(0, dotIndex);\n const phase = triggerName.slice(dotIndex + 1);\n return [trigger, phase];\n}\n\nclass InjectableAnimationEngine extends ɵAnimationEngine {\n // The `ApplicationRef` is injected here explicitly to force the dependency ordering.\n // Since the `ApplicationRef` should be created earlier before the `AnimationEngine`, they\n // both have `ngOnDestroy` hooks and `flush()` must be called after all views are destroyed.\n constructor(doc, driver, normalizer, appRef) {\n super(doc.body, driver, normalizer);\n }\n ngOnDestroy() {\n this.flush();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.11\", ngImport: i0, type: InjectableAnimationEngine, deps: [{ token: DOCUMENT }, { token: i1.AnimationDriver }, { token: i1.ɵAnimationStyleNormalizer }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.11\", ngImport: i0, type: InjectableAnimationEngine }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.11\", ngImport: i0, type: InjectableAnimationEngine, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1.AnimationDriver }, { type: i1.ɵAnimationStyleNormalizer }, { type: i0.ApplicationRef }]; } });\nfunction instantiateDefaultStyleNormalizer() {\n return new ɵWebAnimationsStyleNormalizer();\n}\nfunction instantiateRendererFactory(renderer, engine, zone) {\n return new AnimationRendererFactory(renderer, engine, zone);\n}\nconst SHARED_ANIMATION_PROVIDERS = [\n { provide: AnimationBuilder, useClass: BrowserAnimationBuilder },\n { provide: ɵAnimationStyleNormalizer, useFactory: instantiateDefaultStyleNormalizer },\n { provide: ɵAnimationEngine, useClass: InjectableAnimationEngine }, {\n provide: RendererFactory2,\n useFactory: instantiateRendererFactory,\n deps: [ɵDomRendererFactory2, ɵAnimationEngine, NgZone]\n }\n];\n/**\n * Separate providers from the actual module so that we can do a local modification in Google3 to\n * include them in the BrowserModule.\n */\nconst BROWSER_ANIMATIONS_PROVIDERS = [\n { provide: AnimationDriver, useFactory: () => new ɵWebAnimationsDriver() },\n { provide: ANIMATION_MODULE_TYPE, useValue: 'BrowserAnimations' }, ...SHARED_ANIMATION_PROVIDERS\n];\n/**\n * Separate providers from the actual module so that we can do a local modification in Google3 to\n * include them in the BrowserTestingModule.\n */\nconst BROWSER_NOOP_ANIMATIONS_PROVIDERS = [\n { provide: AnimationDriver, useClass: ɵNoopAnimationDriver },\n { provide: ANIMATION_MODULE_TYPE, useValue: 'NoopAnimations' }, ...SHARED_ANIMATION_PROVIDERS\n];\n\n/**\n * Exports `BrowserModule` with additional [dependency-injection providers](guide/glossary#provider)\n * for use with animations. See [Animations](guide/animations).\n * @publicApi\n */\nclass BrowserAnimationsModule {\n /**\n * Configures the module based on the specified object.\n *\n * @param config Object used to configure the behavior of the `BrowserAnimationsModule`.\n * @see {@link BrowserAnimationsModuleConfig}\n *\n * @usageNotes\n * When registering the `BrowserAnimationsModule`, you can use the `withConfig`\n * function as follows:\n * ```\n * @NgModule({\n * imports: [BrowserAnimationsModule.withConfig(config)]\n * })\n * class MyNgModule {}\n * ```\n */\n static withConfig(config) {\n return {\n ngModule: BrowserAnimationsModule,\n providers: config.disableAnimations ? BROWSER_NOOP_ANIMATIONS_PROVIDERS :\n BROWSER_ANIMATIONS_PROVIDERS\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.11\", ngImport: i0, type: BrowserAnimationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.11\", ngImport: i0, type: BrowserAnimationsModule, exports: [BrowserModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.11\", ngImport: i0, type: BrowserAnimationsModule, providers: BROWSER_ANIMATIONS_PROVIDERS, imports: [BrowserModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.11\", ngImport: i0, type: BrowserAnimationsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [BrowserModule],\n providers: BROWSER_ANIMATIONS_PROVIDERS,\n }]\n }] });\n/**\n * Returns the set of [dependency-injection providers](guide/glossary#provider)\n * to enable animations in an application. See [animations guide](guide/animations)\n * to learn more about animations in Angular.\n *\n * @usageNotes\n *\n * The function is useful when you want to enable animations in an application\n * bootstrapped using the `bootstrapApplication` function. In this scenario there\n * is no need to import the `BrowserAnimationsModule` NgModule at all, just add\n * providers returned by this function to the `providers` list as show below.\n *\n * ```typescript\n * bootstrapApplication(RootComponent, {\n * providers: [\n * provideAnimations()\n * ]\n * });\n * ```\n *\n * @publicApi\n */\nfunction provideAnimations() {\n // Return a copy to prevent changes to the original array in case any in-place\n // alterations are performed to the `provideAnimations` call results in app code.\n return [...BROWSER_ANIMATIONS_PROVIDERS];\n}\n/**\n * A null player that must be imported to allow disabling of animations.\n * @publicApi\n */\nclass NoopAnimationsModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.11\", ngImport: i0, type: NoopAnimationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.11\", ngImport: i0, type: NoopAnimationsModule, exports: [BrowserModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.11\", ngImport: i0, type: NoopAnimationsModule, providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS, imports: [BrowserModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.11\", ngImport: i0, type: NoopAnimationsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [BrowserModule],\n providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS,\n }]\n }] });\n/**\n * Returns the set of [dependency-injection providers](guide/glossary#provider)\n * to disable animations in an application. See [animations guide](guide/animations)\n * to learn more about animations in Angular.\n *\n * @usageNotes\n *\n * The function is useful when you want to bootstrap an application using\n * the `bootstrapApplication` function, but you need to disable animations\n * (for example, when running tests).\n *\n * ```typescript\n * bootstrapApplication(RootComponent, {\n * providers: [\n * provideNoopAnimations()\n * ]\n * });\n * ```\n *\n * @publicApi\n */\nfunction provideNoopAnimations() {\n // Return a copy to prevent changes to the original array in case any in-place\n // alterations are performed to the `provideNoopAnimations` call results in app code.\n return [...BROWSER_NOOP_ANIMATIONS_PROVIDERS];\n}\n\n/**\n * @module\n * @description\n * Entry point for all animation APIs of the animation browser package.\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BrowserAnimationsModule, NoopAnimationsModule, provideAnimations, provideNoopAnimations, AnimationRenderer as ɵAnimationRenderer, AnimationRendererFactory as ɵAnimationRendererFactory, BrowserAnimationBuilder as ɵBrowserAnimationBuilder, BrowserAnimationFactory as ɵBrowserAnimationFactory, InjectableAnimationEngine as ɵInjectableAnimationEngine };\n","import { HttpErrorResponse, HttpStatusCode } from '@angular/common/http';\nimport { ErrorHandler, Injectable } from '@angular/core';\nimport { ConfigurationService } from '@common/services/configuration.service';\nimport { getSentryEnvironment } from '@common/utils';\nimport * as Sentry from '@sentry/browser';\n\n@Injectable()\nexport class SentryErrorHandler implements ErrorHandler {\n constructor(private config: ConfigurationService) {}\n\n public handleError(error): void {\n const extractedError = this.extractError(error) || 'Handled unknown error';\n\n if (this.config.get('production')) {\n if (this.isErrorSkipped(error)) return;\n\n Sentry.setTag('environment', getSentryEnvironment());\n\n const eventId = Sentry.captureException(extractedError);\n console.error('Unexpected error. Event Id: ' + eventId, extractedError);\n } else {\n // When in development mode, log the error to console for immediate feedback.\n console.error(extractedError);\n }\n }\n\n private isErrorSkipped(error) {\n return error?.status === HttpStatusCode.Unauthorized;\n }\n\n private extractError(error) {\n // Try to unwrap zone.js error.\n // https://github.com/angular/angular/blob/master/packages/core/@mbs-ui/util/errors.ts\n if (error && error.ngOriginalError) {\n error = error.ngOriginalError;\n }\n\n // We can handle messages and Error objects directly.\n if (typeof error === 'string' || error instanceof Error) {\n return error;\n }\n\n // If it's http module error, extract as much information from it as we can.\n if (error instanceof HttpErrorResponse) {\n // The `error` property of http exception can be either an `Error` object, which we can use directly...\n if (error.error instanceof Error) {\n return error.error;\n }\n\n // ... or an`ErrorEvent`, which can provide us with the message but no stack...\n if (error.error instanceof ErrorEvent) {\n return error.error.message;\n }\n\n if (typeof error.error === 'string' && error.status === HttpStatusCode.Unauthorized) {\n return `Server returned code 401 - Unauthorized`;\n }\n\n // ...or the request body itself, which we can use as a message instead.\n if (typeof error.error === 'string') {\n return `Server returned code ${error.status} with body \"${error.error}\"`;\n }\n\n // If we don't have any detailed information, fallback to the request message itself.\n return error.message;\n }\n\n // Skip if there's no error, and let user decide what to do with it.\n return null;\n }\n}\n","import { ErrorHandler, ModuleWithProviders, NgModule } from '@angular/core';\nimport { SentryErrorHandler } from './error-handler.service';\n\n@NgModule()\nexport class ErrorHandlerModule {\n static forRoot(): ModuleWithProviders {\n return {\n ngModule: ErrorHandlerModule,\n providers: [{ provide: ErrorHandler, useClass: SentryErrorHandler }]\n };\n }\n}\n","import { ChangeDetectionStrategy, Component, OnInit, ViewChild } from '@angular/core';\nimport { AuthService, UserOdataService } from '@common/services';\nimport { UntilDestroy } from '@ngneat/until-destroy';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { get } from 'lodash';\nimport { MbsPopupType, ModalComponent } from 'mbs-ui-kit';\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { finalize, switchMap } from 'rxjs/operators';\n\n@UntilDestroy()\n@Component({\n templateUrl: './delete-alternate-account-modal.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DeleteAlternateAccountModalComponent implements OnInit {\n @ViewChild(ModalComponent, { static: true }) baseModal: ModalComponent;\n\n public deleteLoading$: BehaviorSubject = new BehaviorSubject(false);\n\n public readonly moduleAccount = I18_NAMESPACE_APPS_UI.account;\n public readonly MbsPopupType = MbsPopupType;\n\n public alternateAccount$: Observable;\n\n constructor(private authService: AuthService, private userService: UserOdataService) {}\n\n ngOnInit(): void {\n this.alternateAccount$ = of(get(this.baseModal, 'data.alternateAccount', ''));\n }\n\n handleDelete(): void {\n this.deleteLoading$.next(true);\n this.authService\n .getAuthUser()\n .pipe(\n switchMap((user) => this.userService.deleteAlternateEmail(user.Id)),\n finalize(() => this.deleteLoading$.next(false))\n )\n .subscribe({\n next: () => {\n this.baseModal.save(true);\n }\n });\n }\n\n handleClose(): void {\n this.baseModal.close();\n }\n}\n","\n\n \n\n

\n {{ moduleAccount + ':modal.body.confirmDeleteAlternateAccount' | i18next: { format: 'capitalize' } }}:\n {{ alternateAccount$ | async }} ?\n

\n\n \n {{ moduleAccount + ':modal.body.confirmDeleteAlternateAccountWarning' | i18next: { format: 'capitalize' } }}.\n \n\n
\n\n \n\n \n {{ moduleAccount + ':modal.button.delete' | i18next: { format: 'title' } }}\n \n\n \n {{ moduleAccount + ':modal.button.cancel' | i18next: { format: 'title' } }}\n \n\n \n\n
\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, OnInit, ViewChild } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { MyAccountRecoveryPassword } from '@common/models';\nimport { AuthService, MyAccountService } from '@common/services';\nimport { getErrorText } from '@common/utils';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { I18NextPipe } from 'angular-i18next';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { MbsPopupType, ModalComponent, ToastService } from 'mbs-ui-kit';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { finalize, map, shareReplay } from 'rxjs/operators';\n\n@UntilDestroy()\n@Component({\n templateUrl: './reset-password-modal.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ResetPasswordModalComponent implements OnInit {\n @ViewChild(ModalComponent, { static: true }) baseModal: ModalComponent;\n\n readonly #toastTitleSuccess = this.i18nPipe.transform('toast.success.title', { format: 'title' });\n\n public loading: BehaviorSubject = new BehaviorSubject(false);\n\n public formGroup: FormGroup;\n public primaryEmail$: Observable;\n\n public readonly moduleAccount = I18_NAMESPACE_APPS_UI.account;\n public readonly MbsPopupType = MbsPopupType;\n\n get alternateEmailCtrl(): FormControl {\n return this.formGroup.get('alternateEmail');\n }\n\n constructor(\n private fb: FormBuilder,\n private authService: AuthService,\n private myAccountService: MyAccountService,\n private toastService: ToastService,\n private i18nPipe: I18NextPipe\n ) {\n this.primaryEmail$ = this.authService.getAuthUser().pipe(\n map((user) => user?.Email),\n shareReplay(1)\n );\n }\n\n ngOnInit(): void {\n this.initForm();\n }\n\n private initForm(): void {\n this.formGroup = this.fb.group({\n alternateEmail: ['', [Validators.required, Validators.email]]\n });\n }\n\n handleSend(): void {\n const payload = {\n Email: this.formGroup.value.alternateEmail\n } as MyAccountRecoveryPassword;\n\n this.loading.next(true);\n this.myAccountService\n .resetAlternatePassword(payload)\n .pipe(\n finalize(() => this.loading.next(false)),\n untilDestroyed(this)\n )\n .subscribe({\n next: () => {\n this.toastService.success('Request was sent successfully', this.#toastTitleSuccess);\n this.handleClose();\n },\n error: (error: HttpErrorResponse) => {\n if (error.status === 400) {\n this.setEmailErrorState(getErrorText(error));\n }\n }\n });\n }\n\n private setEmailErrorState(message: string): void {\n this.alternateEmailCtrl.setValue('');\n this.alternateEmailCtrl.setErrors({ alternateEmail: { message } });\n }\n\n handleClose(): void {\n this.baseModal.close();\n }\n}\n","\n\n \n\n \n {{ moduleAccount + ':modal.body.resetAlternatePassword.toResetYour' | i18next: { format: 'capitalize' } }}\n \n\n \n \n \n \n\n \n\n \n\n \n {{ moduleAccount + ':modal.button.reset' | i18next: { format: 'title' } }}\n \n\n \n {{ moduleAccount + ':modal.button.cancel' | i18next: { format: 'title' } }}\n \n\n \n\n\n","\n\n \n\n

\n {{ moduleAccount + ':modal.body.twoFactorAuthenticationToEnable' | i18next: { format: 'capitalize' } }}\n \n {{ moduleAccount + ':modal.body.twoFactorAuthentication2FA' | i18next: { format: 'capitalize' } }}\n \n {{ moduleAccount + ':modal.body.twoFactorAuthenticationProceedAsFollows' | i18next: { format: 'capitalize' } }}:\n

\n\n
    \n\n
  • \n {{ moduleAccount + ':modal.body.twoFactorAuthenticationOpen' | i18next: { format: 'capitalize' } }}\n \n {{ moduleAccount + ':modal.button.googlePlay' | i18next: { format: 'title' } }}\n \n /\n \n {{ moduleAccount + ':modal.button.appleAppStore' | i18next: { format: 'title' } }}\n \n {{ moduleAccount + ':modal.body.twoFactorAuthenticationOnYour' | i18next: { format: 'capitalize' } }}\n
  • \n\n
  • \n {{ moduleAccount + ':modal.body.twoFactorAuthenticationSearchFor' | i18next: { format: 'capitalize' } }}\n
  • \n\n
  • \n {{ moduleAccount + ':modal.body.twoFactorAuthenticationDownloadAnd' | i18next: { format: 'capitalize' } }}\n
  • \n\n
  • \n {{ moduleAccount + ':modal.body.twoFactorAuthenticationOpenThe' | i18next: { format: 'capitalize' } }}\n
  • \n\n
  • \n {{ moduleAccount + ':modal.body.twoFactorAuthenticationScanThe' | i18next: { format: 'capitalize' } }}\n
    \n
    \n \n
    \n
    \n {{ secret }}\n
    \n
    \n
  • \n\n
  • \n {{ moduleAccount + ':modal.body.twoFactorAuthenticationEnterThe2FA' | i18next: { format: 'capitalize' } }}\n\n \n \n \n \n\n \n \n \n \n
  • \n\n
\n\n
\n\n \n\n \n {{ moduleAccount + ':modal.button.validate' | i18next: { format: 'title' } }}\n \n\n \n {{ moduleAccount + ':modal.button.cancel' | i18next: { format: 'title' } }}\n \n\n \n\n
\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, OnInit, ViewChild } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { APPEND_BUTTON_PASSWORD_STATE, ODataError } from '@common';\nimport { UserOdataService } from '@common/services';\nimport { getAppendButtonsIcon, getAppendButtonsState, hasAppendButtonsPasswordType } from '@common/utils';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { MbsValidators, ModalComponent } from 'mbs-ui-kit';\nimport { BehaviorSubject } from 'rxjs';\nimport { finalize } from 'rxjs/operators';\n\ntype PartialUserData = { id: string; email: string };\n\n@UntilDestroy()\n@Component({\n templateUrl: './two-factor-authentication.component.html',\n styleUrls: ['./two-factor-authentication.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TwoFactorAuthenticationComponent implements OnInit {\n @ViewChild(ModalComponent, { static: true }) baseModal: ModalComponent;\n\n #user: PartialUserData;\n\n public validateLoading$: BehaviorSubject = new BehaviorSubject(false);\n public loading$: BehaviorSubject = new BehaviorSubject(false);\n public disabled$: BehaviorSubject = new BehaviorSubject(true);\n\n public passwordType$: BehaviorSubject = new BehaviorSubject(APPEND_BUTTON_PASSWORD_STATE.hidden.type);\n\n public formGroup: FormGroup;\n public secret = '';\n\n public twoStepQRURL = '';\n public readonly moduleAccount = I18_NAMESPACE_APPS_UI.account;\n\n public readonly getAppendButtonsIcon = getAppendButtonsIcon;\n set user(value: PartialUserData) {\n this.#user = value;\n }\n\n get user(): PartialUserData {\n return this.#user;\n }\n\n get passwordControl(): FormControl {\n return this.formGroup.get('password');\n }\n\n constructor(private fb: FormBuilder, private userService: UserOdataService) {}\n\n ngOnInit(): void {\n this.user = this.baseModal.data.user as PartialUserData;\n this.initForm();\n\n this.loading$.next(true);\n this.userService\n .getSecretForAlternate(this.user.id)\n .pipe(\n finalize(() => this.loading$.next(false)),\n untilDestroyed(this)\n )\n .subscribe({\n next: (secret) => {\n this.secret = secret;\n this.twoStepQRURL = `otpauth://totp/MSP360:${this.user.email}?secret=${secret}`;\n },\n error: () => {\n this.formGroup.setErrors({ noSecret: true });\n this.secret = 'Error while getting secret';\n }\n });\n }\n\n private initForm(): void {\n this.formGroup = this.fb.group({\n responseCode: [null, [Validators.required]],\n password: [null, [Validators.required, MbsValidators.passwordValidator, Validators.maxLength(20)]]\n });\n }\n\n handleValidate(): void {\n const { password, responseCode } = this.formGroup.value;\n\n this.validateLoading$.next(true);\n this.userService\n .enableAlternateTwoStep(this.user.id, password, responseCode)\n .pipe(\n finalize(() => this.validateLoading$.next(false)),\n untilDestroyed(this)\n )\n .subscribe({\n next: () => {\n this.baseModal.save(true);\n },\n error: (res: HttpErrorResponse) => {\n if (res.status === 400) {\n const odataError = res.error as ODataError;\n const errorText = odataError && odataError.value ? odataError.value : null;\n\n this.setPasswordErrorState(errorText);\n }\n }\n });\n }\n\n private setPasswordErrorState(message: string): void {\n this.passwordControl.setValue('');\n this.passwordControl.setErrors({ password: { message } });\n }\n\n handleClose(): void {\n this.baseModal.close();\n }\n\n handleChangePasswordType(): void {\n const isPasswordType: boolean = hasAppendButtonsPasswordType(this.passwordType$.value);\n\n this.passwordType$.next(APPEND_BUTTON_PASSWORD_STATE[getAppendButtonsState(isPasswordType)].type);\n }\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, OnInit, ViewChild } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { APPEND_BUTTON_PASSWORD_STATE, ODataError } from '@common';\nimport { UserOdataService } from '@common/services';\nimport { getAppendButtonsIcon, getAppendButtonsState, hasAppendButtonsPasswordType } from '@common/utils';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { MbsValidators, ModalComponent } from 'mbs-ui-kit';\nimport { BehaviorSubject } from 'rxjs';\nimport { finalize } from 'rxjs/operators';\n\n@UntilDestroy()\n@Component({\n templateUrl: './two-factor-disable.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TwoFactorDisableComponent implements OnInit {\n @ViewChild(ModalComponent, { static: true }) baseModal: ModalComponent;\n\n #userId: string;\n\n public disableLoading$: BehaviorSubject = new BehaviorSubject(false);\n public loading$: BehaviorSubject = new BehaviorSubject(false);\n public passwordType$: BehaviorSubject = new BehaviorSubject(APPEND_BUTTON_PASSWORD_STATE.hidden.type);\n\n public readonly moduleAccount = I18_NAMESPACE_APPS_UI.account;\n public readonly getAppendButtonsIcon = getAppendButtonsIcon;\n\n public formGroup: FormGroup;\n\n set userId(value: string) {\n this.#userId = value;\n }\n\n get userId(): string {\n return this.#userId;\n }\n\n get passwordControl(): FormControl {\n return this.formGroup.get('password');\n }\n\n constructor(private fb: FormBuilder, private userService: UserOdataService) {}\n\n ngOnInit(): void {\n this.userId = this.baseModal.data.id;\n this.initForm();\n }\n\n private initForm(): void {\n this.formGroup = this.fb.group({\n password: [null, [Validators.required, MbsValidators.passwordValidator, Validators.maxLength(20)]]\n });\n }\n\n handleDisable(): void {\n const password = this.passwordControl.value;\n\n this.disableLoading$.next(true);\n this.userService\n .disableAlternateTwoStep(this.userId, password)\n .pipe(\n finalize(() => this.disableLoading$.next(false)),\n untilDestroyed(this)\n )\n .subscribe({\n next: () => {\n this.baseModal.save(true);\n },\n error: (res: HttpErrorResponse) => {\n if (res.status === 400) {\n const odataError = res.error as ODataError;\n const errorText = odataError && odataError.value ? odataError.value : null;\n\n this.setPasswordErrorState(errorText);\n }\n }\n });\n }\n\n private setPasswordErrorState(message: string): void {\n this.passwordControl.setValue('');\n this.passwordControl.setErrors({ password: { message } });\n }\n\n handleClose(): void {\n this.baseModal.close();\n }\n\n handleChangePasswordType(): void {\n const isPasswordType: boolean = hasAppendButtonsPasswordType(this.passwordType$.value);\n\n this.passwordType$.next(APPEND_BUTTON_PASSWORD_STATE[getAppendButtonsState(isPasswordType)].type);\n }\n}\n","\n\n \n\n \n \n \n \n\n \n\n \n\n \n {{ moduleAccount + ':modal.button.disable' | i18next: { format: 'title' } }}\n \n\n \n {{ moduleAccount + ':modal.button.cancel' | i18next: { format: 'title' } }}\n \n\n \n\n\n\n","
\n\n \n\n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n\n \n\n \n\n
\n {{ moduleAccount + ':sidepanel.label.alternateEmail' | i18next: { format: 'title' } }}\n \n \n \n {{ moduleAccount + ':sidepanel.text.verified' | i18next: { format: 'title' } }}\n \n \n \n \n \n \n {{ moduleAccount + ':sidepanel.text.notVerified' | i18next: { format: 'title' } }}\n \n \n \n
\n\n \n {{ alternateEmailControl.value }}\n \n \n\n
\n\n \n\n
\n {{ moduleAccount + ':sidepanel.label.alternatePassword' | i18next: { format: 'title' } }}\n
\n\n
\n\n
\n \n {{ moduleAccount + ':sidepanel.button.resetPassword' | i18next: { format: 'title' } }}\n \n
\n\n
\n \n {{ moduleAccount + ':sidepanel.button.changePassword' | i18next: { format: 'title' } }}\n \n
\n\n
\n\n
\n\n
\n\n
\n\n \n
\n \n {{ moduleAccount + ':sidepanel.text.twoFactorSubTitle' | i18next: { format: 'title' } }}\n\n \n \n {{ moduleAccount + ':sidepanel.text.enabled' | i18next: { format: 'title' } }}\n \n\n
\n\n \n \n {{ moduleAccount + ':sidepanel.button.disable' | i18next: { format: 'title' } }}\n \n \n\n \n
\n
\n

\n {{ moduleAccount + ':sidepanel.text.twoFactorText' | i18next: { format: 'capitalize' } }}\n

\n
\n
\n\n \n {{ moduleAccount + ':sidepanel.button.enableTwoFactorAuthentication' | i18next: { format: 'title' } }}\n \n
\n\n
\n\n \n \n {{ moduleAccount + ':sidepanel.button.deleteAlternateAccount' | i18next: { format: 'title' } }}\n \n \n\n
\n","import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, Input, OnInit, Output } from '@angular/core';\nimport { ControlValueAccessor, FormBuilder, FormControl, FormGroup, NG_VALUE_ACCESSOR, Validators } from '@angular/forms';\nimport { APPEND_BUTTON_PASSWORD_STATE, CustomCVAccessor } from '@common';\nimport { ChangeEmailModalComponent } from '@common/components/modals/change-email-modal/change-email-modal.component';\nimport { ChangePasswordModalComponent } from '@common/components/modals/change-password-modal/change-password-modal.component';\nimport { AlternateAccountTabForm } from '@common/components/my-account/my-account-sidepanel/my-account-sidepanel.model';\nimport { MyAccountSidepanelService } from '@common/components/my-account/my-account-sidepanel/my-account-sidepanel.service';\nimport { DeleteAlternateAccountModalComponent } from '@common/components/my-account/tabs/alternate-account-tab/delete-alternate-account-modal/delete-alternate-account-modal.component';\nimport { ResetPasswordModalComponent } from '@common/components/my-account/tabs/alternate-account-tab/reset-password-modal/reset-password-modal.component';\nimport { TwoFactorAuthenticationComponent } from '@common/components/my-account/tabs/alternate-account-tab/two-factor-authentication/two-factor-authentication.component';\nimport { TwoFactorDisableComponent } from '@common/components/my-account/tabs/alternate-account-tab/two-factor-disable/two-factor-disable.component';\nimport { AlternateEmail, AuthUser, hasAdminRole, hasSingleUserRole } from '@common/models';\nimport { AuthService, UserOdataService } from '@common/services';\nimport { getAppendButtonsIcon, getAppendButtonsState, hasAppendButtonsPasswordType, isConfirmPasswordValidator } from '@common/utils';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { I18NextPipe } from 'angular-i18next';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { camelCase, isEqual } from 'lodash';\nimport {\n InputButton,\n MbsSize,\n MbsValidators,\n ModalService,\n ModalSettings,\n TabBase,\n TabsetItemDirective,\n TabsService,\n ToastService\n} from 'mbs-ui-kit';\nimport { BehaviorSubject, from, noop, Observable, of } from 'rxjs';\nimport { catchError, distinctUntilChanged, finalize, first, map, share, switchMap, tap } from 'rxjs/operators';\n\n@UntilDestroy()\n@Component({\n selector: 'app-my-account-alternate-account-tab',\n templateUrl: './alternate-account-tab.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MyAccountAlternateAccountTabComponent),\n multi: true\n }\n ]\n})\nexport class MyAccountAlternateAccountTabComponent extends TabBase implements ControlValueAccessor, OnInit {\n @Output() changeAlternateEmail = new EventEmitter();\n @Output() deleteAlternateEmail = new EventEmitter();\n\n @Input() set alternateEmailVerified(state: boolean) {\n this.verifyEmail$.next(state);\n }\n @Input() set twoStepEnabled(state: boolean) {\n this.twoStepEnabled$.next(state);\n }\n @Input() set initialAlternateEmail(value: string) {\n this.initialAlternateEmail$.next(value);\n }\n\n #settings: AlternateAccountTabForm;\n readonly #toastTitleSuccess = this.i18nPipe.transform('toast.success.title', { format: 'title' });\n\n public changePasswordLoading$: BehaviorSubject = new BehaviorSubject(false);\n public twoFALoading$: BehaviorSubject = new BehaviorSubject(false);\n public twoStepEnabled$: BehaviorSubject = new BehaviorSubject(false);\n public passwordType$: BehaviorSubject = new BehaviorSubject(APPEND_BUTTON_PASSWORD_STATE.hidden.type);\n public confirmPasswordType$: BehaviorSubject = new BehaviorSubject(APPEND_BUTTON_PASSWORD_STATE.hidden.type);\n public verifyEmailLoading$: BehaviorSubject = new BehaviorSubject(false);\n public deleteEmailLoading$: BehaviorSubject = new BehaviorSubject(false);\n public verifyEmail$: BehaviorSubject = new BehaviorSubject(false);\n public initialAlternateEmail$: BehaviorSubject = new BehaviorSubject(null);\n\n private readonly user$: Observable;\n private readonly close$: Observable;\n\n public readonly isAdminOrSingleUserRole$: Observable;\n public readonly getAppendButtonsIcon = getAppendButtonsIcon;\n public readonly moduleAccount = I18_NAMESPACE_APPS_UI.account;\n public readonly MbsSize = MbsSize;\n\n public formGroup: FormGroup;\n\n private onChange: (value: CustomCVAccessor) => void;\n private onTouched: () => void;\n\n set settings(settings: AlternateAccountTabForm) {\n this.#settings = settings;\n this.notifyValueChange();\n }\n\n get settings(): AlternateAccountTabForm {\n return this.#settings;\n }\n\n get alternateEmailControl(): FormControl {\n return this.formGroup.get('alternateEmail');\n }\n\n get passwordControl(): FormControl {\n return this.formGroup.get('password');\n }\n\n get confirmPasswordControl(): FormControl {\n return this.formGroup.get('confirmPassword');\n }\n\n constructor(\n private authService: AuthService,\n private fb: FormBuilder,\n private i18nPipe: I18NextPipe,\n private modalService: ModalService,\n private myAccountSidepanelService: MyAccountSidepanelService,\n private toastService: ToastService,\n private userService: UserOdataService,\n tabService: TabsService,\n tabsetItem: TabsetItemDirective\n ) {\n super(tabService, tabsetItem);\n this.user$ = this.authService.getAuthUser().pipe(share());\n this.close$ = this.myAccountSidepanelService.sidepanel.close;\n this.isAdminOrSingleUserRole$ = this.authService.getRoles().pipe(map((roles) => hasAdminRole(roles) || hasSingleUserRole(roles)));\n }\n\n ngOnInit(): void {\n this.initForm();\n\n this.formGroup.valueChanges\n .pipe(\n distinctUntilChanged((prev, curr) => isEqual(prev, curr)),\n untilDestroyed(this)\n )\n .subscribe((settings: AlternateAccountTabForm) => {\n this.settings = settings;\n this.valid = this.formGroup.valid;\n });\n\n this.initialAlternateEmail$.pipe(untilDestroyed(this)).subscribe((alternateEmail) => this.checkExtraControls(alternateEmail));\n this.close$.pipe(untilDestroyed(this)).subscribe(() => this.resetFormGroup());\n }\n\n private initForm(): void {\n this.formGroup = this.fb.group({\n alternateEmail: [''],\n password: [''],\n confirmPassword: ['']\n });\n\n this.form = this.formGroup;\n }\n\n private checkExtraControls(alternateEmail: string): void {\n const action = (condition: boolean) => (condition ? 'disable' : 'enable');\n const options = { emitEvent: false };\n const hasAlternateEmail = Boolean(alternateEmail);\n\n this.passwordControl[action(hasAlternateEmail)](options);\n this.confirmPasswordControl[action(hasAlternateEmail)](options);\n }\n\n registerOnChange(fn: (value: CustomCVAccessor) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n writeValue(settings: CustomCVAccessor): void {\n if (!settings) return;\n\n this.updateFormValue(settings.data);\n this.settings = settings.data;\n }\n\n notifyValueChange(): void {\n const value: CustomCVAccessor = {\n valid: this.formGroup.valid,\n data: this.settings\n };\n\n this.onChange && this.onChange(value);\n this.onTouched && this.onTouched();\n }\n\n updateFormValue(settings: AlternateAccountTabForm): void {\n this.resetFormGroup();\n\n if (settings.alternateEmail) this.alternateEmailControl.setValue(settings.alternateEmail, { emitEvent: false });\n if (settings.password) this.passwordControl.setValue(null, { emitEvent: false });\n if (settings.confirmPassword) this.confirmPasswordControl.setValue(null, { emitEvent: false });\n\n this.updateValidators();\n this.afterFormInit();\n }\n\n private resetFormGroup(options: { onlySelf?: boolean; emitEvent?: boolean } = { emitEvent: false }): void {\n this.valid = true;\n this.formGroup.reset(this.defaultFormValue(), options);\n }\n\n private defaultFormValue = (): AlternateAccountTabForm => ({\n alternateEmail: '',\n password: '',\n confirmPassword: ''\n });\n\n private updateValidators(): void {\n const hasAlternateEmail = this.initialAlternateEmail$.value;\n\n if (hasAlternateEmail) {\n this.formGroup.clearValidators();\n this.alternateEmailControl.clearValidators();\n this.passwordControl.clearValidators();\n this.confirmPasswordControl.clearValidators();\n } else {\n this.formGroup.setValidators(isConfirmPasswordValidator.bind({}, { password: 'password', confirmPassword: 'confirmPassword' }));\n this.alternateEmailControl.setValidators([Validators.required, Validators.email]);\n this.passwordControl.setValidators([\n Validators.required,\n MbsValidators.createPasswordValidator({ minlength: 7, maxlength: 20, pattern: '\\\\S+' })\n ]);\n this.confirmPasswordControl.setValidators(Validators.required);\n }\n\n this.formGroup.updateValueAndValidity();\n this.formGroup.markAsUntouched();\n }\n\n handleChangeEmail(): void {\n this.user$\n .pipe(\n switchMap((user) => {\n const settings: ModalSettings = {\n size: MbsSize.sm,\n data: user.Id\n };\n\n return from(this.modalService.openCustom(ChangeEmailModalComponent, settings)).pipe(catchError(() => of(null)));\n }),\n switchMap((result) => {\n if (!result) return of(null);\n\n this.verifyEmailLoading$.next(true);\n return this.user$.pipe(\n switchMap((user) => {\n return this.userService.getAlternateEmail(user.Id).pipe(\n finalize(() => this.verifyEmailLoading$.next(false)),\n untilDestroyed(this)\n );\n })\n );\n }),\n first()\n )\n .subscribe({\n next: (info) => {\n if (!info) return;\n\n const toastBody = this.i18nPipe.transform(this.moduleAccount + ':toast.body.changeAlternateEmail', { format: 'capitalize' });\n this.toastService.success(toastBody, this.#toastTitleSuccess);\n\n this.verifyEmail$.next(info.Verified);\n this.twoStepEnabled$.next(info.TwoStepEnabled);\n this.initialAlternateEmail$.next(info.Email);\n this.changeAlternateEmail.emit();\n },\n error: () => {\n this.verifyEmail$.next(false);\n }\n });\n }\n\n handleDeleteAlternateAccount(): void {\n const settings: ModalSettings = {\n size: MbsSize.sm,\n data: {\n alternateAccount: this.initialAlternateEmail$.value\n }\n };\n\n this.modalService\n .openCustom(DeleteAlternateAccountModalComponent, settings)\n .then((result) => {\n if (!result) return;\n\n this.deleteAlternateEmail.emit();\n this.afterFormInit();\n\n const toastBody = this.i18nPipe.transform(this.moduleAccount + ':toast.body.deleteAlternateAccount', { format: 'capitalize' });\n\n this.toastService.success(toastBody, this.#toastTitleSuccess);\n })\n .catch(noop);\n }\n\n handleEnableTwoFA(): void {\n this.user$\n .pipe(\n switchMap((user) => {\n const settings: ModalSettings = {\n size: MbsSize.sm,\n data: {\n user: {\n id: user.Id,\n email: user.Email\n }\n }\n };\n\n return from(this.modalService.openCustom(TwoFactorAuthenticationComponent, settings)).pipe(catchError(() => of(null)));\n }),\n tap((result: boolean) => result && this.twoFALoading$.next(true)),\n switchMap((result) => (result ? this.getAlternateEmail() : of(null))),\n finalize(() => this.twoFALoading$.next(false))\n )\n .subscribe({\n next: (info) => {\n if (!info) return;\n\n const toastBody = this.i18nPipe.transform(this.moduleAccount + ':toast.body.enableTwoFA', { format: 'capitalize' });\n this.toastService.success(toastBody, this.#toastTitleSuccess);\n\n this.twoStepEnabled$.next(info.TwoStepEnabled);\n }\n });\n }\n\n handleDisableTwoFA(): void {\n this.user$\n .pipe(\n switchMap((user) => {\n const settings: ModalSettings = {\n size: MbsSize.sm,\n data: { id: user.Id }\n };\n\n return from(this.modalService.openCustom(TwoFactorDisableComponent, settings)).pipe(catchError(() => of(null)));\n }),\n tap((result: boolean) => result && this.twoFALoading$.next(true)),\n switchMap((result) => (result ? this.getAlternateEmail() : of(null))),\n finalize(() => this.twoFALoading$.next(false))\n )\n .subscribe({\n next: (info) => {\n if (!info) return;\n\n const toastBody = this.i18nPipe.transform(this.moduleAccount + ':toast.body.disableTwoFA', { format: 'capitalize' });\n this.toastService.success(toastBody, this.#toastTitleSuccess);\n\n this.twoStepEnabled$.next(info.TwoStepEnabled);\n }\n });\n }\n\n private getAlternateEmail(): Observable {\n return this.user$.pipe(switchMap((user) => this.userService.getAlternateEmail(user.Id)));\n }\n\n handleChangePassword(): void {\n this.user$\n .pipe(\n switchMap((user) => {\n const settings: ModalSettings = {\n size: MbsSize.sm,\n data: user.Id\n };\n\n return from(this.modalService.openCustom(ChangePasswordModalComponent, settings)).pipe(\n tap(() => this.changePasswordLoading$.next(true)),\n map(() => true),\n catchError(() => of(null))\n );\n }),\n finalize(() => this.changePasswordLoading$.next(false)),\n first()\n )\n .subscribe({\n next: (result) => {\n if (!result) return;\n\n const toastBody = this.i18nPipe.transform(this.moduleAccount + ':toast.body.changeAlternatePassword', { format: 'capitalize' });\n this.toastService.success(toastBody, this.#toastTitleSuccess);\n }\n });\n }\n\n handleResetPassword(): void {\n const settings: ModalSettings = {\n size: MbsSize.sm\n };\n\n this.modalService.openCustom(ResetPasswordModalComponent, settings).catch(noop);\n }\n\n handleChangePasswordType(event: InputButton): void {\n if (!event) return;\n\n const id = camelCase(event.id.replace('append', ''));\n const subjectById: BehaviorSubject = this[id + 'Type$'];\n const isPasswordType: boolean = hasAppendButtonsPasswordType(subjectById.getValue());\n\n subjectById.next(APPEND_BUTTON_PASSWORD_STATE[getAppendButtonsState(isPasswordType)].type);\n }\n}\n","
\n\n \n\n
\n\n \n
\n
\n {{ moduleAccount + ':sidepanel.text.currentDestination' | i18next: { format: 'title' } }}:\n
\n
\n \n \n \n {{ formGroup.get('name').value }}\n \n \n
\n
\n
\n\n \n {{ moduleAccount + ':sidepanel.text.currentDestination' | i18next: { format: 'title' } }}:\n \n \n {{ moduleAccount + ':sidepanel.text.notVerified' | i18next: { format: 'title' } }}\n \n \n\n
\n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n
\n\n \n\n
\n\n
\n \n {{ moduleAccount + ':sidepanel.button.deleteDestination' | i18next: { format: 'title' } }}\n \n
\n\n
\n \n {{ moduleAccount + ':sidepanel.button.testAccess' | i18next: { format: 'title' } }}\n \n
\n\n
\n\n
\n\n
\n\n\n

\n {{ moduleAccount + ':modal.body.confirmDeleteBackupDestinationDeleteThe' | i18next: { format: 'capitalize' } }}:\n {{ settings?.name }} ?\n

\n\n \n {{ moduleAccount + ':modal.body.confirmDeleteBackupDestinationUserBackups' | i18next: { format: 'capitalize' } }}.\n \n\n
\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, forwardRef, Input, OnInit, TemplateRef, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, FormBuilder, FormControl, NG_VALUE_ACCESSOR, UntypedFormGroup, Validators } from '@angular/forms';\nimport { CustomCVAccessor, SECRET_KEY_MASK } from '@common';\nimport { BackupDestinationTabForm } from '@common/components/my-account/my-account-sidepanel/my-account-sidepanel.model';\nimport { MyAccountSidepanelService } from '@common/components/my-account/my-account-sidepanel/my-account-sidepanel.service';\nimport { BackupDestination, StorageStateEnum, StorageTypes } from '@common/models';\nimport { MyAccountService } from '@common/services';\nimport { convertFirstChartObjectKeyToUpperCase, getErrorText, hasErrorResponseText } from '@common/utils';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { I18NextPipe } from 'angular-i18next';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { isEqual, isNil } from 'lodash';\nimport { MbsPopupType, ModalService, TabBase, TabsetItemDirective, TabsService, ToastService } from 'mbs-ui-kit';\nimport { BehaviorSubject, from, Observable, of } from 'rxjs';\nimport { distinctUntilChanged, finalize, map, switchMap } from 'rxjs/operators';\n\n@UntilDestroy()\n@Component({\n selector: 'app-my-account-backup-destination-tab',\n templateUrl: './backup-destination-tab.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MyAccountBackupDestinationTabComponent),\n multi: true\n }\n ]\n})\nexport class MyAccountBackupDestinationTabComponent extends TabBase implements ControlValueAccessor, OnInit {\n @ViewChild('deleteBDestinationConfirmTempRef', { static: true, read: TemplateRef }) deleteConfirmTempRef: TemplateRef;\n\n @Input() readonly = false;\n\n readonly #toastTitleSuccess = this.i18nPipe.transform('toast.success.title', { format: 'title' });\n readonly #toastTitleError = this.i18nPipe.transform('toast.error.title', { format: 'title' });\n readonly #toastTitleWarning = this.i18nPipe.transform('toast.warning.title', { format: 'title' });\n\n private readonly close$: Observable;\n\n public readonly moduleAccount = I18_NAMESPACE_APPS_UI.account;\n public readonly MbsPopupType = MbsPopupType;\n public readonly storageTypes: string[];\n public readonly secretKeyIconClasses = {\n lock: 'fa fa-lock',\n unlock: 'fa fa-unlock-alt'\n };\n\n public readonly disableDelete$: BehaviorSubject = new BehaviorSubject(false);\n public readonly disabledSecretKey$: BehaviorSubject = new BehaviorSubject(false);\n public readonly verified$: BehaviorSubject = new BehaviorSubject(false);\n public readonly testLoading$: BehaviorSubject = new BehaviorSubject(false);\n public readonly deleteLoading$: BehaviorSubject = new BehaviorSubject(false);\n\n public formGroup: UntypedFormGroup;\n\n private onChange: (value: CustomCVAccessor) => void;\n private onTouched: () => void;\n\n private _settings: BackupDestinationTabForm;\n set settings(settings: BackupDestinationTabForm) {\n this._settings = settings;\n this.notifyValueChange();\n }\n\n get settings(): BackupDestinationTabForm {\n return this._settings;\n }\n\n get storageTypeControl(): FormControl {\n return this.formGroup.get('storageType');\n }\n\n get secretKeyControl(): FormControl {\n return this.formGroup.get('secretKey');\n }\n\n get bucketNameLabelKey(): string {\n switch (this.storageTypeControl.value) {\n case StorageTypes.azureStack:\n case StorageTypes.azure:\n return 'container';\n default:\n return 'bucketName';\n }\n }\n\n get accessKeyLabelKey(): string {\n switch (this.storageTypeControl.value) {\n case StorageTypes.azureStack:\n case StorageTypes.azure:\n return 'storageAccountName';\n case StorageTypes.backBlaze:\n return 'accountID';\n default:\n return 'accessKey';\n }\n }\n\n get secretKeyLabelKey(): string {\n switch (this.storageTypeControl.value) {\n case StorageTypes.azureStack:\n case StorageTypes.azure:\n return 'key1';\n case StorageTypes.backBlaze:\n return 'applicationKey';\n default:\n return 'secretKey';\n }\n }\n\n get isAvailableEndpoint(): boolean {\n return (\n this.storageTypeControl.value === StorageTypes.s3compatible ||\n this.storageTypeControl.value === StorageTypes.minio ||\n this.storageTypeControl.value === StorageTypes.swift ||\n this.storageTypeControl.value === StorageTypes.wasabi\n );\n }\n\n get isAvailableEndpointSuffix(): boolean {\n return this.storageTypeControl.value === StorageTypes.azureStack;\n }\n\n get verifiedTooltip(): string {\n return `${this.i18nPipe.transform(this.moduleAccount + ':sidepanel.tooltip.currentDestination', { format: 'title' })}: ${\n this.formGroup.get('name').value as string\n }`;\n }\n\n constructor(\n private fb: FormBuilder,\n private i18nPipe: I18NextPipe,\n private myAccountService: MyAccountService,\n private myAccountSidepanelService: MyAccountSidepanelService,\n private toastService: ToastService,\n private modalService: ModalService,\n tabService: TabsService,\n tabsetItem: TabsetItemDirective\n ) {\n super(tabService, tabsetItem);\n this.close$ = myAccountSidepanelService.sidepanel.close;\n this.storageTypes = Object.values(StorageTypes);\n }\n\n ngOnInit(): void {\n this.initForm();\n\n this.formGroup.valueChanges\n .pipe(\n distinctUntilChanged((prev, curr) => isEqual(prev, curr)),\n untilDestroyed(this)\n )\n .subscribe({\n next: (settings: BackupDestinationTabForm) => {\n this.settings = settings;\n this.valid = this.formGroup.valid;\n }\n });\n\n this.storageTypeControl.valueChanges.pipe(distinctUntilChanged(), untilDestroyed(this)).subscribe({\n next: () => {\n const exceptions = {\n storageType: this.storageTypeControl.value,\n secretKey: null\n };\n this.formGroup.reset(this.defaultFormValue(exceptions), { emitEvent: false });\n this.checkExtraControls();\n }\n });\n\n this.close$.pipe(untilDestroyed(this)).subscribe({\n next: () => {\n const exceptions = {\n storageType: StorageTypes.amazonS3\n };\n this.formGroup.reset(this.defaultFormValue(exceptions), { emitEvent: false });\n this.checkExtraControls();\n }\n });\n }\n\n private initForm(): void {\n this.formGroup = this.fb.group({\n storageType: [StorageTypes.amazonS3, [Validators.required]],\n name: ['', [Validators.required, Validators.maxLength(50)]],\n bucketName: ['', [Validators.required, Validators.maxLength(50)]],\n rootFolder: ['', [Validators.required, Validators.maxLength(50)]],\n accessKey: ['', [Validators.required]],\n secretKey: ['', [Validators.required, Validators.maxLength(150)]],\n endpoint: ['', [Validators.required]],\n endpointSuffix: ['', [Validators.required]]\n });\n\n this.checkExtraControls();\n this.form = this.formGroup;\n }\n\n private checkExtraControls(): void {\n const action = (condition: boolean) => (condition ? 'enable' : 'disable');\n const options = { emitEvent: false };\n\n this.formGroup.get('endpoint')[action(this.isAvailableEndpoint)](options);\n this.formGroup.get('endpointSuffix')[action(this.isAvailableEndpointSuffix)](options);\n }\n\n registerOnChange(fn: (value: CustomCVAccessor) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n writeValue(settings: CustomCVAccessor): void {\n this.disableDelete$.next(isNil(settings));\n if (!settings) return;\n\n this.updateFormValue(settings.data);\n this.settings = settings.data;\n this.checkExtraControls();\n }\n\n notifyValueChange(): void {\n const value: CustomCVAccessor = {\n valid: this.formGroup.valid,\n data: this.settings\n };\n\n this.onChange && this.onChange(value);\n this.onTouched && this.onTouched();\n }\n\n updateFormValue(settings: BackupDestinationTabForm): void {\n this.verified$.next(false);\n this.disabledSecretKey$.next(Boolean(settings.secretKey));\n\n this.resetFormGroup();\n\n if (settings.storageType) this.formGroup.get('storageType').setValue(settings.storageType, { emitEvent: false });\n if (settings.name) this.formGroup.get('name').setValue(settings.name, { emitEvent: false });\n if (settings.bucketName) this.formGroup.get('bucketName').setValue(settings.bucketName, { emitEvent: false });\n if (settings.rootFolder) this.formGroup.get('rootFolder').setValue(settings.rootFolder, { emitEvent: false });\n if (settings.accessKey) this.formGroup.get('accessKey').setValue(settings.accessKey, { emitEvent: false });\n if (settings.secretKey) this.formGroup.get('secretKey').setValue(settings.secretKey, { emitEvent: false });\n if (settings.endpoint) this.formGroup.get('endpoint').setValue(settings.endpoint, { emitEvent: false });\n if (settings.endpointSuffix) this.formGroup.get('endpointSuffix').setValue(settings.endpointSuffix, { emitEvent: false });\n\n this.afterFormInit();\n }\n\n private resetFormGroup(options: { onlySelf?: boolean; emitEvent?: boolean } = { emitEvent: false }): void {\n this.formGroup.reset(this.defaultFormValue(), options);\n }\n\n private defaultFormValue = (exceptions: Partial = {}): BackupDestinationTabForm => {\n return {\n storageType: exceptions.storageType || StorageTypes.amazonS3,\n name: exceptions.name || '',\n bucketName: exceptions.bucketName || '',\n rootFolder: exceptions.rootFolder || '',\n accessKey: exceptions.accessKey || '',\n secretKey: exceptions.secretKey || '',\n endpoint: exceptions.endpoint || '',\n endpointSuffix: exceptions.endpointSuffix || ''\n };\n };\n\n handleDelete(): void {\n from(\n this.modalService.open(\n {\n header: { title: this.i18nPipe.transform(this.moduleAccount + ':modal.title.confirmBackupDeletion', { format: 'title' }) },\n footer: {\n okButton: { text: this.i18nPipe.transform(this.moduleAccount + ':modal.button.delete', { format: 'title' }), type: 'danger' }\n }\n },\n this.deleteConfirmTempRef\n )\n )\n .pipe(\n switchMap((confirmed) => {\n this.deleteLoading$.next(true);\n return confirmed\n ? this.myAccountService.deleteStorage().pipe(\n finalize(() => this.deleteLoading$.next(false)),\n map(() => true)\n )\n : of(false);\n })\n )\n .subscribe({\n next: (result: boolean) => {\n if (!result) return;\n\n this.resetFormGroup({ emitEvent: true });\n this.readonly = false;\n\n this.toastService.success(\n this.i18nPipe.transform(this.moduleAccount + ':toast.body.confirmBackupDeletion', { format: 'capitalize' }),\n this.#toastTitleSuccess\n );\n },\n error: (res: HttpErrorResponse) => hasErrorResponseText(res) && this.toastService.error(getErrorText(res), this.#toastTitleError)\n });\n }\n\n handleTest(): void {\n const payload = { ...this.formGroup.value };\n payload.secretKey = payload.secretKey === SECRET_KEY_MASK ? null : payload.secretKey;\n // TODO: need delete after fix in mbs-select (shared 1.3)\n payload.storageType = payload.storageType || this.storageTypeControl.value;\n const convertedPayload = convertFirstChartObjectKeyToUpperCase(payload);\n\n this.testLoading$.next(true);\n this.myAccountService\n .testStorage(convertedPayload)\n .pipe(\n map((result) => result.value === StorageStateEnum.ok),\n finalize(() => this.testLoading$.next(false)),\n untilDestroyed(this)\n )\n .subscribe({\n next: (state) => {\n this.verified$.next(state);\n const storage = this.formGroup.get('name').value;\n\n if (state) {\n this.toastService.success(\n this.i18nPipe.transform(this.moduleAccount + ':toast.body.test.success', { format: 'capitalize', storage }),\n this.#toastTitleSuccess\n );\n } else {\n this.toastService.warn(\n this.i18nPipe.transform(this.moduleAccount + ':toast.body.test.warning', { format: 'capitalize', storage }),\n this.#toastTitleWarning\n );\n }\n },\n error: () => {\n this.toastService.error(\n this.i18nPipe.transform(this.moduleAccount + ':toast.body.test.error', { format: 'capitalize' }),\n this.#toastTitleError\n );\n }\n });\n }\n\n handleToggleDisabledSecretKey(): void {\n this.disabledSecretKey$.next(!this.disabledSecretKey$.value);\n\n if (!this.disabledSecretKey$.value && this.secretKeyControl.value === SECRET_KEY_MASK) {\n this.secretKeyControl.setValue('');\n }\n\n if (this.disabledSecretKey$.value && this.secretKeyControl.value === '') {\n this.secretKeyControl.setValue(SECRET_KEY_MASK);\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, OnInit, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { APPEND_BUTTON_PASSWORD_STATE } from '@common';\nimport { getAppendButtonsIcon, getAppendButtonsState, hasAppendButtonsPasswordType, isConfirmPasswordValidator } from '@common/utils';\nimport { UntilDestroy } from '@ngneat/until-destroy';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { camelCase } from 'lodash';\nimport { InputButton, MbsPopupType, ModalComponent } from 'mbs-ui-kit';\nimport { BehaviorSubject } from 'rxjs';\n\n@UntilDestroy()\n@Component({\n templateUrl: './allowed-modal.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AllowedModalComponent implements OnInit {\n @ViewChild(ModalComponent, { static: true }) baseModal: ModalComponent;\n\n public loading$: BehaviorSubject = new BehaviorSubject(true);\n\n public passwordType$: BehaviorSubject = new BehaviorSubject(APPEND_BUTTON_PASSWORD_STATE.hidden.type);\n public confirmPasswordType$: BehaviorSubject = new BehaviorSubject(APPEND_BUTTON_PASSWORD_STATE.hidden.type);\n\n public readonly moduleAccount = I18_NAMESPACE_APPS_UI.account;\n public readonly MbsPopupType = MbsPopupType;\n public readonly getAppendButtonsIcon = getAppendButtonsIcon;\n\n public formGroup: FormGroup;\n\n constructor(private fb: FormBuilder) {}\n\n ngOnInit(): void {\n this.initForm();\n this.loading$.next(false);\n }\n\n private initForm(): void {\n this.formGroup = this.fb.group({\n password: ['', [Validators.required, Validators.minLength(7), Validators.maxLength(20)]],\n confirmPassword: ['', Validators.required]\n });\n this.formGroup.setValidators(isConfirmPasswordValidator.bind({}, { password: 'password', confirmPassword: 'confirmPassword' }));\n }\n\n handleApply(): void {\n this.baseModal.save(this.formGroup.value);\n }\n\n handleClose(): void {\n this.baseModal.close();\n }\n\n handleChangePasswordType(event: InputButton): void {\n if (!event) return;\n\n const id = camelCase(event.id.replace('append', ''));\n const subjectById: BehaviorSubject = this[id + 'Type$'];\n const isPasswordType: boolean = hasAppendButtonsPasswordType(subjectById.getValue());\n\n subjectById.next(APPEND_BUTTON_PASSWORD_STATE[getAppendButtonsState(isPasswordType)].type);\n }\n}\n","\n\n \n\n \n {{ moduleAccount + ':modal.alertAddPasswordProtection' | i18next: { format: 'capitalize' } }}\n \n\n \n \n \n\n \n \n \n\n \n\n \n\n \n {{ moduleAccount + ':modal.button.apply' | i18next: { format: 'title' } }}\n \n\n \n {{ moduleAccount + ':modal.button.cancel' | i18next: { format: 'title' } }}\n \n\n \n\n\n\n","\n\n \n\n \n\n
\n\n
\n \n {{ 'retentionPolicy.button.createPolicy' | i18next: { format: 'title' } }}\n \n
\n\n
\n \n
\n\n
\n\n
\n\n \n
\n\n
\n\n
\n\n \n\n \n {{ 'retentionPolicy.label.mail' | i18next: { format: 'title' } }}\n \n\n
\n\n
\n\n \n\n \n\n \n {{ policy.Text }}\n \n\n \n\n \n\n
\n\n
\n\n
\n\n
\n\n \n\n \n {{ 'retentionPolicy.label.drive' | i18next: { format: 'title' } }}\n \n\n
\n\n
\n\n \n\n \n\n \n {{ policy.Text }}\n \n\n \n\n \n\n
\n\n
\n\n
\n\n
\n\n \n\n \n {{ 'retentionPolicy.label.contacts' | i18next: { format: 'title' } }}\n \n\n
\n\n
\n\n \n\n \n\n \n {{ policy.Text }}\n \n\n \n\n \n\n
\n\n
\n\n
\n\n
\n\n \n\n \n {{ 'retentionPolicy.label.calendar' | i18next: { format: 'title' } }}\n \n\n
\n\n
\n\n \n\n \n\n \n {{ policy.Text }}\n \n\n \n\n \n\n
\n\n
\n\n
\n\n
\n\n \n\n \n {{ driveTitle }}\n \n\n
\n\n
\n\n \n\n \n\n \n {{ policy.Text }}\n \n\n \n\n \n\n
\n\n
\n\n
\n\n
\n\n \n\n \n {{ 'retentionPolicy.label.teams' | i18next: { format: 'title' } }}\n \n\n
\n\n
\n\n \n\n \n\n \n {{ policy.Text }}\n \n\n \n\n \n\n
\n\n
\n\n
\n\n
\n\n
\n\n \n\n \n {{ 'retentionPolicy.modal.button.assign' | i18next: { format: 'title' } }}\n \n\n \n {{ 'retentionPolicy.modal.button.cancel' | i18next: { format: 'title' } }}\n \n\n \n\n
\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, OnInit, ViewChild } from '@angular/core';\nimport { EditCreateRetentionPolicyModalComponent } from '@common/components/modals/edit-create-retention-policy-modal/edit-create-retention-policy-modal.component';\nimport { AttachedPolicies, AttachedPolicy, RetentionPolicyOdata, SelectedPolicies, hasAdminRole, hasSingleUserRole } from '@common/models';\nimport { AuthService, RetentionPolicyService, UserOdataService } from '@common/services';\nimport { getErrorText, getLoadingState, hasActionsQueue, hasErrorResponseText, isHomeUser } from '@common/utils';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { I18NextPipe } from 'angular-i18next';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { isNil, noop } from 'lodash';\nimport { MbsSize, ModalComponent, ModalService, ModalSettings, ToastService } from 'mbs-ui-kit';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { filter, finalize, map, shareReplay } from 'rxjs/operators';\n\n@UntilDestroy()\n@Component({\n templateUrl: './assign-retention-policy-modal.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AssignRetentionPolicyComponent implements OnInit {\n @ViewChild(ModalComponent, { static: true }) baseModal: ModalComponent;\n\n #initPolicies: SelectedPolicies;\n #attachedPolicies$: BehaviorSubject = new BehaviorSubject(null);\n #loading$: BehaviorSubject = new BehaviorSubject(true);\n\n public assignLoading$: BehaviorSubject = new BehaviorSubject(false);\n\n readonly #toastTitleSuccess = this.i18nPipe.transform('toast.success.title', { format: 'title' });\n readonly #toastTitleError = this.i18nPipe.transform('toast.error.title', { format: 'title' });\n\n public loading$: Observable;\n public attachedPolicies$: Observable;\n\n public readonly MbsSize = MbsSize;\n public readonly modulePolicy = I18_NAMESPACE_APPS_UI.policy;\n\n public isAvailableCreatePolicy$: Observable;\n\n public driveTitle: string;\n public selectedPolicies: SelectedPolicies;\n public isHomeUser$: Observable;\n\n get policiesChanged(): boolean {\n return (\n this.selectedPolicies.emailPolicyId !== this.#initPolicies.emailPolicyId ||\n this.selectedPolicies.drivePolicyId !== this.#initPolicies.drivePolicyId ||\n this.selectedPolicies.contactPolicyId !== this.#initPolicies.contactPolicyId ||\n this.selectedPolicies.calendarPolicyId !== this.#initPolicies.calendarPolicyId ||\n this.selectedPolicies.sitePolicyId !== this.#initPolicies.sitePolicyId ||\n this.selectedPolicies.teamDriveId !== this.#initPolicies.teamDriveId ||\n this.selectedPolicies.teamsPolicyId !== this.#initPolicies.teamsPolicyId\n );\n }\n\n get filePolicyId(): string {\n if (this.isGoogle) {\n return this.selectedPolicies.teamDriveId;\n }\n\n if (this.isOffice) {\n return this.selectedPolicies.sitePolicyId;\n }\n\n return '';\n }\n\n set filePolicyId(id: string) {\n if (this.isGoogle) {\n this.selectedPolicies.teamDriveId = id;\n }\n\n if (this.isOffice) {\n this.selectedPolicies.sitePolicyId = id;\n }\n }\n\n get userId(): string {\n return this.authService.id;\n }\n\n get isOffice(): boolean {\n return this.authService?.isOffice;\n }\n\n get isGoogle(): boolean {\n return this.authService?.isGoogle;\n }\n\n constructor(\n private i18nPipe: I18NextPipe,\n private retentionPolicyService: RetentionPolicyService,\n private modalService: ModalService,\n private toastService: ToastService,\n private authService: AuthService,\n private userService: UserOdataService\n ) {}\n\n ngOnInit(): void {\n this.driveTitle = this.getDriveTitle();\n this.selectedPolicies = {\n emailPolicyId: null,\n drivePolicyId: null,\n contactPolicyId: null,\n calendarPolicyId: null,\n sitePolicyId: null,\n teamDriveId: null,\n teamsPolicyId: null\n };\n\n this.initSteams();\n this.handleRefresh();\n }\n\n private initSteams(): void {\n this.loading$ = getLoadingState([this.#loading$.pipe(hasActionsQueue())]);\n this.isAvailableCreatePolicy$ = this.authService.getRoles().pipe(map((roles) => hasAdminRole(roles) || hasSingleUserRole(roles)));\n this.isHomeUser$ = this.authService.getAuthUser().pipe(map((user) => isHomeUser(user)));\n this.attachedPolicies$ = this.#attachedPolicies$.asObservable().pipe(\n filter((policy) => !isNil(policy)),\n finalize(() => this.#loading$.next(false)),\n shareReplay(1)\n );\n }\n\n getSelectedPolicyId(policies: AttachedPolicy[]): string {\n if (!policies) return null;\n\n return policies.find((p) => p.Selected)?.Value || null;\n }\n\n getDriveItems(policies: AttachedPolicies): AttachedPolicy[] {\n switch (true) {\n case this.isGoogle:\n return policies.TeamDrivePolicies;\n case this.isOffice:\n return policies.SitePolicies;\n default:\n throw new Error('Caught error manually: Cannot get drive items!');\n }\n }\n\n getDriveTitle(): string {\n switch (true) {\n case this.isGoogle:\n return this.i18nPipe.transform('retentionPolicy.label.sharedDrives', { format: 'title' });\n case this.isOffice:\n return this.i18nPipe.transform('retentionPolicy.label.sharePoint', { format: 'title' });\n default:\n throw new Error('Caught error manually: Cannot get drive title!');\n }\n }\n\n handleShowCreateRetention(): void {\n this.modalService\n .openCustom(EditCreateRetentionPolicyModalComponent, this.getPopupPolicySettings())\n .then((saveResult) => {\n saveResult && this.handleRefresh();\n })\n .catch(noop);\n }\n\n getPopupPolicySettings(data?: RetentionPolicyOdata): ModalSettings {\n const settings: ModalSettings = {\n responsive: true\n };\n\n if (data) {\n settings.data = data;\n }\n\n return settings;\n }\n\n handleRefresh(): void {\n this.#loading$.next(true);\n this.retentionPolicyService\n .getAttachedPolicies([this.userId])\n .pipe(\n finalize(() => this.#loading$.next(false)),\n untilDestroyed(this)\n )\n .subscribe({\n next: (policies) => {\n this.selectedPolicies.emailPolicyId = this.getSelectedPolicyId(policies.EmailPolicies);\n this.selectedPolicies.drivePolicyId = this.getSelectedPolicyId(policies.DrivePolicies);\n this.selectedPolicies.contactPolicyId = this.getSelectedPolicyId(policies.ContactPolicies);\n this.selectedPolicies.calendarPolicyId = this.getSelectedPolicyId(policies.CalendarPolicies);\n this.selectedPolicies.sitePolicyId = this.getSelectedPolicyId(policies.SitePolicies);\n this.selectedPolicies.teamDriveId = this.getSelectedPolicyId(policies.TeamDrivePolicies);\n this.selectedPolicies.teamsPolicyId = this.getSelectedPolicyId(policies.TeamsPolicies);\n\n this.#initPolicies = { ...this.selectedPolicies };\n\n this.#attachedPolicies$.next(policies);\n }\n });\n }\n\n handleAssign(): void {\n if (!this.policiesChanged) return;\n\n const bodyUpdated = this.i18nPipe.transform(this.modulePolicy + ':toast.body.assign', { format: 'capitalize' });\n const bodyError = this.i18nPipe.transform(this.modulePolicy + ':toast.error.assign', { format: 'capitalize' });\n\n this.assignLoading$.next(true);\n this.userService\n .updateAttachedPolicies([this.userId], this.selectedPolicies)\n .pipe(finalize(() => this.assignLoading$.next(false)))\n .subscribe({\n next: () => {\n this.toastService.success(bodyUpdated, this.#toastTitleSuccess);\n this.baseModal.save(true);\n },\n error: (res: HttpErrorResponse) =>\n hasErrorResponseText(res) && this.toastService.error(getErrorText(res, bodyError), this.#toastTitleError)\n });\n }\n\n handleClose(): void {\n this.baseModal.close();\n }\n}\n","\n\n \n \n \n \n\n \n\n \n {{ moduleAccount + ':modal.button.delete' | i18next: { format: 'title' } }}\n \n\n \n {{ moduleAccount + ':modal.button.cancel' | i18next: { format: 'title' } }}\n \n\n \n\n\n\n\n {{ moduleAccount + ':toast.body.deleteJobTransferred' | i18next: { format: 'capitalize' } }}\n \n {{ moduleAccount + ':toast.body.taskManager' | i18next: { format: 'title' } }}\n \n\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, TemplateRef, ViewChild } from '@angular/core';\nimport { FormError, RoutePath } from '@common';\nimport { BackupStatisticGrid, DeleteUserBackupOutput } from '@common/components/delete-user-backup';\nimport { DeleteBackup, ServiceType } from '@common/models';\nimport { AuthService, UserOdataService } from '@common/services';\nimport { getErrorText, hasErrorResponseText, isHomeUser } from '@common/utils';\nimport { UntilDestroy } from '@ngneat/until-destroy';\nimport { I18NextPipe } from 'angular-i18next';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { MbsPopupType, ModalComponent, ToastService } from 'mbs-ui-kit';\nimport { BehaviorSubject, Observable, forkJoin, switchMap } from 'rxjs';\nimport { finalize, map, startWith } from 'rxjs/operators';\n\n@UntilDestroy()\n@Component({\n templateUrl: './delete-backup-modal.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DeleteBackupModalComponent {\n @ViewChild(ModalComponent, { static: true }) baseModal: ModalComponent;\n @ViewChild('deleteJobTransferredTemplateRef', { static: false, read: TemplateRef }) deleteJobTransferredRef: TemplateRef;\n\n #payloadForDeleteBackup: DeleteBackup = {} as DeleteBackup;\n readonly #toastTitleSuccess = this.i18nPipe.transform('toast.success.title', { format: 'title' });\n readonly #toastTitleError = this.i18nPipe.transform('toast.error.title', { format: 'title' });\n\n public readonly deleteLoading$: BehaviorSubject = new BehaviorSubject(false);\n public readonly loading$: BehaviorSubject = new BehaviorSubject(true);\n public readonly disabled$: BehaviorSubject = new BehaviorSubject(true);\n\n public readonly services$: BehaviorSubject = new BehaviorSubject([]);\n public readonly moduleAccount = I18_NAMESPACE_APPS_UI.account;\n\n public readonly RoutePath = RoutePath;\n public readonly MbsPopupType = MbsPopupType;\n public backupStatistics$: Observable;\n\n public deleteBackupFormError: FormError = { message: '' };\n\n get userId(): string {\n return this.authService.id;\n }\n\n get prefix(): string {\n return this.authService?.prefix;\n }\n\n constructor(\n private authService: AuthService,\n public userService: UserOdataService,\n private toastService: ToastService,\n private i18nPipe: I18NextPipe\n ) {\n this.backupStatistics$ = forkJoin([\n this.authService.getAuthUser().pipe(switchMap((user) => this.userService.getBackupStatistic([this.userId], !isHomeUser(user)))),\n this.authService.getRoles()\n ]).pipe(\n map(([statistic, roles]) => this.userService.mapBackupStatisticToGridList(statistic, roles)),\n startWith([]),\n finalize(() => this.loading$.next(false))\n );\n }\n\n invalidForms(state: boolean): void {\n this.disabled$.next(!state);\n }\n\n deleteBackupChange(value: DeleteUserBackupOutput): void {\n this.#payloadForDeleteBackup = {\n UserIds: [this.userId],\n Email: value.deleteServices.includes(ServiceType.Mail),\n Drive: value.deleteServices.includes(ServiceType.Drive),\n Contact: value.deleteServices.includes(ServiceType.Contacts),\n Calendar: value.deleteServices.includes(ServiceType.Calendar),\n TeamDrive: value.deleteServices.includes(ServiceType.TeamDrives),\n SharePoint: value.deleteServices.includes(ServiceType.SharePoint),\n Password: value.password\n };\n\n this.services$.next(value.deleteServices);\n }\n\n handleDelete(): void {\n this.deleteLoading$.next(true);\n this.userService\n .deleteBackup(this.#payloadForDeleteBackup)\n .pipe(finalize(() => this.deleteLoading$.next(false)))\n .subscribe({\n next: () => {\n this.toastService.success(this.deleteJobTransferredRef, this.#toastTitleSuccess);\n this.baseModal.save(true);\n },\n error: (res: HttpErrorResponse) => hasErrorResponseText(res) && this.toastService.error(getErrorText(res), this.#toastTitleError) // catching error interceptor\n });\n }\n\n handleClose(): void {\n this.baseModal.close();\n }\n}\n","\n\n \n \n \n \n\n \n\n \n {{ moduleAccount + ':modal.button.exportToPST' | i18next: { format: 'title' } }}\n \n\n \n {{ moduleAccount + ':modal.button.cancel' | i18next: { format: 'title' } }}\n \n\n \n\n\n\n\n {{ moduleAccount + ':toast.body.exportJobTransferred' | i18next: { format: 'capitalize' } }}\n \n {{ moduleAccount + ':toast.body.taskManager' | i18next: { format: 'title' } }}\n \n\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, OnInit, TemplateRef, ViewChild } from '@angular/core';\nimport { RoutePath } from '@common';\nimport { ExportToPST, ExportToPSTServices } from '@common/models';\nimport { AuthService, ExportToPSTService } from '@common/services';\nimport { getErrorText, hasErrorResponseText } from '@common/utils';\nimport { I18NextPipe } from 'angular-i18next';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { ModalComponent, ToastService } from 'mbs-ui-kit';\nimport { BehaviorSubject, EMPTY, throwError } from 'rxjs';\nimport { catchError, finalize, map } from 'rxjs/operators';\n\n@Component({\n templateUrl: './export-to-pst-modal.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ExportToPstModalComponent implements OnInit {\n @ViewChild(ModalComponent, { static: true }) baseModal: ModalComponent;\n @ViewChild('exportJobTransferredTemplateRef', { static: false, read: TemplateRef }) exportJobTransferredRef: TemplateRef;\n\n readonly #toastTitleSuccess = this.i18nPipe.transform('toast.success.title', { format: 'title' });\n readonly #toastTitleError = this.i18nPipe.transform('toast.error.title', { format: 'title' });\n\n public readonly exportLoading$ = new BehaviorSubject(false);\n public readonly loading$ = new BehaviorSubject(true);\n public readonly disabled$ = new BehaviorSubject(true);\n\n public readonly RoutePath = RoutePath;\n public readonly moduleAccount = I18_NAMESPACE_APPS_UI.account;\n\n private payloadForExportToPST: ExportToPST;\n\n get userId(): string {\n return this.authService.id;\n }\n\n get prefix(): string {\n return this.authService?.prefix;\n }\n\n constructor(\n private authService: AuthService,\n private exportToPSTService: ExportToPSTService,\n private toastService: ToastService,\n private i18nPipe: I18NextPipe\n ) {}\n\n ngOnInit(): void {\n this.loading$.next(false);\n }\n\n invalidForms(state: boolean): void {\n this.disabled$.next(!state);\n }\n\n handleUpdatePayloadForExportToPST(services: ExportToPSTServices[]): void {\n this.payloadForExportToPST = {\n UserIds: [this.userId],\n Services: services\n };\n }\n\n handleExport(): void {\n this.exportLoading$.next(true);\n this.exportToPSTService\n .exportUserData(this.payloadForExportToPST)\n .pipe(\n map(() => true),\n catchError((err: HttpErrorResponse) => (err.status !== 403 ? throwError(() => err) : EMPTY)),\n finalize(() => this.exportLoading$.next(false))\n )\n .subscribe({\n next: () => {\n this.toastService.success(this.exportJobTransferredRef, this.#toastTitleSuccess);\n this.baseModal.save(true);\n },\n error: (res: HttpErrorResponse) => hasErrorResponseText(res) && this.toastService.error(getErrorText(res), this.#toastTitleError)\n });\n }\n\n handleClose(): void {\n this.baseModal.close();\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { WINDOW } from '@common';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BrowserService {\n constructor(@Inject(WINDOW) private window: Window) {}\n\n isSupportedBrowser(): boolean {\n const { name, version } = this.detectBrowser();\n const isSafari = name.toLowerCase().includes('safari') && version > '16.4';\n const supported = ['edge', 'chrome', 'firefox', 'safari'];\n\n return supported.includes(name.toLowerCase()) || isSafari;\n }\n\n detectBrowser(): { name: string; version: string } {\n let { userAgent: browserAgent, appName: browserName, appVersion } = navigator;\n let browserVersion = '' + parseFloat(appVersion);\n let Offset;\n let OffsetVersion;\n let ix;\n\n // For Chrome\n if ((OffsetVersion = browserAgent.indexOf('Chrome')) != -1) {\n browserName = 'Chrome';\n browserVersion = browserAgent.substring(OffsetVersion + 7);\n }\n\n // For Microsoft internet explorer\n else if ((OffsetVersion = browserAgent.indexOf('MSIE')) != -1) {\n browserName = 'Microsoft Internet Explorer';\n browserVersion = browserAgent.substring(OffsetVersion + 5);\n }\n\n // For Firefox\n else if ((OffsetVersion = browserAgent.indexOf('Firefox')) != -1) {\n browserName = 'Firefox';\n }\n\n // For Safari\n else if ((OffsetVersion = browserAgent.indexOf('Safari')) != -1) {\n browserName = 'Safari';\n browserVersion = browserAgent.substring(OffsetVersion + 7);\n if ((OffsetVersion = browserAgent.indexOf('Version')) != -1) browserVersion = browserAgent.substring(OffsetVersion + 8);\n }\n\n // For other browser \"name/version\" is at the end of userAgent\n else if ((Offset = browserAgent.lastIndexOf(' ') + 1) < (OffsetVersion = browserAgent.lastIndexOf('/'))) {\n browserName = browserAgent.substring(Offset, OffsetVersion);\n browserVersion = browserAgent.substring(OffsetVersion + 1);\n if (browserName.toLowerCase() == browserName.toUpperCase()) {\n browserName = navigator.appName;\n }\n }\n\n // Trimming the fullVersion string at\n // semicolon/space if present\n if ((ix = browserVersion.indexOf(';')) != -1) browserVersion = browserVersion.substring(0, ix);\n if ((ix = browserVersion.indexOf(' ')) != -1) browserVersion = browserVersion.substring(0, ix);\n\n return {\n name: browserName,\n version: browserVersion\n };\n }\n}\n","
\n\n \n\n \n\n
\n\n
\n \n
\n\n
\n {{ formGroup.get('email').value }}\n
\n\n
\n\n
\n\n \n\n
\n\n
\n \n
\n\n
\n \n
\n\n
\n\n
\n\n \n\n
\n\n
\n \n
\n\n
\n {{ formGroup.get('version').value }}\n
\n\n
\n\n
\n\n
\n\n \n\n \n {{ moduleAccount + ':sidepanel.alert.followingExportToPdfSettings' | i18next: { format: 'capitalize' } }}\n \n\n \n\n \n\n \n \n {{ keepAllowedControl.get('password').value | transformTextBy: '*' }}\n \n \n \n\n \n\n \n\n \n\n \n\n \n\n \n\n
\n\n
\n \n
\n\n
\n \n
\n\n
\n\n
\n\n
\n\n
\n\n
\n\n \n\n
\n\n
\n \n {{ moduleAccount + ':sidepanel.button.deleteBackup' | i18next: { format: 'title' } }}\n \n
\n\n
\n \n {{ moduleAccount + ':sidepanel.button.assignRetentionPolicy' | i18next: { format: 'title' } }}\n \n
\n\n
\n \n {{ moduleAccount + ':sidepanel.button.exportToPST' | i18next: { format: 'title' } }}\n \n
\n\n
\n\n
\n\n
\n\n\n {{ 'exportToPST.label.allowDownload' | i18next: { format: 'title' } }}\n \n\n","import { ChangeDetectionStrategy, Component, forwardRef, OnInit } from '@angular/core';\nimport { ControlValueAccessor, FormBuilder, FormControl, NG_VALUE_ACCESSOR, UntypedFormGroup, Validators } from '@angular/forms';\nimport { CustomCVAccessor, PHONE_REGEX, PHONE_REGEX_SAFARI, RoutePath, SECRET_KEY_MASK } from '@common';\nimport { GeneralTabForm } from '@common/components/my-account/my-account-sidepanel/my-account-sidepanel.model';\nimport { MyAccountSidepanelService } from '@common/components/my-account/my-account-sidepanel/my-account-sidepanel.service';\nimport { AllowedModalComponent } from '@common/components/my-account/tabs/general-tab/allowed-modal/allowed-modal.component';\nimport { AssignRetentionPolicyComponent } from '@common/components/my-account/tabs/general-tab/assign-retention-policy-modal/assign-retention-policy-modal.component';\nimport { DeleteBackupModalComponent } from '@common/components/my-account/tabs/general-tab/delete-backup-modal/delete-backup-modal.component';\nimport { ExportToPstModalComponent } from '@common/components/my-account/tabs/general-tab/export-to-pst-modal/export-to-pst-modal.component';\nimport {\n DateUnitEnum,\n hasDomainAdminRole,\n hasDomainUserRole,\n hasLimitedAdminRole,\n hasSingleUserRole,\n ProviderRole,\n Role\n} from '@common/models';\nimport { AuthService } from '@common/services';\nimport { BrowserService } from '@common/services/browser.service';\nimport { isHomeUser } from '@common/utils';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { isEqual, noop } from 'lodash';\nimport { MbsPopupType, MbsSize, ModalService, ModalSettings, TabBase, TabsetItemDirective, TabsService } from 'mbs-ui-kit';\nimport { forkJoin, Observable, of } from 'rxjs';\nimport { distinctUntilChanged, map, shareReplay, switchMap } from 'rxjs/operators';\n\n@UntilDestroy()\n@Component({\n selector: 'app-my-account-general-tab',\n templateUrl: './general-tab.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MyAccountGeneralTabComponent),\n multi: true\n }\n ]\n})\nexport class MyAccountGeneralTabComponent extends TabBase implements ControlValueAccessor, OnInit {\n #settings: GeneralTabForm;\n\n private initialSettings: GeneralTabForm;\n\n private readonly close$: Observable;\n private readonly roles$: Observable;\n private readonly providerRoles$: Observable;\n\n public readonly moduleAccount = I18_NAMESPACE_APPS_UI.account;\n public readonly modulePolicy = I18_NAMESPACE_APPS_UI.policy;\n public readonly MbsSize = MbsSize;\n public readonly MbsPopupType = MbsPopupType;\n public readonly RoutePath = RoutePath;\n\n public $isDomainUser$: Observable;\n public isAvailableExportToPST$: Observable;\n public isAvailableExportSettings$: Observable;\n\n public formGroup: UntypedFormGroup;\n public periodFilter = Object.keys(DateUnitEnum);\n\n private onChange: (value: CustomCVAccessor) => void;\n private onTouched: () => void;\n\n private set settings(settings: GeneralTabForm) {\n this.#settings = settings;\n this.notifyValueChange();\n }\n\n private get settings(): GeneralTabForm {\n return this.#settings;\n }\n\n get userId(): string {\n return this.authService.id;\n }\n\n get phoneControl(): FormControl {\n return this.formGroup.get('phone');\n }\n\n get keepAllowedControl(): FormControl {\n return this.formGroup.get('exportSettings.keepAllowed');\n }\n\n get keepCntUnitsControl(): FormControl {\n return this.formGroup.get('exportSettings.keepCntUnits');\n }\n\n get prefix(): string {\n return this.authService?.prefix;\n }\n\n get isImmutability(): boolean {\n return this.authService?.isImmutability;\n }\n\n constructor(\n private fb: FormBuilder,\n private modalService: ModalService,\n private authService: AuthService,\n private myAccountSidepanelService: MyAccountSidepanelService,\n private browserService: BrowserService,\n tabService: TabsService,\n tabsetItem: TabsetItemDirective\n ) {\n super(tabService, tabsetItem);\n this.close$ = myAccountSidepanelService.sidepanel.close;\n this.roles$ = authService.getRoles().pipe(shareReplay(1));\n this.providerRoles$ = authService.getProviderRoles();\n\n this.$isDomainUser$ = this.roles$.pipe(map((roles) => hasDomainUserRole(roles)));\n this.isAvailableExportToPST$ = forkJoin([authService.getAuthUser(), this.roles$]).pipe(\n switchMap(([user, roles]) => {\n const isDomainUser = hasDomainUserRole(roles);\n const hasRestorePermission = user.RestoreEnable;\n\n return of(hasRestorePermission && (isHomeUser(user) || isDomainUser));\n })\n );\n this.isAvailableExportSettings$ = forkJoin([this.roles$, this.providerRoles$]).pipe(\n switchMap(([roles, providerRoles]) => {\n const isDomainAdmin = hasDomainAdminRole(roles);\n const isSingleUser = hasSingleUserRole(roles);\n const isLimitedAdmin = hasLimitedAdminRole(roles, providerRoles);\n\n return of(isDomainAdmin || isSingleUser || isLimitedAdmin);\n }),\n shareReplay(1)\n );\n }\n\n ngOnInit(): void {\n this.initForm();\n this.initStreams();\n }\n\n initForm(): void {\n const { name, version } = this.browserService.detectBrowser();\n const isSafari = name.toLowerCase().includes('safari') && version < '16.4';\n const phonePattern = new RegExp(isSafari ? PHONE_REGEX_SAFARI : PHONE_REGEX);\n\n this.formGroup = this.fb.group({\n email: [''],\n phone: ['', [Validators.pattern(phonePattern), Validators.maxLength(40)]],\n version: [''],\n exportSettings: this.fb.group({\n keepAllowed: this.fb.group({\n checkbox: [false],\n password: ['']\n }),\n keepCntUnits: this.fb.group({\n checkbox: [true],\n number: [30],\n filter: [DateUnitEnum.Days]\n })\n })\n });\n this.form = this.formGroup;\n }\n\n initStreams(): void {\n this.formGroup.valueChanges\n .pipe(\n distinctUntilChanged((prev, curr) => isEqual(prev, curr)),\n untilDestroyed(this)\n )\n .subscribe((settings: GeneralTabForm) => {\n this.settings = settings;\n this.valid = this.formGroup.valid;\n });\n\n this.close$.pipe(untilDestroyed(this)).subscribe(() => this.resetFormGroup());\n }\n\n registerOnChange(fn: (value: CustomCVAccessor) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n writeValue(settings: CustomCVAccessor): void {\n if (!settings) return;\n\n this.updateFormValue(settings.data);\n this.settings = settings.data;\n this.initialSettings = settings.data;\n }\n\n notifyValueChange(): void {\n const value: CustomCVAccessor = {\n valid: this.formGroup.valid,\n data: this.settings\n };\n\n this.onChange && this.onChange(value);\n this.onTouched && this.onTouched();\n }\n\n updateFormValue(settings: GeneralTabForm): void {\n this.resetFormGroup();\n\n if (settings.email) this.formGroup.get('email').setValue(settings.email, { emitEvent: false });\n if (settings.phone) this.formGroup.get('phone').setValue(settings.phone, { emitEvent: false });\n if (settings.version) this.formGroup.get('version').setValue(settings.version, { emitEvent: false });\n if (settings.exportSettings) {\n if (settings.exportSettings.keepAllowed) {\n this.keepAllowedControl.get('checkbox').setValue(settings.exportSettings.keepAllowed.checkbox, { emitEvent: false });\n this.keepAllowedControl.get('password').setValue(settings.exportSettings.keepAllowed.password, { emitEvent: false });\n }\n if (settings.exportSettings.keepCntUnits) {\n this.keepCntUnitsControl.get('checkbox').setValue(settings.exportSettings.keepCntUnits.checkbox, { emitEvent: false });\n this.keepCntUnitsControl.get('number').setValue(settings.exportSettings.keepCntUnits.number, { emitEvent: false });\n this.keepCntUnitsControl.get('filter').setValue(settings.exportSettings.keepCntUnits.filter, { emitEvent: false });\n }\n }\n\n this.afterFormInit();\n }\n\n private resetFormGroup(): void {\n this.formGroup.reset(this.defaultFormValue(), { emitEvent: false });\n }\n\n private defaultFormValue = (): GeneralTabForm => ({\n email: '',\n phone: '',\n version: '',\n exportSettings: {\n keepAllowed: {\n checkbox: false,\n password: ''\n },\n keepCntUnits: {\n checkbox: false,\n number: 30,\n filter: DateUnitEnum.Days\n }\n }\n });\n\n handleAssignRetentionPolicy(): void {\n const settings: Partial = {\n responsive: true,\n size: MbsSize.sm\n };\n\n this.modalService.openCustom(AssignRetentionPolicyComponent, settings).catch(noop);\n }\n\n handleDeleteBackup(): void {\n const settings: Partial = {\n responsive: true,\n size: MbsSize.sm\n };\n\n this.modalService.openCustom(DeleteBackupModalComponent, settings).catch(noop);\n }\n\n handleExportToPST(): void {\n const settings: Partial = {\n responsive: true,\n size: MbsSize.sm\n };\n\n this.modalService.openCustom(ExportToPstModalComponent, settings).catch(noop);\n }\n\n handleBlurPhoneInput(): void {\n if (this.phoneControl.value === '' && this.phoneControl.valid) {\n this.phoneControl.markAsUntouched({ onlySelf: true });\n }\n }\n\n handleChange(state: boolean): void {\n if (state) {\n if (this.initialSettings && this.initialSettings.exportSettings.keepAllowed.checkbox) {\n this.keepAllowedControl.get('password').setValue(SECRET_KEY_MASK);\n return;\n }\n\n const settings: ModalSettings = {\n size: MbsSize.sm\n };\n\n this.modalService\n .openCustom(AllowedModalComponent, settings)\n .then((res: { password: string }) => {\n this.keepAllowedControl.get('checkbox').setValue(true);\n this.keepAllowedControl.get('password').setValue(res.password);\n })\n .catch((err) => {\n this.keepAllowedControl.get('checkbox').setValue(false);\n this.keepAllowedControl.get('password').setValue('');\n });\n } else {\n this.keepAllowedControl.get('password').setValue('');\n }\n }\n\n handlePassword(): void {\n const settings: ModalSettings = {\n size: MbsSize.sm\n };\n\n this.modalService\n .openCustom(AllowedModalComponent, settings)\n .then((res: { password: string }) => this.keepAllowedControl.get('password').setValue(res.password))\n .catch(noop);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { DeleteUserBackupModule } from '@common/components/delete-user-backup/delete-user-backup.module';\nimport { ExportToPstModule } from '@common/components/export-to-pst/export-to-pst.module';\nimport { MyAccountAlternateAccountTabComponent } from '@common/components/my-account/tabs/alternate-account-tab/alternate-account-tab.component';\nimport { DeleteAlternateAccountModalComponent } from '@common/components/my-account/tabs/alternate-account-tab/delete-alternate-account-modal/delete-alternate-account-modal.component';\nimport { ResetPasswordModalComponent } from '@common/components/my-account/tabs/alternate-account-tab/reset-password-modal/reset-password-modal.component';\nimport { TwoFactorAuthenticationComponent } from '@common/components/my-account/tabs/alternate-account-tab/two-factor-authentication/two-factor-authentication.component';\nimport { TwoFactorDisableComponent } from '@common/components/my-account/tabs/alternate-account-tab/two-factor-disable/two-factor-disable.component';\nimport { MyAccountBackupDestinationTabComponent } from '@common/components/my-account/tabs/backup-destination-tab/backup-destination-tab.component';\nimport { AllowedModalComponent } from '@common/components/my-account/tabs/general-tab/allowed-modal/allowed-modal.component';\nimport { AssignRetentionPolicyComponent } from '@common/components/my-account/tabs/general-tab/assign-retention-policy-modal/assign-retention-policy-modal.component';\nimport { DeleteBackupModalComponent } from '@common/components/my-account/tabs/general-tab/delete-backup-modal/delete-backup-modal.component';\nimport { ExportToPstModalComponent } from '@common/components/my-account/tabs/general-tab/export-to-pst-modal/export-to-pst-modal.component';\nimport { MyAccountGeneralTabComponent } from '@common/components/my-account/tabs/general-tab/general-tab.component';\nimport { PipesModule } from '@common/pipes/pipes.module';\nimport { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\nimport { UserModule } from '@pages/users/user.module';\nimport { I18NEXT_NAMESPACE, I18NextModule } from 'angular-i18next';\nimport { QRCodeModule } from 'angularx-qrcode';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { MbsUiKitModule } from 'mbs-ui-kit';\nimport { MyAccountSidepanelComponent } from './my-account-sidepanel/my-account-sidepanel.component';\n\n@NgModule({\n imports: [\n I18NextModule,\n MbsUiKitModule,\n FormsModule,\n CommonModule,\n ReactiveFormsModule,\n NgbTooltipModule,\n ExportToPstModule,\n UserModule,\n DeleteUserBackupModule,\n RouterModule,\n PipesModule,\n QRCodeModule\n ],\n declarations: [\n MyAccountSidepanelComponent,\n MyAccountGeneralTabComponent,\n MyAccountAlternateAccountTabComponent,\n MyAccountBackupDestinationTabComponent,\n AssignRetentionPolicyComponent,\n ExportToPstModalComponent,\n DeleteBackupModalComponent,\n DeleteAlternateAccountModalComponent,\n ResetPasswordModalComponent,\n TwoFactorAuthenticationComponent,\n TwoFactorDisableComponent,\n AllowedModalComponent\n ],\n exports: [MyAccountSidepanelComponent],\n providers: [\n {\n provide: I18NEXT_NAMESPACE,\n useValue: [I18_NAMESPACE_APPS_UI.account, I18_NAMESPACE_APPS_UI.policy]\n }\n ]\n})\nexport class MyAccountModule {}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\nimport { AuthService, DomainService } from '@common/services';\nimport { isNil } from 'lodash';\nimport { ModalService } from 'mbs-ui-kit';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map, switchMap, tap } from 'rxjs/operators';\n\n@Injectable()\nexport class AuthGuard {\n constructor(private domainService: DomainService, private authService: AuthService, private modalService: ModalService) {}\n\n canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\n if (isNil(this.authService.loggedIn$.value)) {\n this.authService.checkTokenInLocalStorage();\n }\n\n if (this.authService.loggedIn$.value) {\n return this.authService.initAuthGuard().pipe(\n switchMap(() =>\n this.domainService.initAuthGuard().pipe(\n map(() => state.url.includes(this.authService.prefix)),\n tap(() => this.modalService.dismissAll()),\n catchError(() => of(false))\n )\n )\n );\n } else {\n this.authService.logout();\n\n return of(false);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { DataChangeWatcherService } from 'mbs-ui-kit';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class DataChangeWatcherGuard {\n constructor(private dcw: DataChangeWatcherService) {}\n\n canDeactivate(): Observable {\n return this.dcw.detectChanges();\n }\n}\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { ODataError, RoutePath } from '@common';\nimport { AuthState } from '@common/components/login/enums';\nimport { getErrorText, isNoLicensesAvailable } from '@common/utils';\nimport { ToastService } from 'mbs-ui-kit';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\nexport const passwordErrorText = 'Password is not correct';\nexport const unidentifiedErrorText = 'Sorry, something went wrong';\nexport const forbiddenErrorText = \"Forbidden. You don't have permission to access this\";\nexport const forbiddenBackupErrorText = \"Forbidden. You don't have permission to access the backup data\";\nexport const forbiddenExportToPSTErrorText = `Export to\\u00A0PST requires Global Admin access.\\n\n Contact your provider to\\u00A0enable Global Admin access for the domain on\\u00A0M365/Google\\u00A0Backup\\u00A0>\\u00A0Domains`;\nexport const errorTitle = 'Error Details';\n\n@Injectable()\nexport class ErrorHandlerInterceptor implements HttpInterceptor {\n private readonly excludedRoutes = [`/${RoutePath.Contacts}`, `/${RoutePath.Calendar}`];\n\n constructor(private toastService: ToastService, private router: Router) {}\n\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\n return next.handle(req).pipe(\n catchError((error: HttpErrorResponse) => {\n // skip 401 or rethrow for prevent show toast\n if (error.status === 401 || error.status === 412) {\n return throwError(() => error);\n }\n\n if (error.status === 403) {\n this.toastService.error(this.getForbiddenMessage(error), errorTitle);\n\n return throwError(() => error);\n }\n\n if (error.status === 503) {\n void this.router.navigate([RoutePath.Account], { queryParams: { state: AuthState.ServiceUnavailable } });\n\n return throwError(() => error);\n }\n\n if (error.status === 400 && error.error?.value?.toLowerCase() === passwordErrorText.toLowerCase()) {\n return throwError(() => error);\n }\n\n const errorResponse = error.error as ODataError | (Blob & Body);\n\n if (errorResponse instanceof Blob) {\n errorResponse\n .text()\n .then((text) => {\n try {\n const message = getErrorText({ error: JSON.parse(text) } as HttpErrorResponse);\n\n this.toastService.error(message, errorTitle);\n } catch (e) {\n throw new Error('Cannot parse blob error text in `Error Handler Interceptor`!');\n }\n })\n .catch(() => this.toastService.error(unidentifiedErrorText, errorTitle));\n } else if (errorResponse?.value && !isNoLicensesAvailable(error)) {\n const message = errorResponse.value;\n\n this.toastService.error(message, errorTitle);\n }\n\n return throwError(() => error);\n })\n );\n }\n\n getForbiddenMessage(error: HttpErrorResponse): string {\n switch (true) {\n case error.url.endsWith('ExportUserData'):\n return forbiddenExportToPSTErrorText;\n case this.excludedRoutes.some((route) => location.pathname.includes(route)):\n return forbiddenBackupErrorText;\n default:\n return forbiddenErrorText;\n }\n }\n}\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { addBreadcrumb, SeverityLevel } from '@sentry/browser';\nimport { Observable } from 'rxjs';\nimport { catchError, tap } from 'rxjs/operators';\n\n@Injectable()\nexport class SentryInterceptor implements HttpInterceptor {\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\n const start = new Date().getTime();\n\n return next.handle(req).pipe(\n tap((res) => {\n if (res instanceof HttpResponse) {\n this.sendBreadcrumb(req, res, start);\n }\n\n return res;\n }),\n catchError((err: HttpErrorResponse) => {\n if (err instanceof HttpErrorResponse) {\n this.sendBreadcrumb(req, err, start);\n }\n\n throw err;\n })\n );\n }\n\n private sendBreadcrumb(req: HttpRequest, res: HttpResponse | HttpErrorResponse, start: number): void {\n const now = new Date().getTime();\n const duration = (now - start) / 1000;\n\n addBreadcrumb({\n category: 'xhr',\n data: {\n method: req.method,\n url: req.url,\n status_code: res.status,\n duration,\n traceId: res.headers.get('trace-id')\n },\n timestamp: now / 1000,\n type: 'https',\n level: res instanceof HttpErrorResponse ? ('error' as SeverityLevel) : ('info' as SeverityLevel)\n });\n }\n}\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { RoutePath, WINDOW } from '@common';\nimport { AuthService } from '@common/services';\nimport { ModalService, ModalSettings } from 'mbs-ui-kit';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\nconst sessionExpiredTemplate = `\n
\n
\n
\n \n
\n
\n
\n Your session has expired. Please log in again.\n
\n
`;\n\n@Injectable()\nexport class SessionInterceptor implements HttpInterceptor {\n private isModalOpen = false;\n private readonly excludePaths = [`/${RoutePath.Login}`, `/${RoutePath.AuthCallback}`, `/${RoutePath.Account}`, `/${RoutePath.NotFound}`];\n\n constructor(@Inject(WINDOW) private window: Window, private authService: AuthService, private modalService: ModalService) {}\n\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\n if (this.excludePaths.some((path) => this.window.location.pathname.endsWith(path))) {\n return next.handle(req);\n } else {\n return next.handle(req).pipe(\n catchError((error, caught) => {\n if (!(error instanceof HttpErrorResponse)) return caught;\n\n const settings: ModalSettings = {\n header: null,\n footer: {\n okButton: { text: 'Login' },\n cancelButton: { show: false }\n }\n };\n\n if (error?.status === 401 && !this.isModalOpen) {\n settings.header = { title: 'Session Expired' };\n\n this.showModal(settings, sessionExpiredTemplate);\n }\n\n return throwError(() => error);\n })\n );\n }\n }\n\n private showModal(settings: ModalSettings, body: string): void {\n this.isModalOpen = true;\n\n this.modalService.open(settings, body).finally(() => {\n this.authService.logout();\n this.isModalOpen = false;\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { RoutePath } from '@common';\nimport { OtherState } from '@common/components/login/enums/auth-state.enum';\nimport { BrowserService } from '@common/services/browser.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AppInitService {\n constructor(private browserService: BrowserService, private router: Router) {}\n\n init(): Promise {\n if (!this.browserService.isSupportedBrowser()) {\n void this.router.navigate([RoutePath.Account], { queryParams: { state: OtherState.UnsupportedBrowser } });\n }\n\n return Promise.resolve();\n }\n}\n","import { ErrorHandler, Inject, Injectable } from '@angular/core';\nimport { WINDOW } from '@common';\n\n@Injectable()\nexport class GlobalErrorHandler implements ErrorHandler {\n constructor(@Inject(WINDOW) private window: Window) {}\n\n handleError(error: { message: string }): void {\n const chunkFailedMessage = /Loading chunk \\d+ failed/;\n\n if (chunkFailedMessage.test(error.message)) {\n this.window.location.reload();\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// THIS CODE IS GENERATED - DO NOT MODIFY.\nconst u = undefined;\nfunction plural(val) {\n const n = val, i = Math.floor(Math.abs(val)), v = val.toString().replace(/^[^.]*\\.?/, '').length;\n if (i === 1 && v === 0)\n return 1;\n return 5;\n}\nexport default [\"en\", [[\"a\", \"p\"], [\"AM\", \"PM\"], u], [[\"AM\", \"PM\"], u, u], [[\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"], [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"], [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"], [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"]], u, [[\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"], [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"], [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"]], u, [[\"B\", \"A\"], [\"BC\", \"AD\"], [\"Before Christ\", \"Anno Domini\"]], 0, [6, 0], [\"M/d/yy\", \"MMM d, y\", \"MMMM d, y\", \"EEEE, MMMM d, y\"], [\"h:mm a\", \"h:mm:ss a\", \"h:mm:ss a z\", \"h:mm:ss a zzzz\"], [\"{1}, {0}\", u, \"{1} 'at' {0}\", u], [\".\", \",\", \";\", \"%\", \"+\", \"-\", \"E\", \"×\", \"‰\", \"∞\", \"NaN\", \":\"], [\"#,##0.###\", \"#,##0%\", \"¤#,##0.00\", \"#E0\"], \"USD\", \"$\", \"US Dollar\", {}, \"ltr\", plural];\n","import * as EXCLUSIONS_TYPES_JSON from '../assets/locales/en/grammar/grammar-types.json';\nimport * as PHRASAL_VERBS_JSON from '../assets/locales/en/grammar/phrasal-verbs.json';\nimport { isUndefined, pipe } from 'lodash/fp';\n\n// TODO: MBS-23305\nconst EXCLUSIONS_TYPES: { [key: string]: string[] } = (EXCLUSIONS_TYPES_JSON as any).default || EXCLUSIONS_TYPES_JSON;\nconst PHRASAL_VERBS: string[] = (PHRASAL_VERBS_JSON as any).default || PHRASAL_VERBS_JSON;\n/*\n * union array of exlusions\n */\nconst ALL_EXCLUSIONS = Object.values(EXCLUSIONS_TYPES).flat();\n/*\n * check to word by exclusions\n * @param word\n * @returns boolean\n */\nconst isExclusion = (word: string): boolean => ALL_EXCLUSIONS.includes(word);\n/*\n * capitalize word\n * @param word\n * @returns\n */\nexport const capitalize = (word: string): string => word.charAt(0).toUpperCase() + word.slice(1);\n/*\n * transform word case by rule\n * @param word\n * @param index\n * @param accum source words array\n * @returns\n */\nconst transformEnTitle = (word: string, index: number, accum: string[]): string => {\n const byPrev = isUndefined(accum[index - 1]) || accum[index - 1].endsWith(':');\n const isLast = accum.length - 1 === index;\n\n if (byPrev || isLast || word.length > 4) {\n return capitalize(word);\n }\n\n return isExclusion(word) ? word : capitalize(word);\n};\n/*\n * Capitalize title by rule MBS-A-165\n * @param value\n * @returns\n */\nexport const capitalizeEnTitle = (value: string): string => {\n PHRASAL_VERBS.forEach(pv => {\n value = value.replace(new RegExp(pv, 'ig'), pv);\n });\n const words = value.split(/\\s/);\n\n return words.map(transformEnTitle).join(' ');\n};\n/*\n * Drop last char if is dot\n * @param value\n * @returns\n */\nexport const dropDot = (value: string): string => value.replace(/\\.$/g, '');\n/*\n * Formating title by current locale\n * @param value\n * @param lng\n * @returns\n */\nexport const formatTitle = (value: string, lng: string) => {\n switch (lng) {\n case 'en': {\n return pipe(capitalizeEnTitle, dropDot)(value);\n }\n case 'any':\n default:\n return dropDot(value);\n }\n};\n/*\n * Token\n */\nexport const FOMAT_TOKEN = 'title';\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nvar arr = [];\nvar each = arr.forEach;\nvar slice = arr.slice;\nexport function defaults(obj) {\n each.call(slice.call(arguments, 1), function (source) {\n if (source) {\n for (var prop in source) {\n if (obj[prop] === undefined) obj[prop] = source[prop];\n }\n }\n });\n return obj;\n}\nexport function hasXMLHttpRequest() {\n return typeof XMLHttpRequest === 'function' || (typeof XMLHttpRequest === \"undefined\" ? \"undefined\" : _typeof(XMLHttpRequest)) === 'object';\n}\n\nfunction isPromise(maybePromise) {\n return !!maybePromise && typeof maybePromise.then === 'function';\n}\n\nexport function makePromise(maybePromise) {\n if (isPromise(maybePromise)) {\n return maybePromise;\n }\n return Promise.resolve(maybePromise);\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nimport { defaults, hasXMLHttpRequest } from './utils.js';\nimport * as fetchNode from './getFetch.cjs';\nvar fetchApi;\nif (typeof fetch === 'function') {\n if (typeof global !== 'undefined' && global.fetch) {\n fetchApi = global.fetch;\n } else if (typeof window !== 'undefined' && window.fetch) {\n fetchApi = window.fetch;\n } else {\n fetchApi = fetch;\n }\n}\nvar XmlHttpRequestApi;\nif (hasXMLHttpRequest()) {\n if (typeof global !== 'undefined' && global.XMLHttpRequest) {\n XmlHttpRequestApi = global.XMLHttpRequest;\n } else if (typeof window !== 'undefined' && window.XMLHttpRequest) {\n XmlHttpRequestApi = window.XMLHttpRequest;\n }\n}\nvar ActiveXObjectApi;\nif (typeof ActiveXObject === 'function') {\n if (typeof global !== 'undefined' && global.ActiveXObject) {\n ActiveXObjectApi = global.ActiveXObject;\n } else if (typeof window !== 'undefined' && window.ActiveXObject) {\n ActiveXObjectApi = window.ActiveXObject;\n }\n}\nif (!fetchApi && fetchNode && !XmlHttpRequestApi && !ActiveXObjectApi) fetchApi = fetchNode.default || fetchNode;\nif (typeof fetchApi !== 'function') fetchApi = undefined;\nvar addQueryString = function addQueryString(url, params) {\n if (params && _typeof(params) === 'object') {\n var queryString = '';\n for (var paramName in params) {\n queryString += '&' + encodeURIComponent(paramName) + '=' + encodeURIComponent(params[paramName]);\n }\n if (!queryString) return url;\n url = url + (url.indexOf('?') !== -1 ? '&' : '?') + queryString.slice(1);\n }\n return url;\n};\nvar fetchIt = function fetchIt(url, fetchOptions, callback) {\n fetchApi(url, fetchOptions).then(function (response) {\n if (!response.ok) return callback(response.statusText || 'Error', {\n status: response.status\n });\n response.text().then(function (data) {\n callback(null, {\n status: response.status,\n data: data\n });\n }).catch(callback);\n }).catch(callback);\n};\nvar omitFetchOptions = false;\n\nvar requestWithFetch = function requestWithFetch(options, url, payload, callback) {\n if (options.queryStringParams) {\n url = addQueryString(url, options.queryStringParams);\n }\n var headers = defaults({}, typeof options.customHeaders === 'function' ? options.customHeaders() : options.customHeaders);\n if (payload) headers['Content-Type'] = 'application/json';\n var reqOptions = typeof options.requestOptions === 'function' ? options.requestOptions(payload) : options.requestOptions;\n var fetchOptions = defaults({\n method: payload ? 'POST' : 'GET',\n body: payload ? options.stringify(payload) : undefined,\n headers: headers\n }, omitFetchOptions ? {} : reqOptions);\n try {\n fetchIt(url, fetchOptions, callback);\n } catch (e) {\n if (!reqOptions || Object.keys(reqOptions).length === 0 || !e.message || e.message.indexOf('not implemented') < 0) {\n return callback(e);\n }\n try {\n Object.keys(reqOptions).forEach(function (opt) {\n delete fetchOptions[opt];\n });\n fetchIt(url, fetchOptions, callback);\n omitFetchOptions = true;\n } catch (err) {\n callback(err);\n }\n }\n};\n\nvar requestWithXmlHttpRequest = function requestWithXmlHttpRequest(options, url, payload, callback) {\n if (payload && _typeof(payload) === 'object') {\n payload = addQueryString('', payload).slice(1);\n }\n if (options.queryStringParams) {\n url = addQueryString(url, options.queryStringParams);\n }\n try {\n var x;\n if (XmlHttpRequestApi) {\n x = new XmlHttpRequestApi();\n } else {\n x = new ActiveXObjectApi('MSXML2.XMLHTTP.3.0');\n }\n x.open(payload ? 'POST' : 'GET', url, 1);\n if (!options.crossDomain) {\n x.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n }\n x.withCredentials = !!options.withCredentials;\n if (payload) {\n x.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n }\n if (x.overrideMimeType) {\n x.overrideMimeType('application/json');\n }\n var h = options.customHeaders;\n h = typeof h === 'function' ? h() : h;\n if (h) {\n for (var i in h) {\n x.setRequestHeader(i, h[i]);\n }\n }\n x.onreadystatechange = function () {\n x.readyState > 3 && callback(x.status >= 400 ? x.statusText : null, {\n status: x.status,\n data: x.responseText\n });\n };\n x.send(payload);\n } catch (e) {\n console && console.log(e);\n }\n};\nvar request = function request(options, url, payload, callback) {\n if (typeof payload === 'function') {\n callback = payload;\n payload = undefined;\n }\n callback = callback || function () {};\n if (fetchApi) {\n return requestWithFetch(options, url, payload, callback);\n }\n if (hasXMLHttpRequest() || typeof ActiveXObject === 'function') {\n return requestWithXmlHttpRequest(options, url, payload, callback);\n }\n callback(new Error('No fetch and no xhr implementation found!'));\n};\nexport default request;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nimport { defaults, makePromise } from './utils.js';\nimport request from './request.js';\nvar getDefaults = function getDefaults() {\n return {\n loadPath: '/locales/{{lng}}/{{ns}}.json',\n addPath: '/locales/add/{{lng}}/{{ns}}',\n allowMultiLoading: false,\n parse: function parse(data) {\n return JSON.parse(data);\n },\n stringify: JSON.stringify,\n parsePayload: function parsePayload(namespace, key, fallbackValue) {\n return _defineProperty({}, key, fallbackValue || '');\n },\n request: request,\n reloadInterval: typeof window !== 'undefined' ? false : 60 * 60 * 1000,\n customHeaders: {},\n queryStringParams: {},\n crossDomain: false,\n withCredentials: false,\n overrideMimeType: false,\n requestOptions: {\n mode: 'cors',\n credentials: 'same-origin',\n cache: 'default'\n }\n };\n};\nvar Backend = function () {\n function Backend(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var allOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _classCallCheck(this, Backend);\n this.services = services;\n this.options = options;\n this.allOptions = allOptions;\n this.type = 'backend';\n this.init(services, options, allOptions);\n }\n _createClass(Backend, [{\n key: \"init\",\n value: function init(services) {\n var _this = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var allOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.services = services;\n this.options = defaults(options, this.options || {}, getDefaults());\n this.allOptions = allOptions;\n if (this.services && this.options.reloadInterval) {\n setInterval(function () {\n return _this.reload();\n }, this.options.reloadInterval);\n }\n }\n }, {\n key: \"readMulti\",\n value: function readMulti(languages, namespaces, callback) {\n this._readAny(languages, languages, namespaces, namespaces, callback);\n }\n }, {\n key: \"read\",\n value: function read(language, namespace, callback) {\n this._readAny([language], language, [namespace], namespace, callback);\n }\n }, {\n key: \"_readAny\",\n value: function _readAny(languages, loadUrlLanguages, namespaces, loadUrlNamespaces, callback) {\n var _this2 = this;\n var loadPath = this.options.loadPath;\n if (typeof this.options.loadPath === 'function') {\n loadPath = this.options.loadPath(languages, namespaces);\n }\n loadPath = makePromise(loadPath);\n loadPath.then(function (resolvedLoadPath) {\n if (!resolvedLoadPath) return callback(null, {});\n var url = _this2.services.interpolator.interpolate(resolvedLoadPath, {\n lng: languages.join('+'),\n ns: namespaces.join('+')\n });\n _this2.loadUrl(url, callback, loadUrlLanguages, loadUrlNamespaces);\n });\n }\n }, {\n key: \"loadUrl\",\n value: function loadUrl(url, callback, languages, namespaces) {\n var _this3 = this;\n this.options.request(this.options, url, undefined, function (err, res) {\n if (res && (res.status >= 500 && res.status < 600 || !res.status)) return callback('failed loading ' + url + '; status code: ' + res.status, true);\n if (res && res.status >= 400 && res.status < 500) return callback('failed loading ' + url + '; status code: ' + res.status, false);\n if (!res && err && err.message && err.message.indexOf('Failed to fetch') > -1) return callback('failed loading ' + url + ': ' + err.message, true);\n if (err) return callback(err, false);\n var ret, parseErr;\n try {\n if (typeof res.data === 'string') {\n ret = _this3.options.parse(res.data, languages, namespaces);\n } else {\n ret = res.data;\n }\n } catch (e) {\n parseErr = 'failed parsing ' + url + ' to json';\n }\n if (parseErr) return callback(parseErr, false);\n callback(null, ret);\n });\n }\n }, {\n key: \"create\",\n value: function create(languages, namespace, key, fallbackValue, callback) {\n var _this4 = this;\n if (!this.options.addPath) return;\n if (typeof languages === 'string') languages = [languages];\n var payload = this.options.parsePayload(namespace, key, fallbackValue);\n var finished = 0;\n var dataArray = [];\n var resArray = [];\n languages.forEach(function (lng) {\n var addPath = _this4.options.addPath;\n if (typeof _this4.options.addPath === 'function') {\n addPath = _this4.options.addPath(lng, namespace);\n }\n var url = _this4.services.interpolator.interpolate(addPath, {\n lng: lng,\n ns: namespace\n });\n _this4.options.request(_this4.options, url, payload, function (data, res) {\n finished += 1;\n dataArray.push(data);\n resArray.push(res);\n if (finished === languages.length) {\n if (callback) callback(dataArray, resArray);\n }\n });\n });\n }\n }, {\n key: \"reload\",\n value: function reload() {\n var _this5 = this;\n var _this$services = this.services,\n backendConnector = _this$services.backendConnector,\n languageUtils = _this$services.languageUtils,\n logger = _this$services.logger;\n var currentLanguage = backendConnector.language;\n if (currentLanguage && currentLanguage.toLowerCase() === 'cimode') return;\n\n var toLoad = [];\n var append = function append(lng) {\n var lngs = languageUtils.toResolveHierarchy(lng);\n lngs.forEach(function (l) {\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n append(currentLanguage);\n if (this.allOptions.preload) this.allOptions.preload.forEach(function (l) {\n return append(l);\n });\n toLoad.forEach(function (lng) {\n _this5.allOptions.ns.forEach(function (ns) {\n backendConnector.read(lng, ns, 'read', null, null, function (err, data) {\n if (err) logger.warn(\"loading namespace \".concat(ns, \" for language \").concat(lng, \" failed\"), err);\n if (!err && data) logger.log(\"loaded namespace \".concat(ns, \" for language \").concat(lng), data);\n backendConnector.loaded(\"\".concat(lng, \"|\").concat(ns), err, data);\n });\n });\n });\n }\n }]);\n return Backend;\n}();\nBackend.type = 'backend';\nexport default Backend;","import { registerLocaleData } from '@angular/common';\nimport localeEn from '@angular/common/locales/en';\nimport { APP_INITIALIZER, LOCALE_ID } from '@angular/core';\nimport { FOMAT_TOKEN, formatTitle } from './i18-format-title';\nimport { I18NEXT_SERVICE, ITranslationService, defaultInterpolationFormat } from 'angular-i18next';\nimport Backend from 'i18next-http-backend';\nimport moment from 'moment';\nimport { Observable, Subject } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\n\nconst LOCALE_DATA = {\n en: localeEn\n};\n\n/**\n * Detect lang be html lang=\"\" attr async\n * @return {Observable}\n */\nexport function documentLangObserver(): Observable {\n const subject: Subject = new Subject();\n const mutationObserver = new MutationObserver((mutationsList, _observer) => {\n for (const mutation of mutationsList) {\n if (mutation.type === 'attributes' && mutation.attributeName === 'lang') {\n subject.next((mutation.target as HTMLElement).getAttribute('lang'));\n }\n }\n });\n\n mutationObserver.observe(document.documentElement, { attributes: true });\n return subject.pipe(startWith(document.documentElement.getAttribute('lang')));\n}\n/**\n * Lang detect ngApp integration\n */\nconst LANGUAGE_DETECTOR = {\n type: 'languageDetector',\n async: true,\n init: function (services, detectorOptions, i18nextOptions) {\n /* use services and options */\n },\n detect: function (callback) {\n documentLangObserver().subscribe((lang) => {\n const data = LOCALE_DATA[lang] || LOCALE_DATA.en;\n registerLocaleData(data, lang);\n callback(lang);\n });\n },\n cacheUserLanguage: function (lng) {\n /* cache language */\n }\n};\n\nfunction getI18nextOptions(path:string, namespaces?: Array, defaultNS?: string) {\n return {\n whitelist: ['en'],\n fallbackLng: 'en',\n debug: false,\n returnEmptyString: true,\n defaultNS,\n interpolation: {\n format: (value, format, lng) => {\n if (format === FOMAT_TOKEN) return formatTitle(value, lng);\n if (value instanceof Date) return moment(value).format(format);\n return defaultInterpolationFormat(value, format, lng);\n }\n },\n backend: {\n loadPath: path,\n addPath: path\n },\n ns: namespaces\n };\n}\n\nfunction i18NextInit(i18next: ITranslationService, path: string, namespaces: Array, defaultNS?: string) {\n return () => {\n return i18next.use(Backend).use(LANGUAGE_DETECTOR).init(getI18nextOptions(path, namespaces, defaultNS));\n };\n}\n\n/*\n * get i18next instance ID\n */\nexport function localeIdFactory(i18next: ITranslationService) {\n return i18next.language;\n}\n\nexport function I18N_PROVIDERS(path: string, namespaces?: Array, defaultNS = 'app') {\n return [\n {\n provide: APP_INITIALIZER,\n useFactory: (i18next: ITranslationService)=>{\n return i18NextInit(i18next, path, namespaces, defaultNS)\n },\n deps: [I18NEXT_SERVICE],\n multi: true\n },\n {\n provide: LOCALE_ID,\n deps: [I18NEXT_SERVICE],\n useFactory: localeIdFactory\n }\n ];\n}\n","export class HeaderItem {\n private readonly _linkFunction: () => string = null;\n\n public readonly displayName: string;\n public readonly icon: string;\n public readonly needChangeDetectionHack: boolean;\n\n public get link(): string {\n return this._linkFunction();\n }\n\n constructor(displayName: string, icon: string, link: string | (() => string), needChangeDetectionHack = false) {\n this.displayName = displayName;\n this.icon = icon;\n\n if (typeof link === 'string') {\n this._linkFunction = () => link;\n } else {\n this._linkFunction = link;\n }\n\n this.needChangeDetectionHack = needChangeDetectionHack;\n }\n}\n\nexport interface MenuItemType {\n name: string;\n iconClass?: string;\n routeUrl?: string;\n queryParams?: { [key: string]: string };\n externalUrl?: string;\n target?: '_blank' | '_self';\n action?: () => void;\n children?: Array;\n can?: boolean;\n title?: string;\n id: string;\n}\n","
\n\n \n\n
\n","import { DOCUMENT } from '@angular/common';\nimport { Component, Inject, OnInit, ViewChild } from '@angular/core';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { CustomerProblem, RoutePath, WINDOW } from '@common';\nimport { MyAccountSidepanelService } from '@common/components/my-account/my-account-sidepanel/my-account-sidepanel.service';\nimport {\n AuthUser,\n ProductMode,\n Provider,\n ServiceStatus,\n ServiceType,\n SystemInfo,\n hasAdminRole,\n hasDomainAdminRole,\n hasDomainUserRole,\n hasLimitedAdminRole,\n isEmergencySignIn\n} from '@common/models';\nimport { AuthService, StatisticsService } from '@common/services';\nimport { getServiceUiInfo, isHomeUser } from '@common/utils';\nimport { NgbDropdown } from '@ng-bootstrap/ng-bootstrap';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { I18NextPipe } from 'angular-i18next';\nimport { get, isNil } from 'lodash';\nimport { Alert, AlertService, GuidEmpty, MbsPopupType } from 'mbs-ui-kit';\nimport { Observable, forkJoin, of } from 'rxjs';\nimport { filter, first, map, switchMap, tap } from 'rxjs/operators';\nimport { HeaderItem } from './app-header-item.model';\n\nexport type AlertCtrl = { link: string; text: string };\nconst pageRouterUrl = {\n [RoutePath.Dashboard]: ServiceType.All,\n [RoutePath.RetentionPolicy]: ServiceType.All,\n // [getServiceUiInfo(ServiceType.Users).url()]: ServiceType.Users,\n // [getServiceUiInfo(ServiceType.History).url()]: ServiceType.History,\n [getServiceUiInfo(ServiceType.Mail).url()]: ServiceType.Mail,\n [getServiceUiInfo(ServiceType.Drive).url()]: ServiceType.Drive,\n [getServiceUiInfo(ServiceType.Contacts).url()]: ServiceType.Contacts,\n [getServiceUiInfo(ServiceType.Calendar).url()]: ServiceType.Calendar,\n [getServiceUiInfo(ServiceType.TeamDrives).url()]: ServiceType.TeamDrives,\n [getServiceUiInfo(ServiceType.SharePoint).url()]: ServiceType.SharePoint,\n [getServiceUiInfo(ServiceType.Teams).url()]: ServiceType.Teams,\n [getServiceUiInfo(ServiceType.Export).url()]: ServiceType.Export\n};\n\n@UntilDestroy()\n@Component({\n selector: 'app-header',\n templateUrl: './app-header.component.html',\n styleUrls: ['./app-header.component.scss']\n})\nexport class AppHeaderComponent implements OnInit {\n @ViewChild('accountDropdown', { static: true, read: NgbDropdown }) private accountDropdown: NgbDropdown;\n\n private systemInfo$: Observable;\n private readonly servicesNeedChangeDetectionHack = [\n ServiceType.Mail,\n ServiceType.Drive,\n ServiceType.Contacts,\n ServiceType.Calendar,\n ServiceType.History\n ];\n\n public readonly ProductMode = ProductMode;\n public readonly RoutePath = RoutePath;\n\n public isProviderSignIn$: Observable;\n public productMode: ProductMode;\n public userId: string;\n public authUser: AuthUser;\n public items: HeaderItem[] = [];\n public isNavbarCollapsed = true;\n public emergencySignIn = false;\n public isAdmin: boolean;\n public isSingleUser: boolean;\n public isHomeUser = false;\n public isDomainUser = false;\n public isBusinessOffice = false;\n\n get queryParams(): URLSearchParams {\n return new URLSearchParams(this.window.location.search);\n }\n\n get getRouterUrl(): string {\n return this.router.url;\n }\n\n get prefix(): string {\n return this.authService?.prefix;\n }\n\n get isImmutability(): boolean {\n return this.authService?.isImmutability;\n }\n\n get screenX(): number {\n return this.window.innerWidth;\n }\n\n get showShortSystemLogo(): boolean {\n return this.screenX < 420;\n }\n\n get showNavText(): boolean {\n return this.screenX >= 1260;\n }\n\n get showMargin(): boolean {\n return this.screenX < 1090;\n }\n\n get isGoogle(): boolean {\n return this.authService.isGoogle;\n }\n\n constructor(\n @Inject(WINDOW) private window: Window,\n @Inject(DOCUMENT) private doc: Document,\n private alertService: AlertService,\n private authService: AuthService,\n private i18nPipe: I18NextPipe,\n private myAccountSidepanelService: MyAccountSidepanelService,\n private route: ActivatedRoute,\n private router: Router,\n private statisticsService: StatisticsService\n ) {\n this.systemInfo$ = authService.getSystemInfo();\n this.isProviderSignIn$ = authService.isProviderSignIn();\n }\n\n ngOnInit(): void {\n this.initSteams();\n }\n\n initSteams(): void {\n forkJoin([\n this.authService.getAuthUser(),\n this.authService.getRoles(),\n this.authService.getAvailableServices(),\n this.authService.getProviderRoles()\n ]).subscribe({\n next: ([authUser, roles, services, providerRoles]) => {\n this.authUser = authUser;\n this.isAdmin = hasAdminRole(roles);\n this.isSingleUser = !hasDomainAdminRole(roles) && !hasLimitedAdminRole(roles, providerRoles); // condition as at user-select\n this.emergencySignIn = isEmergencySignIn(roles);\n this.isBusinessOffice = authUser.Provider == Provider.OfficeBusiness;\n this.isHomeUser = isHomeUser(authUser);\n this.isDomainUser = hasDomainUserRole(roles);\n this.setUserId();\n\n this.initHeaderItemLinks(services);\n }\n });\n\n this.systemInfo$\n .pipe(\n tap((systemInfo) => (this.productMode = systemInfo.ProductMode)), // TODO: refactored using `ability` when added to project\n switchMap(() => this.getServiceStatus$(this.router.url)),\n untilDestroyed(this)\n )\n .subscribe((services) => {\n if (services.length > 0) services.forEach((s) => this.showAlertStatus(s));\n });\n\n this.router.events\n .pipe(\n filter((e) => e instanceof NavigationEnd && this.accessEventByUrl(e)),\n switchMap((e) => forkJoin([of(e), this.getServiceStatus$((e as NavigationEnd).url)])),\n map(([event, services]) => {\n if (services.length > 0) {\n services.forEach((s) => this.showAlertStatus(s));\n }\n\n return event;\n }),\n untilDestroyed(this)\n )\n .subscribe({\n next: () => {\n this.setUserId();\n\n if (this.accountDropdown.isOpen()) {\n this.accountDropdown.close();\n }\n }\n });\n\n this.isProviderSignIn$\n .pipe(\n map((isProvider) => !isProvider && this.needOpenMyAccountSidepanel()),\n filter(Boolean),\n untilDestroyed(this)\n )\n .subscribe({\n next: () => {\n this.myAccountSidepanelService.toggleSidepanel().pipe(untilDestroyed(this)).subscribe();\n }\n });\n }\n\n private accessEventByUrl(e): boolean {\n const availablePathsWithId = [RoutePath.Mail, RoutePath.Drive, RoutePath.Contacts, RoutePath.Calendar, RoutePath.History];\n const availablePaths = [RoutePath.Dashboard, RoutePath.RetentionPolicy];\n const segments = e.url.replace(this.authService.prefix, '').split('/').filter(Boolean);\n const stabled = this.getStabledSegments(segments, availablePathsWithId);\n\n return [...availablePathsWithId, ...availablePaths].some((path) => this.lastSegmentEqual(stabled, path));\n }\n\n private getStabledSegments(segments: string[], paths: RoutePath[]): string[] {\n if (this.isSingleUser) {\n return segments;\n } else {\n const skip = paths.some((path) => this.lastSegmentEqual(segments, path)); // skip URL without :ID though there must be one\n\n return skip ? [] : this.removeId(segments);\n }\n }\n\n private removeId(segments: string[]): string[] {\n const regexGUID = new RegExp(/^[{]?[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}[}]?$/);\n const last = segments.at(-1);\n\n if (last.length === GuidEmpty.length && regexGUID.test(last)) {\n return segments.slice(0, -1);\n }\n\n return segments;\n }\n\n private lastSegmentEqual(segments: string[], path: RoutePath) {\n return segments.at(-1) === path;\n }\n\n private needOpenMyAccountSidepanel(): boolean {\n const param = this.queryParams.get('myAccount');\n\n return param?.toLowerCase() === 'true';\n }\n\n private getServiceStatus$(url: string): Observable {\n return this.isNeedShowAlertStatus(url)\n ? this.statisticsService\n .getServiceStatus(this.pageServiceType(this.router.url))\n .pipe(map((services) => services.filter((s) => s.Status != CustomerProblem.NoProblem)))\n : of([]);\n }\n\n private isNeedShowAlertStatus(url: string): boolean {\n return !isNil(this.pageServiceType(url));\n }\n\n private pageServiceType(url: string): ServiceType | string {\n const FIRST_URL_SEGMENT_REGEX = new RegExp('^/[^/]+', 'i');\n const routerPathName = FIRST_URL_SEGMENT_REGEX.exec(url)\n ? new URL(url.replace(this.prefix, ''), this.doc.baseURI).pathname.split('/').filter(Boolean).shift()\n : '/';\n\n return pageRouterUrl[routerPathName];\n }\n\n private setUserId() {\n this.userId = get(this.route, 'firstChild.snapshot.params.id') || this.authUser.Id;\n }\n\n private initHeaderItemLinks(services: ServiceType[]): void {\n this.items = services.map((s) => {\n const serviceUiInfo = getServiceUiInfo(s);\n const needChangeDetectionHack: boolean = this.servicesNeedChangeDetectionHack.includes(s);\n\n return new HeaderItem(serviceUiInfo.displayName, serviceUiInfo.iconCssClass, () => serviceUiInfo.url(), needChangeDetectionHack);\n });\n }\n\n private showAlertStatus(status: ServiceStatus): void {\n const type: MbsPopupType = [\n CustomerProblem.PlanWillExpired,\n CustomerProblem.AlmostExceededStorageLimit,\n CustomerProblem.TrialRestriction\n ].includes(status.Status)\n ? MbsPopupType.warning\n : MbsPopupType.danger;\n const alertBody = this.getAlertBody(status);\n const alert: Alert = new Alert({\n type,\n content: alertBody,\n id: status.Status\n });\n\n this.alertService.alert(alert);\n }\n\n private getAlertBody(status: ServiceStatus): string {\n const { Status: customerProblem, Description: description } = status || {};\n const ctrl: AlertCtrl =\n this.productMode === ProductMode.mbs ? this.getAlertCtrlOffice(customerProblem) : this.getAlertCtrlGoogle(customerProblem);\n let message: string = description || '';\n\n if (ctrl && !this.isDomainUser) {\n message += ` ${ctrl.text}`;\n }\n\n return message;\n }\n\n getAlertCtrlOffice(status: CustomerProblem): AlertCtrl {\n if (status === CustomerProblem.StorageImmutabilityActive && !this.router.url.includes(RoutePath.RetentionPolicy)) {\n return {\n link: this.prefix + RoutePath.RetentionPolicy,\n text: this.i18nPipe.transform('header.alert.addPolicy', { format: 'title' })\n };\n }\n\n return null;\n }\n\n private getAlertCtrlGoogle(status: CustomerProblem): AlertCtrl {\n if (!status) return null;\n\n switch (status) {\n case CustomerProblem.LicenseProblem: {\n return {\n link: this.prefix + RoutePath.Payments + '?plan=edit',\n text: this.i18nPipe.transform('header.alert.subscribe', { format: 'capitalize' })\n };\n }\n case CustomerProblem.TrialWillExpired:\n case CustomerProblem.PlanExpired: {\n return {\n link: this.prefix + RoutePath.Payments + '?plan=select',\n text: this.i18nPipe.transform('header.alert.subscribe', { format: 'capitalize' })\n };\n }\n case CustomerProblem.InvoiceProblem: {\n return {\n link: this.prefix + RoutePath.Payments,\n text: this.i18nPipe.transform('header.alert.checkPaymentDetails', { format: 'capitalize' })\n };\n }\n default:\n throw new Error('Caught error manually: not handling value of CustomerProblem enum');\n }\n }\n\n handleOpenMyAccountSidepanel(): void {\n this.myAccountSidepanelService.toggleSidepanel().pipe(first()).subscribe();\n }\n\n handleSignAsAdmin(): void {\n this.authService.signAsAdmin();\n }\n\n handleLogout(): void {\n this.authService.logout();\n }\n}\n","
\n \n \"logo\"\n \n
\n","import { Component } from '@angular/core';\nimport { STANDALONE_ICON } from '@common';\nimport { ProductMode, SystemInfo } from '@common/models';\nimport { AuthService } from '@common/services';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Component({\n selector: 'app-footer',\n templateUrl: './app-footer.component.html'\n})\nexport class AppFooterComponent {\n public systemInfo$: Observable;\n\n constructor(private authService: AuthService) {\n this.systemInfo$ = authService.getSystemInfo().pipe(\n map((systemInfo: SystemInfo) => {\n if (systemInfo.ProductMode === ProductMode.resale) {\n systemInfo.LogoUrl = STANDALONE_ICON.logo;\n }\n\n return systemInfo;\n })\n );\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-app-layout',\n templateUrl: './app-layout.component.html'\n})\nexport class AppLayoutComponent {}\n","\n
\n
\n
\n
\n
\n \n
\n \n \n
\n
\n \n
\n
\n","import { ChangeDetectionStrategy, Component, Inject, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { JwtHelperService } from '@auth0/angular-jwt';\nimport { BrowserStorage, RoutePath, WINDOW } from '@common';\nimport { AuthMode, AuthState } from '@common/components/login/enums';\nimport { RestoreToStorage, SignInAsAdmin } from '@common/models';\nimport { AnotherAccountResponse, AuthResponse, AuthUrlOData } from '@common/models/auth/auth.model';\nimport { AuthService, LocalStorageService, SessionStorageService } from '@common/services';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { HttpResponseError } from 'mbs-ui-kit';\nimport { EMPTY, Observable, of, switchMap, throwError } from 'rxjs';\nimport { catchError, filter } from 'rxjs/operators';\n\n@UntilDestroy()\n@Component({\n template: ``,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AuthCallbackComponent implements OnInit {\n get queryParams(): URLSearchParams {\n return new URLSearchParams(this.window.location.search);\n }\n\n constructor(\n @Inject(WINDOW) private window: Window,\n private authService: AuthService,\n private jwtService: JwtHelperService,\n private localStorageService: LocalStorageService,\n private router: Router,\n private route: ActivatedRoute,\n private sessionStorageService: SessionStorageService\n ) {}\n\n ngOnInit(): void {\n this.checkAndRedirectToHost();\n }\n\n private sendAuthCallback(): void {\n const payload = {\n Code: this.queryParams.get('code'),\n State: this.queryParams.get('state')\n };\n\n this.authService\n .authCallback(payload)\n .pipe(\n filter(Boolean),\n switchMap((res) => this.stateProcessing(res)),\n catchError((err: HttpResponseError) => throwError(() => err)),\n untilDestroyed(this)\n )\n .subscribe({\n next: (response) => {\n if (response.Mode === AuthMode.AnotherAccount) {\n const restoreToFrom: RestoreToStorage = this.sessionStorageService.get(BrowserStorage.RestoreToAnotherUser);\n const url = this.router.createUrlTree([restoreToFrom.redirectUrl], {\n relativeTo: this.route\n });\n\n this.updateRestoreToAnotherUserSessionStorage(restoreToFrom.redirectUrl, response);\n void this.router.navigateByUrl(url);\n } else if (response.Mode === AuthMode.SecondSignIn && this.sessionStorageService.get(BrowserStorage.RestoreFileTeams)) {\n const restoreToFrom: SignInAsAdmin = this.sessionStorageService.get(BrowserStorage.RestoreFileTeams);\n const url = this.router.createUrlTree([restoreToFrom.redirectUrl], {\n relativeTo: this.route\n });\n\n void this.router.navigateByUrl(url);\n } else {\n const prefix = this.authService.getPath(response as AuthResponse);\n const redirectPage = this.queryParams.get('redirectPage');\n const page = redirectPage ? RoutePath[redirectPage] : '';\n\n this.localStorageService.set(BrowserStorage.AuthPrefix, prefix);\n this.localStorageService.set(BrowserStorage.Token, (response as AuthResponse).Token);\n this.authService.loggedIn$.next(true);\n\n void this.router.navigate([prefix + page]);\n }\n },\n error: () => {\n this.authService.logout();\n }\n });\n }\n\n private checkAndRedirectToHost(): void {\n try {\n const host: string = JSON.parse(this.jwtService.urlBase64Decode(this.queryParams.get('state')))?.host?.toLowerCase();\n\n if (this.window.location.host !== host) {\n const url = new URL(this.window.location.protocol + '//' + host + this.window.location.pathname + this.window.location.search);\n\n this.window.location.assign(url);\n } else {\n this.sendAuthCallback();\n }\n } catch (e) {\n throw new Error('Caught error manually: Cannot decode base64 data');\n }\n }\n\n private updateRestoreToAnotherUserSessionStorage(route: string, data: AuthResponse | AnotherAccountResponse): void {\n this.sessionStorageService.set(BrowserStorage.RestoreToAnotherUser, { route, data });\n }\n\n private stateProcessing(res: AuthResponse | AnotherAccountResponse | AuthUrlOData): Observable {\n switch (res.State) {\n case AuthState.Success:\n return of(res);\n case AuthState.Approve:\n case AuthState.AccessDenied:\n case AuthState.AccessRequest:\n case AuthState.Blocked:\n case AuthState.DomainNotFound:\n case AuthState.NotGrant:\n case AuthState.ServiceUnavailable:\n case AuthState.SignInDisabled:\n case AuthState.UserAccountDisabled:\n this.authService.modelBasel = res.Model;\n return of(this.router.navigate([RoutePath.Account], { queryParams: { state: res.State } })).pipe(switchMap(() => EMPTY));\n case AuthState.Redirect: {\n const redirectUrl = res['RedirectUrl'];\n\n if (redirectUrl) {\n this.window.open(redirectUrl, '_self');\n\n return EMPTY;\n } else {\n throw new Error(`State: ${res.State}. ERROR: Not found redirect url`);\n }\n }\n case AuthState.AuthCodeInvalid:\n case AuthState.TokenInvalid:\n default:\n return throwError(() => res.State);\n }\n }\n}\n","\n\n \n\n \n {{ errorText }}\n \n\n
\n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n
\n\n
\n\n \n\n \n {{ 'common.signIn' | i18next: { format: 'title' } }}\n \n\n \n {{ 'common.cancel' | i18next: { format: 'title' } }}\n \n\n \n\n
\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, OnInit, ViewChild } from '@angular/core';\nimport { AbstractControl, FormBuilder, FormControl, FormGroup, ValidationErrors, Validators } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { BrowserStorage, RoutePath } from '@common';\nimport { AuthState } from '@common/components/login/enums';\nimport { AlternativeSignInPayload, AuthResponse } from '@common/models/auth/auth.model';\nimport { AuthService, LocalStorageService } from '@common/services';\nimport { environment } from '@env/environment';\nimport { I18NextPipe } from 'angular-i18next';\nimport { MbsPopupType, MbsValidators, ModalComponent } from 'mbs-ui-kit';\nimport { HOME_EMAIL_REGEXP } from 'mbs-ui-kit/utils/constants';\nimport { BehaviorSubject, EMPTY, Observable, of, switchMap } from 'rxjs';\nimport { finalize, take } from 'rxjs/operators';\n\n@Component({\n templateUrl: './sign-in-alternate-email-modal.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SignInAlternateEmailModalComponent implements OnInit {\n @ViewChild(ModalComponent, { static: true }) baseModal: ModalComponent;\n\n public readonly MbsPopupType = MbsPopupType;\n public readonly loading$: BehaviorSubject = new BehaviorSubject(false);\n\n public formGroup: FormGroup;\n\n get providerEmailCtrl(): FormControl {\n return this.formGroup.get('providerEmail');\n }\n\n get alternateEmailCtrl(): FormControl {\n return this.formGroup.get('alternativeEmail');\n }\n\n get passwordCtrl(): FormControl {\n return this.formGroup.get('password');\n }\n\n get providerSignInCtrl(): FormControl {\n return this.formGroup.get('providerSignIn');\n }\n\n get tfaCtrl(): FormControl {\n return this.formGroup.get('tfa');\n }\n\n get env() {\n return environment;\n }\n\n constructor(\n private authService: AuthService,\n private fb: FormBuilder,\n private router: Router,\n private storageService: LocalStorageService,\n private i18nPipe: I18NextPipe\n ) {}\n\n ngOnInit(): void {\n this.initForm();\n }\n\n private initForm(): void {\n this.formGroup = this.fb.group({\n providerEmail: ['', [Validators.required, Validators.minLength(5), Validators.maxLength(100), this.emailValidator.bind(this)]],\n alternativeEmail: [\n '',\n [Validators.required, Validators.minLength(5), Validators.maxLength(100), MbsValidators.emailValidator.bind(this)]\n ],\n password: ['', [Validators.required, Validators.minLength(3)]]\n });\n\n if (!this.env.production && !this.providerSignInCtrl) {\n this.formGroup.addControl('providerSignIn', this.fb.control(false));\n }\n }\n\n emailValidator(control: AbstractControl): ValidationErrors | null {\n if (new RegExp(HOME_EMAIL_REGEXP).test(control.value as string)) {\n return null;\n }\n return { email: { message: MbsValidators.validatorMessages.email() } };\n }\n\n handleSignIn(): void {\n const payload: AlternativeSignInPayload = {\n PrimaryEmail: this.providerEmailCtrl.value,\n AlternateEmail: this.alternateEmailCtrl.value,\n AlternatePassword: this.passwordCtrl.value,\n ClientMinutesOffset: new Date().getTimezoneOffset()\n };\n\n if (!this.env.production) {\n payload.IsProviderSignIn = this.providerSignInCtrl.value;\n }\n\n if (this.tfaCtrl) {\n payload.TwoStepAuthCode = this.tfaCtrl.value;\n }\n\n this.loading$.next(true);\n this.alternativeSignIn(payload)\n .pipe(\n switchMap((response) => this.stateProcessing(response)),\n take(1),\n finalize(() => this.loading$.next(false))\n )\n .subscribe({\n next: (response) => {\n if (!response) return;\n\n const prefix = this.authService.getPath(response);\n\n this.storageService.set(BrowserStorage.AuthPrefix, prefix);\n this.storageService.set(BrowserStorage.Token, response.Token);\n this.authService.loggedIn$.next(true);\n\n this.router.navigate([prefix]).then(() => {\n this.handleClose();\n });\n },\n error: (res: HttpErrorResponse) => {\n this.authService.loggedIn$.next(false);\n this.passwordCtrl.setValue('', { emitEvent: false });\n this.formGroup.setErrors({\n validation:\n res.error?.value ||\n res.error?.error?.message ||\n this.i18nPipe.transform('common.validation.somethingWrong', { format: 'capitalize' })\n });\n }\n });\n }\n\n private alternativeSignIn(payload: AlternativeSignInPayload): Observable {\n return this.env.production ? this.authService.alternativeSignIn(payload) : this.authService.getToken(payload);\n }\n\n private stateProcessing(res: AuthResponse): Observable {\n switch (res.State) {\n case AuthState.Success:\n return of(res);\n case AuthState.Approve:\n case AuthState.AccessDenied:\n case AuthState.AccessRequest:\n case AuthState.Blocked:\n case AuthState.DomainNotFound:\n case AuthState.NotGrant:\n case AuthState.ServiceUnavailable:\n case AuthState.SignInDisabled:\n case AuthState.UserAccountDisabled:\n this.baseModal.close();\n this.authService.modelBasel = res.Model;\n return of(this.router.navigate([RoutePath.Account], { queryParams: { state: res.State } })).pipe(switchMap(() => EMPTY));\n case AuthState.RequiredTwoStepAuthCode:\n return this.requiredTwoStepAuthCode(res);\n case AuthState.WrongTwoStepAuthCode:\n return this.wrongTwoStepAuthCode(res);\n case AuthState.AltAccountNotVerified:\n return this.alternativeAccountNotVerified(res);\n default:\n return EMPTY;\n }\n }\n\n private requiredTwoStepAuthCode(res: AuthResponse): Observable {\n if (!this.tfaCtrl) {\n this.formGroup.addControl('tfa', this.fb.control(null, Validators.required));\n }\n\n return EMPTY;\n }\n\n private wrongTwoStepAuthCode(res: AuthResponse): Observable {\n this.tfaCtrl.setValue(null);\n this.tfaCtrl.setErrors({ tfa: { message: this.i18nPipe.transform('common.validation.invalidCode', { format: 'capitalize' }) } });\n\n return EMPTY;\n }\n\n private alternativeAccountNotVerified(res: AuthResponse): Observable {\n this.alternateEmailCtrl.setValue(null);\n this.alternateEmailCtrl.setErrors({\n tfa: { message: this.i18nPipe.transform('common.validation.invalidAlternativeAccount', { format: 'capitalize' }) }\n });\n\n return EMPTY;\n }\n\n handleClose(): void {\n this.baseModal.close();\n }\n}\n","
\n\n
\n\n
\n\n \n\n \n\n
\n \n
\n\n {{ 'login.microsoftBusiness' | i18next: { format: 'title' } }}\n
\n\n \n
\n \n
\n\n {{ 'login.microsoftPersonal' | i18next: { format: 'title' } }}\n
\n\n
\n\n \n\n \n\n
\n \n \n \n \n \n \n
\n\n {{ 'login.googleBusiness' | i18next: { format: 'title' } }}\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
\n\n
\n\n \n {{ 'login.signInAlternateEmail' | i18next: { format: 'title' } }}\n \n\n
\n\n
\n\n
\n\n\n \n\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, HostListener, Inject, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { WINDOW } from '@common';\nimport { SignInAlternateEmailModalComponent } from '@common/components/login/sign-in-alternate-email-modal/sign-in-alternate-email-modal.component';\nimport { Provider } from '@common/models';\nimport { AuthUrlOData } from '@common/models/auth/auth.model';\nimport { AuthService } from '@common/services';\nimport { getLoadingState, hasActionsQueue } from '@common/utils';\nimport { UntilDestroy } from '@ngneat/until-destroy';\nimport { noop } from 'lodash';\nimport { MbsSize, ModalService, ModalSettings } from 'mbs-ui-kit';\nimport { BehaviorSubject, EMPTY, Observable, throwError } from 'rxjs';\nimport { catchError, finalize } from 'rxjs/operators';\n\n@UntilDestroy()\n@Component({\n templateUrl: './login.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LoginComponent implements OnInit {\n #loading$: BehaviorSubject = new BehaviorSubject(false);\n\n @HostListener('window:unload', ['$event'])\n unloadHandler() {\n this.#loading$.next(false);\n }\n\n @HostListener('window:beforeunload', ['$event'])\n beforeUnloadHandler() {\n this.#loading$.next(true);\n }\n\n public readonly Provider = Provider;\n public readonly MbsSize = MbsSize;\n public readonly loading$: Observable;\n\n get prefix(): string {\n return this.authService?.prefix;\n }\n\n constructor(\n @Inject(WINDOW) private window: Window,\n private authService: AuthService,\n private router: Router,\n private modalService: ModalService\n ) {\n this.loading$ = getLoadingState([this.#loading$.pipe(hasActionsQueue()), this.authService.requestPending$]);\n }\n\n ngOnInit(): void {\n if (this.authService.loggedIn$.value) {\n void this.router.navigate([this.prefix]);\n }\n }\n\n handleSignIn(provider: Provider): void {\n this.#loading$.next(true);\n this.authService\n .login(provider)\n .pipe(\n catchError((err: HttpErrorResponse) => (err instanceof HttpErrorResponse ? throwError(() => err) : EMPTY)),\n finalize(() => this.#loading$.next(false))\n )\n .subscribe({\n next: (data: AuthUrlOData) => {\n this.window.open(data.RedirectUrl, '_top');\n },\n error: () => {\n this.#loading$.next(false);\n this.authService.logout();\n }\n });\n }\n\n handleOpenSignInAlternativeModal(): void {\n const setting: ModalSettings = {\n size: MbsSize.sm,\n responsive: false\n };\n\n this.modalService.openCustom(SignInAlternateEmailModalComponent, setting).catch(noop);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\nimport { PageData } from '@common/models';\nimport { AuthService } from '@common/services';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AvailableServicesGuard {\n constructor(private authService: AuthService) {}\n\n canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\n const pageData = next.data as PageData;\n\n if (pageData.serviceType) {\n return this.authService.getAvailableServices().pipe(\n map((services) => services.includes(pageData.serviceType)),\n catchError(() => of(false))\n );\n }\n\n return of(true);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { UrlTree } from '@angular/router';\nimport { hasDomainUserRole } from '@common/models';\nimport { AuthService } from '@common/services';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DomainUserGuard {\n constructor(private authService: AuthService) {}\n\n canActivate(): Observable | Promise | boolean | UrlTree {\n return this.authService.getRoles().pipe(\n map((roles) => !hasDomainUserRole(roles)),\n catchError(() => of(false))\n );\n }\n}\n","\n\n

{{ 'changeAlternatePasswordModal.title.resetPassword' | i18next: { format: 'title' } }}

\n\n \n\n \n {{ 'changeAlternatePasswordModal.body.resetPassword' | i18next: { format: 'capitalize' } }}\n \n\n
\n \n {{ moduleButton + ':button.signInToBackup' | i18next: { format: 'title' } }}\n \n
\n\n
\n\n \n\n \n {{ errorText }}\n \n\n
\n\n \n \n \n\n \n \n \n\n \n {{ moduleButton + ':button.reset' | i18next: { format: 'title' } }}\n \n\n
\n\n
\n\n
\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, Inject } from '@angular/core';\nimport { FormControl, FormGroup, UntypedFormGroup, Validators } from '@angular/forms';\nimport { APPEND_BUTTON_PASSWORD_STATE, ChangePassword, WINDOW } from '@common';\nimport { AuthService, UserOdataService } from '@common/services';\nimport { getAppendButtonsIcon, getAppendButtonsState, hasAppendButtonsPasswordType, isConfirmPasswordValidator } from '@common/utils';\nimport { I18NextPipe } from 'angular-i18next';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { camelCase } from 'lodash';\nimport { InputButton, MbsPopupType, MbsSize } from 'mbs-ui-kit';\nimport { BehaviorSubject } from 'rxjs';\nimport { finalize } from 'rxjs/operators';\n\n@Component({\n selector: 'mbs-reset-password',\n templateUrl: './reset-password.component.html',\n styleUrls: ['./reset-password.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ResetPasswordComponent {\n public isSuccessChanged: boolean;\n public readonly moduleButton = I18_NAMESPACE_APPS_UI.button;\n public readonly getAppendButtonsIcon = getAppendButtonsIcon;\n public readonly MbsSize = MbsSize;\n public readonly MbsPopupType = MbsPopupType;\n public formGroup: FormGroup = new UntypedFormGroup(\n {\n NewPassword: new FormControl('', [Validators.required, Validators.minLength(7), Validators.maxLength(20)]),\n ConfirmPassword: new FormControl('', Validators.required)\n },\n isConfirmPasswordValidator.bind({}, { password: 'NewPassword', confirmPassword: 'ConfirmPassword' })\n );\n\n public resetLoading$: BehaviorSubject = new BehaviorSubject(false);\n public newPasswordType$: BehaviorSubject = new BehaviorSubject(APPEND_BUTTON_PASSWORD_STATE.hidden.type);\n public confirmPasswordType$: BehaviorSubject = new BehaviorSubject(APPEND_BUTTON_PASSWORD_STATE.hidden.type);\n\n get URLSearchParams(): URLSearchParams {\n return new URLSearchParams(this.window.location.search);\n }\n\n get token(): string {\n return this.URLSearchParams?.get('token') || this.URLSearchParams?.get('Token');\n }\n\n constructor(\n @Inject(WINDOW) private window: Window,\n public userService: UserOdataService,\n private authService: AuthService,\n private i18nPipe: I18NextPipe\n ) {}\n\n handleResetPassword(): void {\n const data = this.formGroup.value as ChangePassword;\n\n this.resetLoading$.next(true);\n this.userService\n .confirmAlternatePassword(this.token, data.NewPassword)\n .pipe(finalize(() => this.resetLoading$.next(false)))\n .subscribe({\n next: () => (this.isSuccessChanged = true),\n error: (e: HttpErrorResponse) => {\n this.handleFormError(e, this.formGroup);\n }\n });\n }\n\n private handleFormError(response: HttpErrorResponse, form: UntypedFormGroup): void {\n if (response.status === 400) {\n // response.error.error.details.forEach((input) => {\n // const p = form.get(input.target);\n // p.setValue('');\n // p.setErrors({ [`${input.target}Incorrect`]: { message: input.message } });\n // });\n form.get('Password').setValue('');\n form.get('Password').setErrors({ [`Password Incorrect`]: { message: (response.error as { value: string }).value } });\n } else {\n form.reset();\n form.setErrors({\n validation:\n response.error?.value ||\n response.error?.error?.message ||\n this.i18nPipe.transform('common.validation.somethingWrong', { format: 'capitalize' })\n });\n }\n }\n\n handleChangePasswordType(event: InputButton): void {\n if (!event) return;\n\n const id = camelCase(event.id.replace('append', ''));\n const subjectById: BehaviorSubject = this[id + 'Type$'];\n const isPasswordType: boolean = hasAppendButtonsPasswordType(subjectById.getValue());\n\n subjectById.next(APPEND_BUTTON_PASSWORD_STATE[getAppendButtonsState(isPasswordType)].type);\n }\n\n handleLogOut(): void {\n this.authService.logout();\n }\n}\n","
\n\n
\n\n \n\n
\n\n
\n\n \n\n

\n {{ 'account.title.verificationAlternateAccount' | i18next: { format: 'title' } }}\n

\n\n

\n {{ 'account.paragraph.verificationAlternateAccount' | i18next: { format: 'capitalize' } }}\n

\n\n
\n\n
\n\n \n {{ moduleButton + ':button.signIn' | i18next: { format: 'title' } }}\n \n\n
\n\n
\n\n
\n\n \n\n \n\n \n\n \n\n \n\n \n\n
\n\n
\n\n

\n\n
\n\n \n\n \n\n
\n \n
\n\n
\n\n \n\n
\n\n

\n {{ 'account.paragraph.APIAccess_begin' | i18next: { format: 'capitalize' } }}\n \n {{ 'account.paragraph.APIAccess_link' | i18next }}\n \n {{ 'account.paragraph.APIAccess_end' | i18next }}\n

\n\n
\n\n
\n\n
\n\n
\n \n
\n\n
\n\n
\n\n \n\n \n\n \n\n
\n\n
\n\n

\n\n
\n\n
\n\n \n {{ moduleButton + ':button.signInAsAdmin' | i18next: { format: 'title' } }}\n \n\n
\n\n
\n \n
\n\n
\n\n
\n\n \n\n \n\n \n\n
\n\n
\n\n

\n\n
\n\n
\n\n \n {{ moduleButton + ':button.request' | i18next: { format: 'title' } }}\n \n\n
\n\n
\n \n
\n\n
\n\n
\n\n \n\n \n\n \n\n
\n\n
\n\n

\n\n
\n\n
\n\n \n {{ moduleButton + ':button.contactServiceProvider' | i18next: { format: 'title' } }}\n \n\n
\n\n
\n \n
\n\n
\n\n
\n\n \n\n \n\n

\n

\n {{ 'account.subTitle.requiresAdditionalPermissions' | i18next: { format: 'capitalize' } }}\n

\n\n \n {{ domainName }}\n \n

\n\n
\n\n
\n\n

\n {{ 'account.paragraph.grantUsing' | i18next: { format: 'capitalize' } }}\n \n {{ 'account.paragraph.thisLink' | i18next }}\n \n

\n\n
\n\n
\n \n
\n\n
\n\n
\n\n \n\n \n\n \n\n
\n\n
\n

\n {{ 'account.paragraph.pleaseContact_begin' | i18next: { format: 'capitalize' } }}\n \n {{ model?.ProviderEmail }}\n \n {{ 'account.paragraph.pleaseContact_end' | i18next }}\n

\n
\n\n
\n \n
\n\n
\n\n
\n\n \n\n \n\n

\n

\n {{ 'account.subTitle.appNotInstalled' | i18next: { format: 'capitalize' } }}\n

\n\n \n {{ domainName }}\n \n

\n\n
\n\n
\n\n

\n {{ 'account.paragraph.installApplication' | i18next: { format: 'capitalize' } }}\n \n {{ 'account.paragraph.thisLink' | i18next }}\n \n

\n\n
\n\n
\n \n
\n\n
\n\n
\n\n \n\n
\n\n \"503\n\n
\n\n \n\n
\n\n
\n\n \n {{ moduleButton + ':button.takeMeBack' | i18next: { format: 'title' } }}\n \n\n
\n\n
\n \n
\n\n
\n\n
\n\n \n\n \n\n \n\n

\n\n \n {{ email }}\n \n\n

\n\n
\n\n
\n

\n {{ 'account.paragraph.pleaseContactToAdmin' | i18next: { format: 'capitalize' } }}\n

\n
\n\n
\n\n \n {{ moduleButton + ':button.signInAsAdmin' | i18next: { format: 'title' } }}\n \n\n
\n\n
\n \n
\n\n
\n\n
\n\n \n\n \n\n \n\n

\n\n \n {{ email }}\n \n\n

\n\n
\n\n
\n\n

\n\n
\n\n
\n \n
\n\n
\n\n
\n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n
\n\n
\n \n
\n\n
\n\n
\n\n
\n\n \n\n
\n\n\n

\n {{ title }}\n

\n
\n\n\n
\n \n
\n
\n\n\n \n {{ moduleButton + ':button.signInAsAdmin' | i18next: { format: 'title' } }}\n \n\n\n\n \n {{ moduleButton + ':button.signInDiffAccount' | i18next: { format: 'title' } }}\n \n\n","import { Location } from '@angular/common';\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, Inject, OnInit } from '@angular/core';\nimport { BrowserStorage, WINDOW } from '@common';\nimport { AuthMode, AuthState, OtherState } from '@common/components/login/enums';\nimport { Provider } from '@common/models';\nimport { AccessRequestPayload } from '@common/models/auth/access-request.model';\nimport { AuthModelBasel } from '@common/models/auth/auth.model';\nimport { AuthService, SessionStorageService } from '@common/services';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { I18NextPipe } from 'angular-i18next';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { MbsPopupType, MbsSize, ToastService } from 'mbs-ui-kit';\nimport { BehaviorSubject, EMPTY, throwError } from 'rxjs';\nimport { catchError, finalize } from 'rxjs/operators';\n\n@UntilDestroy()\n@Component({\n templateUrl: '/account.component.html',\n styleUrls: ['./account.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AccountComponent implements OnInit {\n readonly #toastTitleSuccess = this.i18nPipe.transform('toast.success.title', { format: 'title' });\n readonly #toastTitleError = this.i18nPipe.transform('toast.error.title', { format: 'title' });\n\n public readonly AuthState = AuthState;\n public readonly OtherState = OtherState;\n public readonly Provider = Provider;\n public readonly MbsSize = MbsSize;\n public readonly MbsPopupType = MbsPopupType;\n public readonly moduleButton = I18_NAMESPACE_APPS_UI.button;\n\n public readonly loading$: BehaviorSubject = new BehaviorSubject(false);\n\n constructor(\n @Inject(WINDOW) private window: Window,\n private authService: AuthService,\n private http: HttpClient,\n private i18nPipe: I18NextPipe,\n private location: Location,\n private sessionStorageService: SessionStorageService,\n private toastService: ToastService\n ) {}\n\n get URLSearchParams(): URLSearchParams {\n return new URLSearchParams(this.window.location.search);\n }\n\n get model(): AuthModelBasel {\n return this.authService?.modelBasel || this.sessionStorageService?.get(BrowserStorage.ErrorPage)?.['model'];\n }\n\n get state(): string {\n return this.URLSearchParams?.get('state') || this.URLSearchParams?.get('State');\n }\n\n ngOnInit(): void {\n if (this.state === AuthState.VerificationAlternateAccount) {\n const token = this.URLSearchParams?.get('token');\n\n token && this.authService.activateAltEmail(token).subscribe();\n }\n }\n\n handleLogOut(): void {\n this.authService.logout();\n }\n\n handleSignIn(provider: Provider): void {\n this.authService\n .login(provider, AuthMode.SecondSignIn)\n .pipe(catchError((err: HttpErrorResponse) => (err instanceof HttpErrorResponse ? throwError(() => err) : EMPTY)))\n .subscribe({\n next: (data) => {\n this.window.open(data.RedirectUrl, '_top');\n },\n error: () => {\n this.authService.logout();\n }\n });\n }\n\n handleAccessRequest(): void {\n const payload: AccessRequestPayload = {\n OwnerId: this.model?.OwnerId,\n UserEmail: this.model?.UserEmail,\n UserDomain: this.model?.UserDomain\n };\n\n this.loading$.next(true);\n this.http\n .post('/api/SendAccessRequest', payload)\n .pipe(\n finalize(() => this.loading$.next(false)),\n untilDestroyed(this)\n )\n .subscribe({\n next: () => {\n const toastBody = this.i18nPipe.transform('account.toast.success.request', { format: 'capitalize' });\n\n this.toastService.success(toastBody, this.#toastTitleSuccess);\n setTimeout(() => this.handleLogOut(), 1500);\n },\n error: (res: HttpErrorResponse) => {\n this.toastService.error(res?.error?.message || res?.error?.error?.message, this.#toastTitleError);\n }\n });\n }\n\n handleReturnByRoute(): void {\n this.location.back();\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { AuthService } from '@common/services';\n\n@Component({\n templateUrl: './not-found.component.html',\n styleUrls: ['./not-found.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NotFoundComponent {\n get prefix(): string {\n return this.authService?.prefix;\n }\n\n constructor(private authService: AuthService) {}\n}\n","
\n\n
\n\n
\n \n
\n\n

\n {{ 'not-found.title' | i18next: { format: 'capitalize' } }}\n

\n\n
\n
\n
\n
\n
\n
\n
\n\n

\n {{ 'not-found.textStart' | i18next: { format: 'capitalize' } }}
\n {{ 'not-found.textEnd' | i18next }}\n

\n\n \n {{ 'not-found.button.goToHome' | i18next: { format: 'title' } }}\n \n
\n
\n","import { inject, NgModule } from '@angular/core';\nimport { ActivatedRouteSnapshot, Route, RouterModule, RouterStateSnapshot, Routes } from '@angular/router';\nimport { ProviderPath, RoutePath } from '@common';\nimport { AppLayoutComponent } from '@common/_layout/app-layout/app-layout.component';\nimport { AuthCallbackComponent } from '@common/components/login/auth-callback/auth-callback.component';\nimport { LoginComponent } from '@common/components/login/login.component';\nimport { AuthGuard } from '@common/guards/auth.guard';\nimport { AvailableServicesGuard } from '@common/guards/available-services.guard';\nimport { DataChangeWatcherGuard } from '@common/guards/data-change-watcher.guard';\nimport { DomainUserGuard } from '@common/guards/domain-user.guard';\nimport { PageData, ServiceType } from '@common/models';\nimport { partialRoutingDataByTitle } from '@common/utils';\nimport { AccountComponent } from '@pages/account/component/account.component';\nimport { NotFoundComponent } from '@pages/not-found/component/not-found.component';\nimport { I18NEXT_NAMESPACE_RESOLVER } from 'angular-i18next';\nimport { I18_NAMESPACE_APPS_UI } from 'i18n';\n\nconst defaultRoutes: Routes = [\n {\n path: '',\n pathMatch: 'full',\n redirectTo: RoutePath.Dashboard\n },\n {\n path: RoutePath.AuditLog,\n loadChildren: () => import('@pages/audit-log/audit-log.module').then((m) => m.AuditLogModule),\n data: {\n ...partialRoutingDataByTitle('Audit'),\n i18nextNamespaces: [I18_NAMESPACE_APPS_UI.audit, I18_NAMESPACE_APPS_UI.policy, I18_NAMESPACE_APPS_UI.reports]\n } as PageData,\n resolve: {\n i18next: I18NEXT_NAMESPACE_RESOLVER\n }\n },\n {\n path: RoutePath.Dashboard,\n loadChildren: () => import('@pages/dashboard/dashboard.module').then((m) => m.DashboardModule),\n data: {\n ...partialRoutingDataByTitle('Dashboard'),\n i18nextNamespaces: [I18_NAMESPACE_APPS_UI.chart, I18_NAMESPACE_APPS_UI.dashboard]\n } as PageData,\n resolve: {\n i18next: I18NEXT_NAMESPACE_RESOLVER\n }\n },\n {\n path: RoutePath.Users,\n canActivate: [(next: ActivatedRouteSnapshot, state: RouterStateSnapshot) => inject(AvailableServicesGuard).canActivate(next, state)],\n loadChildren: () => import('@pages/users/user.module').then((m) => m.UserModule),\n data: {\n ...partialRoutingDataByTitle(ServiceType.Users),\n i18nextNamespaces: [I18_NAMESPACE_APPS_UI.users, I18_NAMESPACE_APPS_UI.policy]\n } as PageData,\n resolve: {\n i18next: I18NEXT_NAMESPACE_RESOLVER\n }\n },\n {\n path: RoutePath.Payments,\n canActivate: [(next: ActivatedRouteSnapshot, state: RouterStateSnapshot) => inject(AvailableServicesGuard).canActivate(next, state)],\n loadChildren: () => import('@pages/payments/payments.module').then((m) => m.PaymentsModule),\n data: {\n ...partialRoutingDataByTitle(ServiceType.Payments),\n i18nextNamespaces: [I18_NAMESPACE_APPS_UI.payments]\n } as PageData,\n resolve: {\n i18next: I18NEXT_NAMESPACE_RESOLVER\n }\n },\n {\n path: RoutePath.Mail,\n canActivate: [(next: ActivatedRouteSnapshot, state: RouterStateSnapshot) => inject(AvailableServicesGuard).canActivate(next, state)],\n canDeactivate: [() => inject(DataChangeWatcherGuard).canDeactivate()],\n loadChildren: () => import('@pages/mail/mail.module').then((m) => m.MailModule),\n data: {\n ...partialRoutingDataByTitle(ServiceType.Mail),\n i18nextNamespaces: [I18_NAMESPACE_APPS_UI.mail, I18_NAMESPACE_APPS_UI.dontHavePermission]\n } as PageData,\n resolve: {\n i18next: I18NEXT_NAMESPACE_RESOLVER\n }\n },\n {\n path: RoutePath.Drive,\n canActivate: [(next: ActivatedRouteSnapshot, state: RouterStateSnapshot) => inject(AvailableServicesGuard).canActivate(next, state)],\n loadChildren: () => import('@pages/drive/drive.module').then((m) => m.DriveModule),\n data: {\n ...partialRoutingDataByTitle(ServiceType.Drive),\n i18nextNamespaces: [I18_NAMESPACE_APPS_UI.drive, I18_NAMESPACE_APPS_UI.dontHavePermission]\n } as PageData,\n resolve: {\n i18next: I18NEXT_NAMESPACE_RESOLVER\n }\n },\n {\n path: RoutePath.History,\n canActivate: [(next: ActivatedRouteSnapshot, state: RouterStateSnapshot) => inject(AvailableServicesGuard).canActivate(next, state)],\n loadChildren: () => import('@pages/history/history.module').then((m) => m.HistoryModule),\n data: {\n ...partialRoutingDataByTitle('History'),\n i18nextNamespaces: [I18_NAMESPACE_APPS_UI.chart, I18_NAMESPACE_APPS_UI.history]\n } as PageData,\n resolve: {\n i18next: I18NEXT_NAMESPACE_RESOLVER\n }\n },\n {\n path: RoutePath.SharedDrives,\n canActivate: [(next: ActivatedRouteSnapshot, state: RouterStateSnapshot) => inject(AvailableServicesGuard).canActivate(next, state)],\n loadChildren: () => import('@pages/team-drive/team-drive.module').then((m) => m.TeamDriveModule),\n data: {\n ...partialRoutingDataByTitle(ServiceType.TeamDrives),\n i18nextNamespaces: [I18_NAMESPACE_APPS_UI.drive, I18_NAMESPACE_APPS_UI.dontHavePermission]\n } as PageData,\n resolve: {\n i18next: I18NEXT_NAMESPACE_RESOLVER\n }\n },\n {\n path: RoutePath.Sharepoint,\n canActivate: [(next: ActivatedRouteSnapshot, state: RouterStateSnapshot) => inject(AvailableServicesGuard).canActivate(next, state)],\n loadChildren: () => import('@pages/share-point/share-point.module').then((m) => m.SharePointModule),\n data: {\n ...partialRoutingDataByTitle(ServiceType.SharePoint),\n i18nextNamespaces: [I18_NAMESPACE_APPS_UI.drive, I18_NAMESPACE_APPS_UI.dontHavePermission]\n } as PageData,\n resolve: {\n i18next: I18NEXT_NAMESPACE_RESOLVER\n }\n },\n {\n path: RoutePath.Teams,\n canActivate: [(next: ActivatedRouteSnapshot, state: RouterStateSnapshot) => inject(AvailableServicesGuard).canActivate(next, state)],\n loadChildren: () => import('@pages/teams/teams.module').then((m) => m.TeamsPageModule),\n data: {\n ...partialRoutingDataByTitle(ServiceType.Teams),\n i18nextNamespaces: [I18_NAMESPACE_APPS_UI.drive, I18_NAMESPACE_APPS_UI.dontHavePermission]\n } as PageData,\n resolve: {\n i18next: I18NEXT_NAMESPACE_RESOLVER\n }\n },\n {\n path: RoutePath.Contacts,\n canActivate: [(next: ActivatedRouteSnapshot, state: RouterStateSnapshot) => inject(AvailableServicesGuard).canActivate(next, state)],\n loadChildren: () => import('@pages/contacts/contacts.module').then((m) => m.ContactsModule),\n data: {\n ...partialRoutingDataByTitle(ServiceType.Contacts),\n i18nextNamespaces: [I18_NAMESPACE_APPS_UI.contacts, I18_NAMESPACE_APPS_UI.dontHavePermission]\n } as PageData,\n resolve: {\n i18next: I18NEXT_NAMESPACE_RESOLVER\n }\n },\n {\n path: RoutePath.Calendar,\n canActivate: [(next: ActivatedRouteSnapshot, state: RouterStateSnapshot) => inject(AvailableServicesGuard).canActivate(next, state)],\n loadChildren: () => import('@pages/calendar/calendar.module').then((m) => m.CalendarModule),\n data: {\n ...partialRoutingDataByTitle(ServiceType.Calendar),\n i18nextNamespaces: [I18_NAMESPACE_APPS_UI.calendar, I18_NAMESPACE_APPS_UI.dontHavePermission]\n } as PageData,\n resolve: {\n i18next: I18NEXT_NAMESPACE_RESOLVER\n }\n },\n {\n path: RoutePath.RetentionPolicy,\n loadChildren: () => import('@pages/retention-policy/retention-policy.module').then((m) => m.RetentionPolicyModule),\n data: {\n ...partialRoutingDataByTitle('Retention Policy'),\n i18nextNamespaces: [I18_NAMESPACE_APPS_UI.policy]\n } as PageData,\n resolve: {\n i18next: I18NEXT_NAMESPACE_RESOLVER\n }\n },\n {\n path: RoutePath.TaskManager,\n loadChildren: () => import('@pages/task-manager/task-manager.module').then((m) => m.TaskManagerModule),\n data: {\n ...partialRoutingDataByTitle('Task Manager'),\n i18nextNamespaces: [I18_NAMESPACE_APPS_UI.tasks]\n } as PageData,\n resolve: {\n i18next: I18NEXT_NAMESPACE_RESOLVER\n }\n },\n {\n path: RoutePath.ExportResults,\n loadChildren: () => import('@pages/export-results/export-results.module').then((m) => m.ExportResultsModule),\n data: {\n ...partialRoutingDataByTitle(ServiceType.Export),\n i18nextNamespaces: [I18_NAMESPACE_APPS_UI.results]\n } as PageData,\n resolve: {\n i18next: I18NEXT_NAMESPACE_RESOLVER\n }\n },\n {\n path: RoutePath.Reports,\n loadChildren: () => import('@pages/reports/reports.module').then((m) => m.ReportsModule),\n data: {\n ...partialRoutingDataByTitle('Reports'),\n i18nextNamespaces: [I18_NAMESPACE_APPS_UI.reports]\n } as PageData,\n resolve: {\n i18next: I18NEXT_NAMESPACE_RESOLVER\n }\n },\n {\n path: RoutePath.BackupHistory,\n canActivate: [() => inject(DomainUserGuard).canActivate()],\n loadChildren: () => import('@pages/backup-history/backup-history.module').then((m) => m.BackupHistoryModule),\n data: {\n ...partialRoutingDataByTitle('Backup History'),\n i18nextNamespaces: [I18_NAMESPACE_APPS_UI.backupHistory]\n } as PageData,\n resolve: {\n i18next: I18NEXT_NAMESPACE_RESOLVER\n }\n },\n {\n path: RoutePath.SkipItems,\n loadChildren: () => import('@pages/skip-items/skip-items.module').then((m) => m.SkipItemsModule),\n data: {\n ...partialRoutingDataByTitle('Skipped Items History'),\n i18nextNamespaces: [I18_NAMESPACE_APPS_UI.skipItems]\n } as PageData,\n resolve: {\n i18next: I18NEXT_NAMESPACE_RESOLVER\n }\n },\n {\n path: RoutePath.Help,\n loadChildren: () => import('@pages/help/help.module').then((m) => m.HelpModule),\n data: { ...partialRoutingDataByTitle('Help') } as PageData\n },\n {\n path: RoutePath.NotFound,\n component: NotFoundComponent\n }\n];\n\nconst getSubsystemRoute = (path: string) => {\n const route: Route = {\n path: path,\n children: [\n {\n path: RoutePath.AuthCallback,\n data: { ...partialRoutingDataByTitle('Auth Callback') },\n component: AuthCallbackComponent,\n resolve: {\n i18next: I18NEXT_NAMESPACE_RESOLVER\n }\n },\n {\n path: '',\n canActivate: [(next: ActivatedRouteSnapshot, state: RouterStateSnapshot) => inject(AuthGuard).canActivate(next, state)],\n component: AppLayoutComponent,\n children: defaultRoutes\n },\n {\n path: '**',\n redirectTo: `/${path}/${RoutePath.NotFound}`\n }\n ]\n };\n\n return route;\n};\n\nconst routes: Routes = [\n {\n path: '',\n pathMatch: 'full',\n redirectTo: RoutePath.Login\n },\n {\n path: RoutePath.Account,\n component: AccountComponent,\n data: { ...partialRoutingDataByTitle('Account') },\n resolve: {\n i18next: I18NEXT_NAMESPACE_RESOLVER\n }\n },\n {\n path: RoutePath.Login,\n component: LoginComponent,\n data: { ...partialRoutingDataByTitle('Login') },\n resolve: {\n i18next: I18NEXT_NAMESPACE_RESOLVER\n }\n },\n { ...getSubsystemRoute(ProviderPath.Office) },\n { ...getSubsystemRoute(ProviderPath.Google) },\n { ...getSubsystemRoute(ProviderPath.Alternate) },\n {\n path: '**',\n redirectTo: RoutePath.Login\n }\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule]\n})\nexport class AppRoutingModule {}\n","import { DOCUMENT } from '@angular/common';\nimport { Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { ActivatedRoute, NavigationEnd, NavigationStart, Router } from '@angular/router';\nimport { BrowserStorage, RoutePath } from '@common';\nimport { AuthCallbackComponent } from '@common/components/login/auth-callback/auth-callback.component';\nimport { AuthService, DomainService, LocalStorageService } from '@common/services';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { SidepanelService } from 'mbs-ui-kit';\nimport { filter, map, mergeMap, switchMap, tap } from 'rxjs/operators';\n\n@UntilDestroy()\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html'\n})\nexport class AppComponent implements OnInit, OnDestroy {\n constructor(\n @Inject(DOCUMENT) private document: Document,\n private activatedRoute: ActivatedRoute,\n private router: Router,\n private titleService: Title,\n private sidepanelService: SidepanelService,\n private authService: AuthService,\n private domainService: DomainService,\n private storageService: LocalStorageService\n ) {}\n\n ngOnDestroy(): void {\n this.storageService.removeAllListeners();\n }\n\n ngOnInit(): void {\n this.storageService.listenStorageChange();\n\n this.storageService.change\n .pipe(\n filter(() => this.document.hidden),\n untilDestroyed(this)\n )\n .subscribe((event) => {\n if (event.key !== BrowserStorage.Prefix + BrowserStorage.Token) return;\n\n if (event.newValue) {\n this.authService.loggedIn$.next(true);\n void this.router.navigate([this.storageService.get(BrowserStorage.AuthPrefix) + RoutePath.Dashboard]);\n } else {\n this.authService.logout();\n }\n });\n\n this.authService.loggedIn$\n .asObservable()\n .pipe(\n filter((state) => state === false),\n untilDestroyed(this)\n )\n .subscribe({\n next: () => {\n this.domainService.resetCache();\n }\n });\n\n this.router.events\n .pipe(\n filter((e) => e instanceof NavigationStart),\n filter((e: NavigationStart) => this.isUrlChanged(e)),\n untilDestroyed(this)\n )\n .subscribe(() => {\n this.sidepanelService.remove('my_account');\n });\n\n this.router.events\n .pipe(\n filter((e) => e instanceof NavigationEnd),\n switchMap((e) => this.sidepanelService.closeAll('my_account').pipe(map(() => e))), // Close all sidepanels after change user in user-select\n tap(() => this.sidepanelService.closeAll()), // Close all sidepanels after change user in user-select\n map(() => this.getRouteWithData(this.activatedRoute.firstChild)),\n mergeMap((route: ActivatedRoute) => route.data)\n )\n .subscribe({\n next: (data: { title: string }) => {\n this.titleService.setTitle(this.updateTitle(data.title));\n }\n });\n }\n\n private isUrlChanged(eventParams: NavigationStart): boolean {\n const currentUrl = this.getUrlWithoutParams(this.router.url) ?? '';\n const nextUrl = this.getUrlWithoutParams(eventParams?.url) ?? '';\n\n return currentUrl !== nextUrl;\n }\n\n private getUrlWithoutParams(url: string) {\n if (!url) return url;\n\n const urlTree = this.router.parseUrl(url);\n\n urlTree.queryParams = {};\n urlTree.fragment = null;\n\n return urlTree.toString().replace(this.authService.prefix, '');\n }\n\n getRouteWithData(route: ActivatedRoute): ActivatedRoute {\n const routeDataKeys = () => Object.keys(child.snapshot.data);\n const routeFirstChildDataKeys = () => Object.keys(child.snapshot.firstChild.data);\n // `route` or `route.firstChild` depends on route architecture in route.module.\n // After redesign authorization, it is important that we need to skip the /office/ or /gapps/ route level\n let child = route.firstChild;\n\n while (child) {\n if (child.firstChild && (routeDataKeys().length === 0 || (routeDataKeys().length > 0 && routeFirstChildDataKeys().length > 0))) {\n child = child.firstChild;\n route = child;\n } else if (!child.firstChild && child.component === AuthCallbackComponent) {\n route = route.firstChild;\n child = null;\n } else {\n child = null;\n }\n }\n\n return route;\n }\n\n updateTitle(pageName = 'Apps'): string {\n if (this.authService.isOffice) return `${pageName} - Microsoft 365 Business backup`;\n if (this.authService.isGoogle) return `${pageName} - Google Workspace backup`;\n\n return pageName;\n }\n}\n","\n","import { CommonModule } from '@angular/common';\nimport { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\nimport { APP_INITIALIZER, ErrorHandler, NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { JwtModule } from '@auth0/angular-jwt';\nimport { BrowserStorage } from '@common';\nimport { AppLayoutComponent } from '@common/_layout/app-layout/app-layout.component';\nimport { AppFooterComponent } from '@common/components/app-footer/app-footer.component';\nimport { AppHeaderComponent } from '@common/components/app-header/app-header.component';\nimport { DontHavePermissionModule } from '@common/components/dont-have-permission/dont-have-permission.module';\nimport { ErrorHandlerModule } from '@common/components/error-handler/error-handler.module';\nimport { AuthCallbackComponent } from '@common/components/login/auth-callback/auth-callback.component';\nimport { LoginComponent } from '@common/components/login/login.component';\nimport { SignInAlternateEmailModalComponent } from '@common/components/login/sign-in-alternate-email-modal/sign-in-alternate-email-modal.component';\nimport { MyAccountModule } from '@common/components/my-account/my-account.module';\nimport { AuthGuard } from '@common/guards/auth.guard';\nimport { DataChangeWatcherGuard } from '@common/guards/data-change-watcher.guard';\nimport { ErrorHandlerInterceptor } from '@common/interceptors/error-handler.interceptor';\nimport { SentryInterceptor } from '@common/interceptors/sentry.interceptor';\nimport { SessionInterceptor } from '@common/interceptors/session.interceptor';\nimport { PipesModule } from '@common/pipes/pipes.module';\nimport { AppInitService } from '@common/services/app-init.service';\nimport { GlobalErrorHandler } from '@common/services/global-error-handler.service';\nimport { environment } from '@env/environment';\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { AccountComponent } from '@pages/account/component/account.component';\nimport { ResetPasswordComponent } from '@pages/account/component/reset-password/reset-password.component';\nimport { NotFoundComponent } from '@pages/not-found/component/not-found.component';\nimport { PaymentsModule } from '@pages/payments/payments.module';\nimport { I18NextModule } from 'angular-i18next';\nimport { I18N_PROVIDERS, I18_NAMESPACES_APPS_UI, I18_NAMESPACES_MBS_UI_KIT, I18_NAMESPACE_APPS_UI } from 'i18n';\nimport { AlertModule, MbsUiKitModule, ToastModule } from 'mbs-ui-kit';\nimport { IconSpriteModule } from 'ng-svg-icon-sprite';\nimport { AppRoutingModule } from './app-routing.module';\nimport { AppComponent } from './app.component';\n\n@NgModule({\n declarations: [\n AccountComponent,\n AppComponent,\n AppLayoutComponent,\n AppHeaderComponent,\n AppFooterComponent,\n AuthCallbackComponent,\n LoginComponent,\n NotFoundComponent,\n SignInAlternateEmailModalComponent,\n ResetPasswordComponent\n ],\n imports: [\n AlertModule,\n AppRoutingModule,\n BrowserAnimationsModule,\n BrowserModule,\n CommonModule,\n DontHavePermissionModule,\n ErrorHandlerModule.forRoot(),\n FormsModule,\n HttpClientModule,\n IconSpriteModule.forRoot({ path: './assets/svg/sprites/sprite.svg' }),\n I18NextModule.forRoot(),\n JwtModule.forRoot({\n config: {\n tokenGetter: () => {\n try {\n return JSON.parse(localStorage.getItem(BrowserStorage.Prefix + BrowserStorage.Token));\n } catch (e) {\n return null;\n }\n }\n }\n }),\n MbsUiKitModule,\n MyAccountModule,\n NgbModule,\n NgSelectModule,\n PaymentsModule,\n PipesModule,\n ReactiveFormsModule,\n ToastModule,\n PipesModule\n ],\n providers: [\n AuthGuard,\n DataChangeWatcherGuard,\n {\n provide: ErrorHandler,\n useClass: GlobalErrorHandler\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: SessionInterceptor,\n multi: true\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: ErrorHandlerInterceptor,\n multi: true\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: SentryInterceptor,\n multi: true\n },\n {\n provide: APP_INITIALIZER,\n deps: [AppInitService],\n useFactory: (appInitService: AppInitService) => () => appInitService.init(),\n multi: true\n },\n I18N_PROVIDERS(environment.localePath, [...I18_NAMESPACES_APPS_UI, ...I18_NAMESPACES_MBS_UI_KIT], I18_NAMESPACE_APPS_UI.app)\n ],\n bootstrap: [AppComponent]\n})\nexport class AppModule {}\n","import { ApplicationRef, enableProdMode } from '@angular/core';\nimport { enableDebugTools } from '@angular/platform-browser';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\nimport { AppModule } from '@app/app.module';\nimport { environment } from '@env/environment';\nimport { MBS_APP_CONFIG, loadConfigurations } from './config.loader';\n\nif (environment.production) {\n enableProdMode();\n}\n\nfunction mountApp(config: string) {\n platformBrowserDynamic([\n {\n provide: MBS_APP_CONFIG,\n useValue: config\n }\n ])\n .bootstrapModule(AppModule)\n .then((module) => {\n if (!environment.production) {\n const applicationRef = module.injector.get(ApplicationRef);\n const appComponent = applicationRef.components[0];\n\n enableDebugTools(appComponent);\n }\n })\n .catch((err) => console.error(err));\n}\n\nloadConfigurations('assets/config/config.json')\n .then((res: string) => {\n try {\n mountApp(JSON.parse(res));\n } catch (err) {\n console.error(err);\n }\n })\n .catch((err) => console.error(err.message));\n","import * as i0 from '@angular/core';\nimport { InjectionToken, Injectable, Inject, NgModule, Optional, SkipSelf } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { map, mergeMap } from 'rxjs/operators';\nimport { defer, of } from 'rxjs';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\n\nconst JWT_OPTIONS = new InjectionToken('JWT_OPTIONS');\n\n// tslint:disable:no-bitwise\nclass JwtHelperService {\n constructor(config = null) {\n this.tokenGetter = (config && config.tokenGetter) || function () { };\n }\n urlBase64Decode(str) {\n let output = str.replace(/-/g, '+').replace(/_/g, '/');\n switch (output.length % 4) {\n case 0: {\n break;\n }\n case 2: {\n output += '==';\n break;\n }\n case 3: {\n output += '=';\n break;\n }\n default: {\n throw new Error('Illegal base64url string!');\n }\n }\n return this.b64DecodeUnicode(output);\n }\n // credits for decoder goes to https://github.com/atk\n b64decode(str) {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n let output = '';\n str = String(str).replace(/=+$/, '');\n if (str.length % 4 === 1) {\n throw new Error(`'atob' failed: The string to be decoded is not correctly encoded.`);\n }\n for (\n // initialize result and counters\n let bc = 0, bs, buffer, idx = 0; \n // get next character\n (buffer = str.charAt(idx++)); \n // character found in table? initialize bit storage and add its ascii value;\n ~buffer &&\n ((bs = bc % 4 ? bs * 64 + buffer : buffer),\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4)\n ? (output += String.fromCharCode(255 & (bs >> ((-2 * bc) & 6))))\n : 0) {\n // try to find character in table (0-63, not found => -1)\n buffer = chars.indexOf(buffer);\n }\n return output;\n }\n b64DecodeUnicode(str) {\n return decodeURIComponent(Array.prototype.map\n .call(this.b64decode(str), (c) => {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n })\n .join(''));\n }\n decodeToken(token = this.tokenGetter()) {\n if (token instanceof Promise) {\n return token.then(t => this._decodeToken(t));\n }\n return this._decodeToken(token);\n }\n _decodeToken(token) {\n if (!token || token === '') {\n return null;\n }\n const parts = token.split('.');\n if (parts.length !== 3) {\n throw new Error(`The inspected token doesn't appear to be a JWT. Check to make sure it has three parts and see https://jwt.io for more.`);\n }\n const decoded = this.urlBase64Decode(parts[1]);\n if (!decoded) {\n throw new Error('Cannot decode the token.');\n }\n return JSON.parse(decoded);\n }\n getTokenExpirationDate(token = this.tokenGetter()) {\n if (token instanceof Promise) {\n return token.then(t => this._getTokenExpirationDate(t));\n }\n return this._getTokenExpirationDate(token);\n }\n _getTokenExpirationDate(token) {\n let decoded;\n decoded = this.decodeToken(token);\n if (!decoded || !decoded.hasOwnProperty('exp')) {\n return null;\n }\n const date = new Date(0);\n date.setUTCSeconds(decoded.exp);\n return date;\n }\n isTokenExpired(token = this.tokenGetter(), offsetSeconds) {\n if (token instanceof Promise) {\n return token.then(t => this._isTokenExpired(t, offsetSeconds));\n }\n return this._isTokenExpired(token, offsetSeconds);\n }\n _isTokenExpired(token, offsetSeconds) {\n if (!token || token === '') {\n return true;\n }\n const date = this.getTokenExpirationDate(token);\n offsetSeconds = offsetSeconds || 0;\n if (date === null) {\n return false;\n }\n return !(date.valueOf() > new Date().valueOf() + offsetSeconds * 1000);\n }\n getAuthScheme(authScheme, request) {\n if (typeof authScheme === 'function') {\n return authScheme(request);\n }\n return authScheme;\n }\n}\nJwtHelperService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: JwtHelperService, deps: [{ token: JWT_OPTIONS }], target: i0.ɵɵFactoryTarget.Injectable });\nJwtHelperService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: JwtHelperService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: JwtHelperService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [JWT_OPTIONS]\n }] }]; } });\n\nconst fromPromiseOrValue = (input) => {\n if (input instanceof Promise) {\n return defer(() => input);\n }\n return of(input);\n};\nclass JwtInterceptor {\n constructor(config, jwtHelper, document) {\n this.jwtHelper = jwtHelper;\n this.document = document;\n this.standardPorts = ['80', '443'];\n this.tokenGetter = config.tokenGetter;\n this.headerName = config.headerName || 'Authorization';\n this.authScheme =\n config.authScheme || config.authScheme === ''\n ? config.authScheme\n : 'Bearer ';\n this.allowedDomains = config.allowedDomains || [];\n this.disallowedRoutes = config.disallowedRoutes || [];\n this.throwNoTokenError = config.throwNoTokenError || false;\n this.skipWhenExpired = config.skipWhenExpired;\n }\n isAllowedDomain(request) {\n const requestUrl = new URL(request.url, this.document.location.origin);\n // If the host equals the current window origin,\n // the domain is allowed by default\n if (requestUrl.host === this.document.location.host) {\n return true;\n }\n // If not the current domain, check the allowed list\n const hostName = `${requestUrl.hostname}${requestUrl.port && !this.standardPorts.includes(requestUrl.port)\n ? ':' + requestUrl.port\n : ''}`;\n return (this.allowedDomains.findIndex((domain) => typeof domain === 'string'\n ? domain === hostName\n : domain instanceof RegExp\n ? domain.test(hostName)\n : false) > -1);\n }\n isDisallowedRoute(request) {\n const requestedUrl = new URL(request.url, this.document.location.origin);\n return (this.disallowedRoutes.findIndex((route) => {\n if (typeof route === 'string') {\n const parsedRoute = new URL(route, this.document.location.origin);\n return (parsedRoute.hostname === requestedUrl.hostname &&\n parsedRoute.pathname === requestedUrl.pathname);\n }\n if (route instanceof RegExp) {\n return route.test(request.url);\n }\n return false;\n }) > -1);\n }\n handleInterception(token, request, next) {\n const authScheme = this.jwtHelper.getAuthScheme(this.authScheme, request);\n if (!token && this.throwNoTokenError) {\n throw new Error('Could not get token from tokenGetter function.');\n }\n let tokenIsExpired = of(false);\n if (this.skipWhenExpired) {\n tokenIsExpired = token ? fromPromiseOrValue(this.jwtHelper.isTokenExpired(token)) : of(true);\n }\n if (token) {\n return tokenIsExpired.pipe(map((isExpired) => isExpired && this.skipWhenExpired\n ? request.clone()\n : request.clone({\n setHeaders: {\n [this.headerName]: `${authScheme}${token}`,\n },\n })), mergeMap((innerRequest) => next.handle(innerRequest)));\n }\n return next.handle(request);\n }\n intercept(request, next) {\n if (!this.isAllowedDomain(request) || this.isDisallowedRoute(request)) {\n return next.handle(request);\n }\n const token = this.tokenGetter(request);\n return fromPromiseOrValue(token).pipe(mergeMap((asyncToken) => {\n return this.handleInterception(asyncToken, request, next);\n }));\n }\n}\nJwtInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: JwtInterceptor, deps: [{ token: JWT_OPTIONS }, { token: JwtHelperService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nJwtInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: JwtInterceptor });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: JwtInterceptor, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [JWT_OPTIONS]\n }] }, { type: JwtHelperService }, { type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n\nclass JwtModule {\n constructor(parentModule) {\n if (parentModule) {\n throw new Error(`JwtModule is already loaded. It should only be imported in your application's main module.`);\n }\n }\n static forRoot(options) {\n return {\n ngModule: JwtModule,\n providers: [\n {\n provide: HTTP_INTERCEPTORS,\n useClass: JwtInterceptor,\n multi: true,\n },\n options.jwtOptionsProvider || {\n provide: JWT_OPTIONS,\n useValue: options.config,\n },\n JwtHelperService,\n ],\n };\n }\n}\nJwtModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: JwtModule, deps: [{ token: JwtModule, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.NgModule });\nJwtModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: JwtModule });\nJwtModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: JwtModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: JwtModule, decorators: [{\n type: NgModule\n }], ctorParameters: function () { return [{ type: JwtModule, decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }] }]; } });\n\n/*\n * Public API Surface of angular-jwt\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { JWT_OPTIONS, JwtHelperService, JwtInterceptor, JwtModule };\n","import { addTracingExtensions, getMainCarrier } from '@sentry/core';\nimport { isNodeEnv, loadModule, dynamicRequire } from '@sentry/utils';\n\n/**\n * @private\n */\nfunction _autoloadDatabaseIntegrations() {\n const carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n\n const packageToIntegrationMapping = {\n mongodb() {\n const integration = dynamicRequire(module, './node/integrations/mongo')\n\n;\n return new integration.Mongo();\n },\n mongoose() {\n const integration = dynamicRequire(module, './node/integrations/mongo')\n\n;\n return new integration.Mongo();\n },\n mysql() {\n const integration = dynamicRequire(module, './node/integrations/mysql')\n\n;\n return new integration.Mysql();\n },\n pg() {\n const integration = dynamicRequire(module, './node/integrations/postgres')\n\n;\n return new integration.Postgres();\n },\n };\n\n const mappedPackages = Object.keys(packageToIntegrationMapping)\n .filter(moduleName => !!loadModule(moduleName))\n .map(pkg => {\n try {\n return packageToIntegrationMapping[pkg]();\n } catch (e) {\n return undefined;\n }\n })\n .filter(p => p) ;\n\n if (mappedPackages.length > 0) {\n carrier.__SENTRY__.integrations = [...(carrier.__SENTRY__.integrations || []), ...mappedPackages];\n }\n}\n\n/**\n * This patches the global object and injects the Tracing extensions methods\n */\nfunction addExtensionMethods() {\n addTracingExtensions();\n\n // Detect and automatically load specified integrations.\n if (isNodeEnv()) {\n _autoloadDatabaseIntegrations();\n }\n}\n\nexport { addExtensionMethods };\n","import { isBrowserBundle } from './env.js';\n\n/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n */\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nfunction isNodeEnv() {\n // explicitly check for browser bundles as those can be optimized statically\n // by terser/rollup.\n return (\n !isBrowserBundle() &&\n Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'\n );\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\nfunction dynamicRequire(mod, request) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return mod.require(request);\n}\n\n/**\n * Helper for dynamically loading module that should work with linked dependencies.\n * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))`\n * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during\n * build time. `require.resolve` is also not available in any other way, so we cannot create,\n * a fake helper like we do with `dynamicRequire`.\n *\n * We always prefer to use local package, thus the value is not returned early from each `try/catch` block.\n * That is to mimic the behavior of `require.resolve` exactly.\n *\n * @param moduleName module name to require\n * @returns possibly required module\n */\nfunction loadModule(moduleName) {\n let mod;\n\n try {\n mod = dynamicRequire(module, moduleName);\n } catch (e) {\n // no-empty\n }\n\n try {\n const { cwd } = dynamicRequire(module, 'process');\n mod = dynamicRequire(module, `${cwd()}/node_modules/${moduleName}`) ;\n } catch (e) {\n // no-empty\n }\n\n return mod;\n}\n\nexport { dynamicRequire, isNodeEnv, loadModule };\n","/*\n * This module exists for optimizations in the build process through rollup and terser. We define some global\n * constants, which can be overridden during build. By guarding certain pieces of code with functions that return these\n * constants, we can control whether or not they appear in the final bundle. (Any code guarded by a false condition will\n * never run, and will hence be dropped during treeshaking.) The two primary uses for this are stripping out calls to\n * `logger` and preventing node-related code from appearing in browser bundles.\n *\n * Attention:\n * This file should not be used to define constants/flags that are intended to be used for tree-shaking conducted by\n * users. These flags should live in their respective packages, as we identified user tooling (specifically webpack)\n * having issues tree-shaking these constants across package boundaries.\n * An example for this is the __SENTRY_DEBUG__ constant. It is declared in each package individually because we want\n * users to be able to shake away expressions that it guards.\n */\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nfunction isBrowserBundle() {\n return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n\n/**\n * Get source of SDK.\n */\nfunction getSDKSource() {\n // @ts-ignore \"npm\" is injected by rollup during build process\n return \"npm\";\n}\n\nexport { getSDKSource, isBrowserBundle };\n","import { isNodeEnv, dynamicRequire } from './node.js';\nimport { getGlobalObject } from './worldwide.js';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\n/**\n * An object that can return the current timestamp in seconds since the UNIX epoch.\n */\n\n/**\n * A TimestampSource implementation for environments that do not support the Performance Web API natively.\n *\n * Note that this TimestampSource does not use a monotonic clock. A call to `nowSeconds` may return a timestamp earlier\n * than a previously returned value. We do not try to emulate a monotonic behavior in order to facilitate debugging. It\n * is more obvious to explain \"why does my span have negative duration\" than \"why my spans have zero duration\".\n */\nconst dateTimestampSource = {\n nowSeconds: () => Date.now() / 1000,\n};\n\n/**\n * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance}\n * for accessing a high-resolution monotonic clock.\n */\n\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction getBrowserPerformance() {\n const { performance } = WINDOW;\n if (!performance || !performance.now) {\n return undefined;\n }\n\n // Replace performance.timeOrigin with our own timeOrigin based on Date.now().\n //\n // This is a partial workaround for browsers reporting performance.timeOrigin such that performance.timeOrigin +\n // performance.now() gives a date arbitrarily in the past.\n //\n // Additionally, computing timeOrigin in this way fills the gap for browsers where performance.timeOrigin is\n // undefined.\n //\n // The assumption that performance.timeOrigin + performance.now() ~= Date.now() is flawed, but we depend on it to\n // interact with data coming out of performance entries.\n //\n // Note that despite recommendations against it in the spec, browsers implement the Performance API with a clock that\n // might stop when the computer is asleep (and perhaps under other circumstances). Such behavior causes\n // performance.timeOrigin + performance.now() to have an arbitrary skew over Date.now(). In laptop computers, we have\n // observed skews that can be as long as days, weeks or months.\n //\n // See https://github.com/getsentry/sentry-javascript/issues/2590.\n //\n // BUG: despite our best intentions, this workaround has its limitations. It mostly addresses timings of pageload\n // transactions, but ignores the skew built up over time that can aversely affect timestamps of navigation\n // transactions of long-lived web pages.\n const timeOrigin = Date.now() - performance.now();\n\n return {\n now: () => performance.now(),\n timeOrigin,\n };\n}\n\n/**\n * Returns the native Performance API implementation from Node.js. Returns undefined in old Node.js versions that don't\n * implement the API.\n */\nfunction getNodePerformance() {\n try {\n const perfHooks = dynamicRequire(module, 'perf_hooks') ;\n return perfHooks.performance;\n } catch (_) {\n return undefined;\n }\n}\n\n/**\n * The Performance API implementation for the current platform, if available.\n */\nconst platformPerformance = isNodeEnv() ? getNodePerformance() : getBrowserPerformance();\n\nconst timestampSource =\n platformPerformance === undefined\n ? dateTimestampSource\n : {\n nowSeconds: () => (platformPerformance.timeOrigin + platformPerformance.now()) / 1000,\n };\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n */\nconst dateTimestampInSeconds = dateTimestampSource.nowSeconds.bind(dateTimestampSource);\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * See `usingPerformanceAPI` to test whether the Performance API is used.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nconst timestampInSeconds = timestampSource.nowSeconds.bind(timestampSource);\n\n/**\n * Re-exported with an old name for backwards-compatibility.\n * TODO (v8): Remove this\n *\n * @deprecated Use `timestampInSeconds` instead.\n */\nconst timestampWithMs = timestampInSeconds;\n\n/**\n * A boolean that is true when timestampInSeconds uses the Performance API to produce monotonic timestamps.\n */\nconst usingPerformanceAPI = platformPerformance !== undefined;\n\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\n */\nlet _browserPerformanceTimeOriginMode;\n\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nconst browserPerformanceTimeOrigin = (() => {\n // Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n // performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n // data as reliable if they are within a reasonable threshold of the current time.\n\n const { performance } = WINDOW;\n if (!performance || !performance.now) {\n _browserPerformanceTimeOriginMode = 'none';\n return undefined;\n }\n\n const threshold = 3600 * 1000;\n const performanceNow = performance.now();\n const dateNow = Date.now();\n\n // if timeOrigin isn't available set delta to threshold so it isn't used\n const timeOriginDelta = performance.timeOrigin\n ? Math.abs(performance.timeOrigin + performanceNow - dateNow)\n : threshold;\n const timeOriginIsReliable = timeOriginDelta < threshold;\n\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n // Date API.\n // eslint-disable-next-line deprecation/deprecation\n const navigationStart = performance.timing && performance.timing.navigationStart;\n const hasNavigationStart = typeof navigationStart === 'number';\n // if navigationStart isn't available set delta to threshold so it isn't used\n const navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold;\n const navigationStartIsReliable = navigationStartDelta < threshold;\n\n if (timeOriginIsReliable || navigationStartIsReliable) {\n // Use the more reliable time origin\n if (timeOriginDelta <= navigationStartDelta) {\n _browserPerformanceTimeOriginMode = 'timeOrigin';\n return performance.timeOrigin;\n } else {\n _browserPerformanceTimeOriginMode = 'navigationStart';\n return navigationStart;\n }\n }\n\n // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to Date.\n _browserPerformanceTimeOriginMode = 'dateNow';\n return dateNow;\n})();\n\nexport { _browserPerformanceTimeOriginMode, browserPerformanceTimeOrigin, dateTimestampInSeconds, timestampInSeconds, timestampWithMs, usingPerformanceAPI };\n","/** Internal global with common properties and Sentry extensions */\n\n// The code below for 'isGlobalObj' and 'GLOBAL_OBJ' was copied from core-js before modification\n// https://github.com/zloirock/core-js/blob/1b944df55282cdc99c90db5f49eb0b6eda2cc0a3/packages/core-js/internals/global.js\n// core-js has the following licence:\n//\n// Copyright (c) 2014-2022 Denis Pushkarev\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/** Returns 'obj' if it's the global object, otherwise returns undefined */\nfunction isGlobalObj(obj) {\n return obj && obj.Math == Math ? obj : undefined;\n}\n\n/** Get's the global object for the current JavaScript runtime */\nconst GLOBAL_OBJ =\n (typeof globalThis == 'object' && isGlobalObj(globalThis)) ||\n // eslint-disable-next-line no-restricted-globals\n (typeof window == 'object' && isGlobalObj(window)) ||\n (typeof self == 'object' && isGlobalObj(self)) ||\n (typeof global == 'object' && isGlobalObj(global)) ||\n (function () {\n return this;\n })() ||\n {};\n\n/**\n * @deprecated Use GLOBAL_OBJ instead or WINDOW from @sentry/browser. This will be removed in v8\n */\nfunction getGlobalObject() {\n return GLOBAL_OBJ ;\n}\n\n/**\n * Returns a global singleton contained in the global `__SENTRY__` object.\n *\n * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory\n * function and added to the `__SENTRY__` object.\n *\n * @param name name of the global singleton on __SENTRY__\n * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__`\n * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `GLOBAL_OBJ`'s return value\n * @returns the singleton\n */\nfunction getGlobalSingleton(name, creator, obj) {\n const gbl = (obj || GLOBAL_OBJ) ;\n const __SENTRY__ = (gbl.__SENTRY__ = gbl.__SENTRY__ || {});\n const singleton = __SENTRY__[name] || (__SENTRY__[name] = creator());\n return singleton;\n}\n\nexport { GLOBAL_OBJ, getGlobalObject, getGlobalSingleton };\n","const DEFAULT_ENVIRONMENT = 'production';\n\nexport { DEFAULT_ENVIRONMENT };\n","import { logger, uuid4 } from '@sentry/utils';\nimport { getCurrentHub } from './hub.js';\n\n// Note: All functions in this file are typed with a return value of `ReturnType`,\n// where HUB_FUNCTION is some method on the Hub class.\n//\n// This is done to make sure the top level SDK methods stay in sync with the hub methods.\n// Although every method here has an explicit return type, some of them (that map to void returns) do not\n// contain `return` keywords. This is done to save on bundle size, as `return` is not minifiable.\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception An exception-like object.\n * @param captureContext Additional scope data to apply to exception event.\n * @returns The generated eventId.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nfunction captureException(exception, captureContext) {\n return getCurrentHub().captureException(exception, { captureContext });\n}\n\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param message The message to send to Sentry.\n * @param Severity Define the level of the message.\n * @returns The generated eventId.\n */\nfunction captureMessage(\n message,\n // eslint-disable-next-line deprecation/deprecation\n captureContext,\n) {\n // This is necessary to provide explicit scopes upgrade, without changing the original\n // arity of the `captureMessage(message, level)` method.\n const level = typeof captureContext === 'string' ? captureContext : undefined;\n const context = typeof captureContext !== 'string' ? { captureContext } : undefined;\n return getCurrentHub().captureMessage(message, level, context);\n}\n\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param event The event to send to Sentry.\n * @returns The generated eventId.\n */\nfunction captureEvent(event, hint) {\n return getCurrentHub().captureEvent(event, hint);\n}\n\n/**\n * Callback to set context information onto the scope.\n * @param callback Callback function that receives Scope.\n */\nfunction configureScope(callback) {\n getCurrentHub().configureScope(callback);\n}\n\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n *\n * @param breadcrumb The breadcrumb to record.\n */\nfunction addBreadcrumb(breadcrumb) {\n getCurrentHub().addBreadcrumb(breadcrumb);\n}\n\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normalized.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction setContext(name, context) {\n getCurrentHub().setContext(name, context);\n}\n\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\nfunction setExtras(extras) {\n getCurrentHub().setExtras(extras);\n}\n\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normalized.\n */\nfunction setExtra(key, extra) {\n getCurrentHub().setExtra(key, extra);\n}\n\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\nfunction setTags(tags) {\n getCurrentHub().setTags(tags);\n}\n\n/**\n * Set key:value that will be sent as tags data with the event.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key String key of tag\n * @param value Value of tag\n */\nfunction setTag(key, value) {\n getCurrentHub().setTag(key, value);\n}\n\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\nfunction setUser(user) {\n getCurrentHub().setUser(user);\n}\n\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n *\n * This is essentially a convenience function for:\n *\n * pushScope();\n * callback();\n * popScope();\n *\n * @param callback that will be enclosed into push/popScope.\n */\nfunction withScope(callback) {\n getCurrentHub().withScope(callback);\n}\n\n/**\n * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n * new child span within the transaction or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.finish()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\n *\n * NOTE: This function should only be used for *manual* instrumentation. Auto-instrumentation should call\n * `startTransaction` directly on the hub.\n *\n * @param context Properties of the new `Transaction`.\n * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n * default values). See {@link Options.tracesSampler}.\n *\n * @returns The transaction which was just started\n */\nfunction startTransaction(\n context,\n customSamplingContext,\n) {\n return getCurrentHub().startTransaction({ ...context }, customSamplingContext);\n}\n\n/**\n * Create a cron monitor check in and send it to Sentry.\n *\n * @param checkIn An object that describes a check in.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nfunction captureCheckIn(checkIn, upsertMonitorConfig) {\n const hub = getCurrentHub();\n const scope = hub.getScope();\n const client = hub.getClient();\n if (!client) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Cannot capture check-in. No client defined.');\n } else if (!client.captureCheckIn) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Cannot capture check-in. Client does not support sending check-ins.');\n } else {\n return client.captureCheckIn(checkIn, upsertMonitorConfig, scope);\n }\n\n return uuid4();\n}\n\n/**\n * Call `flush()` on the current client, if there is one. See {@link Client.flush}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue. Omitting this parameter will cause\n * the client to wait until all events are sent before resolving the promise.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nasync function flush(timeout) {\n const client = getCurrentHub().getClient();\n if (client) {\n return client.flush(timeout);\n }\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Cannot flush events. No client defined.');\n return Promise.resolve(false);\n}\n\n/**\n * Call `close()` on the current client, if there is one. See {@link Client.close}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue before shutting down. Omitting this\n * parameter will cause the client to wait until all events are sent before disabling itself.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nasync function close(timeout) {\n const client = getCurrentHub().getClient();\n if (client) {\n return client.close(timeout);\n }\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Cannot flush events and disable SDK. No client defined.');\n return Promise.resolve(false);\n}\n\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n */\nfunction lastEventId() {\n return getCurrentHub().lastEventId();\n}\n\nexport { addBreadcrumb, captureCheckIn, captureEvent, captureException, captureMessage, close, configureScope, flush, lastEventId, setContext, setExtra, setExtras, setTag, setTags, setUser, startTransaction, withScope };\n","import { uuid4, dateTimestampInSeconds, consoleSandbox, logger, GLOBAL_OBJ, getGlobalSingleton } from '@sentry/utils';\nimport { DEFAULT_ENVIRONMENT } from './constants.js';\nimport { Scope } from './scope.js';\nimport { closeSession, makeSession, updateSession } from './session.js';\n\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be increased when the global interface\n * changes and new methods are introduced.\n *\n * @hidden\n */\nconst API_VERSION = 4;\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\n\n/**\n * @inheritDoc\n */\nclass Hub {\n /** Is a {@link Layer}[] containing the client and scope */\n\n /** Contains the last event id of a captured event. */\n\n /**\n * Creates a new instance of the hub, will push one {@link Layer} into the\n * internal stack on creation.\n *\n * @param client bound to the hub.\n * @param scope bound to the hub.\n * @param version number, higher number means higher priority.\n */\n constructor(client, scope = new Scope(), _version = API_VERSION) {this._version = _version;\n this._stack = [{ scope }];\n if (client) {\n this.bindClient(client);\n }\n }\n\n /**\n * @inheritDoc\n */\n isOlderThan(version) {\n return this._version < version;\n }\n\n /**\n * @inheritDoc\n */\n bindClient(client) {\n const top = this.getStackTop();\n top.client = client;\n if (client && client.setupIntegrations) {\n client.setupIntegrations();\n }\n }\n\n /**\n * @inheritDoc\n */\n pushScope() {\n // We want to clone the content of prev scope\n const scope = Scope.clone(this.getScope());\n this.getStack().push({\n client: this.getClient(),\n scope,\n });\n return scope;\n }\n\n /**\n * @inheritDoc\n */\n popScope() {\n if (this.getStack().length <= 1) return false;\n return !!this.getStack().pop();\n }\n\n /**\n * @inheritDoc\n */\n withScope(callback) {\n const scope = this.pushScope();\n try {\n callback(scope);\n } finally {\n this.popScope();\n }\n }\n\n /**\n * @inheritDoc\n */\n getClient() {\n return this.getStackTop().client ;\n }\n\n /** Returns the scope of the top stack. */\n getScope() {\n return this.getStackTop().scope;\n }\n\n /** Returns the scope stack for domains or the process. */\n getStack() {\n return this._stack;\n }\n\n /** Returns the topmost scope layer in the order domain > local > process. */\n getStackTop() {\n return this._stack[this._stack.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n captureException(exception, hint) {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n const syntheticException = new Error('Sentry syntheticException');\n this._withClient((client, scope) => {\n client.captureException(\n exception,\n {\n originalException: exception,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n scope,\n );\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureMessage(\n message,\n // eslint-disable-next-line deprecation/deprecation\n level,\n hint,\n ) {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n const syntheticException = new Error(message);\n this._withClient((client, scope) => {\n client.captureMessage(\n message,\n level,\n {\n originalException: message,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n scope,\n );\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureEvent(event, hint) {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n if (!event.type) {\n this._lastEventId = eventId;\n }\n\n this._withClient((client, scope) => {\n client.captureEvent(event, { ...hint, event_id: eventId }, scope);\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n lastEventId() {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n */\n addBreadcrumb(breadcrumb, hint) {\n const { scope, client } = this.getStackTop();\n\n if (!client) return;\n\n const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =\n (client.getOptions && client.getOptions()) || {};\n\n if (maxBreadcrumbs <= 0) return;\n\n const timestamp = dateTimestampInSeconds();\n const mergedBreadcrumb = { timestamp, ...breadcrumb };\n const finalBreadcrumb = beforeBreadcrumb\n ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) )\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) return;\n\n if (client.emit) {\n client.emit('beforeAddBreadcrumb', finalBreadcrumb, hint);\n }\n\n scope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n }\n\n /**\n * @inheritDoc\n */\n setUser(user) {\n this.getScope().setUser(user);\n }\n\n /**\n * @inheritDoc\n */\n setTags(tags) {\n this.getScope().setTags(tags);\n }\n\n /**\n * @inheritDoc\n */\n setExtras(extras) {\n this.getScope().setExtras(extras);\n }\n\n /**\n * @inheritDoc\n */\n setTag(key, value) {\n this.getScope().setTag(key, value);\n }\n\n /**\n * @inheritDoc\n */\n setExtra(key, extra) {\n this.getScope().setExtra(key, extra);\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setContext(name, context) {\n this.getScope().setContext(name, context);\n }\n\n /**\n * @inheritDoc\n */\n configureScope(callback) {\n const { scope, client } = this.getStackTop();\n if (client) {\n callback(scope);\n }\n }\n\n /**\n * @inheritDoc\n */\n run(callback) {\n const oldHub = makeMain(this);\n try {\n callback(this);\n } finally {\n makeMain(oldHub);\n }\n }\n\n /**\n * @inheritDoc\n */\n getIntegration(integration) {\n const client = this.getClient();\n if (!client) return null;\n try {\n return client.getIntegration(integration);\n } catch (_oO) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n startTransaction(context, customSamplingContext) {\n const result = this._callExtensionMethod('startTransaction', context, customSamplingContext);\n\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && !result) {\n // eslint-disable-next-line no-console\n console.warn(`Tracing extension 'startTransaction' has not been added. Call 'addTracingExtensions' before calling 'init':\nSentry.addTracingExtensions();\nSentry.init({...});\n`);\n }\n\n return result;\n }\n\n /**\n * @inheritDoc\n */\n traceHeaders() {\n return this._callExtensionMethod('traceHeaders');\n }\n\n /**\n * @inheritDoc\n */\n captureSession(endSession = false) {\n // both send the update and pull the session from the scope\n if (endSession) {\n return this.endSession();\n }\n\n // only send the update\n this._sendSessionUpdate();\n }\n\n /**\n * @inheritDoc\n */\n endSession() {\n const layer = this.getStackTop();\n const scope = layer.scope;\n const session = scope.getSession();\n if (session) {\n closeSession(session);\n }\n this._sendSessionUpdate();\n\n // the session is over; take it off of the scope\n scope.setSession();\n }\n\n /**\n * @inheritDoc\n */\n startSession(context) {\n const { scope, client } = this.getStackTop();\n const { release, environment = DEFAULT_ENVIRONMENT } = (client && client.getOptions()) || {};\n\n // Will fetch userAgent if called from browser sdk\n const { userAgent } = GLOBAL_OBJ.navigator || {};\n\n const session = makeSession({\n release,\n environment,\n user: scope.getUser(),\n ...(userAgent && { userAgent }),\n ...context,\n });\n\n // End existing session if there's one\n const currentSession = scope.getSession && scope.getSession();\n if (currentSession && currentSession.status === 'ok') {\n updateSession(currentSession, { status: 'exited' });\n }\n this.endSession();\n\n // Afterwards we set the new session on the scope\n scope.setSession(session);\n\n return session;\n }\n\n /**\n * Returns if default PII should be sent to Sentry and propagated in ourgoing requests\n * when Tracing is used.\n */\n shouldSendDefaultPii() {\n const client = this.getClient();\n const options = client && client.getOptions();\n return Boolean(options && options.sendDefaultPii);\n }\n\n /**\n * Sends the current Session on the scope\n */\n _sendSessionUpdate() {\n const { scope, client } = this.getStackTop();\n\n const session = scope.getSession();\n if (session && client && client.captureSession) {\n client.captureSession(session);\n }\n }\n\n /**\n * Internal helper function to call a method on the top client if it exists.\n *\n * @param method The method to call on the client.\n * @param args Arguments to pass to the client function.\n */\n _withClient(callback) {\n const { scope, client } = this.getStackTop();\n if (client) {\n callback(client, scope);\n }\n }\n\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-ignore Function lacks ending return statement and return type does not include 'undefined'. ts(2366)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _callExtensionMethod(method, ...args) {\n const carrier = getMainCarrier();\n const sentry = carrier.__SENTRY__;\n if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n return sentry.extensions[method].apply(this, args);\n }\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`Extension method ${method} couldn't be found, doing nothing.`);\n }\n}\n\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nfunction getMainCarrier() {\n GLOBAL_OBJ.__SENTRY__ = GLOBAL_OBJ.__SENTRY__ || {\n extensions: {},\n hub: undefined,\n };\n return GLOBAL_OBJ;\n}\n\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n */\nfunction makeMain(hub) {\n const registry = getMainCarrier();\n const oldHub = getHubFromCarrier(registry);\n setHubOnCarrier(registry, hub);\n return oldHub;\n}\n\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n */\nfunction getCurrentHub() {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n\n if (registry.__SENTRY__ && registry.__SENTRY__.acs) {\n const hub = registry.__SENTRY__.acs.getCurrentHub();\n\n if (hub) {\n return hub;\n }\n }\n\n // Return hub that lives on a global object\n return getGlobalHub(registry);\n}\n\nfunction getGlobalHub(registry = getMainCarrier()) {\n // If there's no hub, or its an old API, assign a new one\n if (!hasHubOnCarrier(registry) || getHubFromCarrier(registry).isOlderThan(API_VERSION)) {\n setHubOnCarrier(registry, new Hub());\n }\n\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n}\n\n/**\n * @private Private API with no semver guarantees!\n *\n * If the carrier does not contain a hub, a new hub is created with the global hub client and scope.\n */\nfunction ensureHubOnCarrier(carrier, parent = getGlobalHub()) {\n // If there's no hub on current domain, or it's an old API, assign a new one\n if (!hasHubOnCarrier(carrier) || getHubFromCarrier(carrier).isOlderThan(API_VERSION)) {\n const globalHubTopStack = parent.getStackTop();\n setHubOnCarrier(carrier, new Hub(globalHubTopStack.client, Scope.clone(globalHubTopStack.scope)));\n }\n}\n\n/**\n * @private Private API with no semver guarantees!\n *\n * Sets the global async context strategy\n */\nfunction setAsyncContextStrategy(strategy) {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n registry.__SENTRY__ = registry.__SENTRY__ || {};\n registry.__SENTRY__.acs = strategy;\n}\n\n/**\n * Runs the supplied callback in its own async context. Async Context strategies are defined per SDK.\n *\n * @param callback The callback to run in its own async context\n * @param options Options to pass to the async context strategy\n * @returns The result of the callback\n */\nfunction runWithAsyncContext(callback, options = {}) {\n const registry = getMainCarrier();\n\n if (registry.__SENTRY__ && registry.__SENTRY__.acs) {\n return registry.__SENTRY__.acs.runWithAsyncContext(callback, options);\n }\n\n // if there was no strategy, fallback to just calling the callback\n return callback();\n}\n\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier) {\n return !!(carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub);\n}\n\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\nfunction getHubFromCarrier(carrier) {\n return getGlobalSingleton('hub', () => new Hub(), carrier);\n}\n\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n * @returns A boolean indicating success or failure\n */\nfunction setHubOnCarrier(carrier, hub) {\n if (!carrier) return false;\n const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n __SENTRY__.hub = hub;\n return true;\n}\n\nexport { API_VERSION, Hub, ensureHubOnCarrier, getCurrentHub, getHubFromCarrier, getMainCarrier, makeMain, runWithAsyncContext, setAsyncContextStrategy, setHubOnCarrier };\n","import { isPlainObject, dateTimestampInSeconds, SyncPromise, logger, isThenable, arrayify, getGlobalSingleton, uuid4 } from '@sentry/utils';\nimport { updateSession } from './session.js';\n\n/**\n * Default value for maximum number of breadcrumbs added to an event.\n */\nconst DEFAULT_MAX_BREADCRUMBS = 100;\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nclass Scope {\n /** Flag if notifying is happening. */\n\n /** Callback for client to receive scope changes. */\n\n /** Callback list that will be called after {@link applyToEvent}. */\n\n /** Array of breadcrumbs. */\n\n /** User */\n\n /** Tags */\n\n /** Extra */\n\n /** Contexts */\n\n /** Attachments */\n\n /** Propagation Context for distributed tracing */\n\n /**\n * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get\n * sent to Sentry\n */\n\n /** Fingerprint */\n\n /** Severity */\n // eslint-disable-next-line deprecation/deprecation\n\n /** Transaction Name */\n\n /** Span */\n\n /** Session */\n\n /** Request Mode Session Status */\n\n // NOTE: Any field which gets added here should get added not only to the constructor but also to the `clone` method.\n\n constructor() {\n this._notifyingListeners = false;\n this._scopeListeners = [];\n this._eventProcessors = [];\n this._breadcrumbs = [];\n this._attachments = [];\n this._user = {};\n this._tags = {};\n this._extra = {};\n this._contexts = {};\n this._sdkProcessingMetadata = {};\n this._propagationContext = generatePropagationContext();\n }\n\n /**\n * Inherit values from the parent scope.\n * @param scope to clone.\n */\n static clone(scope) {\n const newScope = new Scope();\n if (scope) {\n newScope._breadcrumbs = [...scope._breadcrumbs];\n newScope._tags = { ...scope._tags };\n newScope._extra = { ...scope._extra };\n newScope._contexts = { ...scope._contexts };\n newScope._user = scope._user;\n newScope._level = scope._level;\n newScope._span = scope._span;\n newScope._session = scope._session;\n newScope._transactionName = scope._transactionName;\n newScope._fingerprint = scope._fingerprint;\n newScope._eventProcessors = [...scope._eventProcessors];\n newScope._requestSession = scope._requestSession;\n newScope._attachments = [...scope._attachments];\n newScope._sdkProcessingMetadata = { ...scope._sdkProcessingMetadata };\n newScope._propagationContext = { ...scope._propagationContext };\n }\n return newScope;\n }\n\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n addScopeListener(callback) {\n this._scopeListeners.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n addEventProcessor(callback) {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setUser(user) {\n this._user = user || {};\n if (this._session) {\n updateSession(this._session, { user });\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getUser() {\n return this._user;\n }\n\n /**\n * @inheritDoc\n */\n getRequestSession() {\n return this._requestSession;\n }\n\n /**\n * @inheritDoc\n */\n setRequestSession(requestSession) {\n this._requestSession = requestSession;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setTags(tags) {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setTag(key, value) {\n this._tags = { ...this._tags, [key]: value };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setExtras(extras) {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setExtra(key, extra) {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setFingerprint(fingerprint) {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setLevel(\n // eslint-disable-next-line deprecation/deprecation\n level,\n ) {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setTransactionName(name) {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setContext(key, context) {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts[key] = context;\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setSpan(span) {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getSpan() {\n return this._span;\n }\n\n /**\n * @inheritDoc\n */\n getTransaction() {\n // Often, this span (if it exists at all) will be a transaction, but it's not guaranteed to be. Regardless, it will\n // have a pointer to the currently-active transaction.\n const span = this.getSpan();\n return span && span.transaction;\n }\n\n /**\n * @inheritDoc\n */\n setSession(session) {\n if (!session) {\n delete this._session;\n } else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getSession() {\n return this._session;\n }\n\n /**\n * @inheritDoc\n */\n update(captureContext) {\n if (!captureContext) {\n return this;\n }\n\n if (typeof captureContext === 'function') {\n const updatedScope = (captureContext )(this);\n return updatedScope instanceof Scope ? updatedScope : this;\n }\n\n if (captureContext instanceof Scope) {\n this._tags = { ...this._tags, ...captureContext._tags };\n this._extra = { ...this._extra, ...captureContext._extra };\n this._contexts = { ...this._contexts, ...captureContext._contexts };\n if (captureContext._user && Object.keys(captureContext._user).length) {\n this._user = captureContext._user;\n }\n if (captureContext._level) {\n this._level = captureContext._level;\n }\n if (captureContext._fingerprint) {\n this._fingerprint = captureContext._fingerprint;\n }\n if (captureContext._requestSession) {\n this._requestSession = captureContext._requestSession;\n }\n if (captureContext._propagationContext) {\n this._propagationContext = captureContext._propagationContext;\n }\n } else if (isPlainObject(captureContext)) {\n // eslint-disable-next-line no-param-reassign\n captureContext = captureContext ;\n this._tags = { ...this._tags, ...captureContext.tags };\n this._extra = { ...this._extra, ...captureContext.extra };\n this._contexts = { ...this._contexts, ...captureContext.contexts };\n if (captureContext.user) {\n this._user = captureContext.user;\n }\n if (captureContext.level) {\n this._level = captureContext.level;\n }\n if (captureContext.fingerprint) {\n this._fingerprint = captureContext.fingerprint;\n }\n if (captureContext.requestSession) {\n this._requestSession = captureContext.requestSession;\n }\n if (captureContext.propagationContext) {\n this._propagationContext = captureContext.propagationContext;\n }\n }\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n clear() {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._requestSession = undefined;\n this._span = undefined;\n this._session = undefined;\n this._notifyScopeListeners();\n this._attachments = [];\n this._propagationContext = generatePropagationContext();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n addBreadcrumb(breadcrumb, maxBreadcrumbs) {\n const maxCrumbs = typeof maxBreadcrumbs === 'number' ? maxBreadcrumbs : DEFAULT_MAX_BREADCRUMBS;\n\n // No data has been changed, so don't notify scope listeners\n if (maxCrumbs <= 0) {\n return this;\n }\n\n const mergedBreadcrumb = {\n timestamp: dateTimestampInSeconds(),\n ...breadcrumb,\n };\n this._breadcrumbs = [...this._breadcrumbs, mergedBreadcrumb].slice(-maxCrumbs);\n this._notifyScopeListeners();\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getLastBreadcrumb() {\n return this._breadcrumbs[this._breadcrumbs.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n clearBreadcrumbs() {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n addAttachment(attachment) {\n this._attachments.push(attachment);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getAttachments() {\n return this._attachments;\n }\n\n /**\n * @inheritDoc\n */\n clearAttachments() {\n this._attachments = [];\n return this;\n }\n\n /**\n * Applies data from the scope to the event and runs all event processors on it.\n *\n * @param event Event\n * @param hint Object containing additional information about the original exception, for use by the event processors.\n * @hidden\n */\n applyToEvent(event, hint = {}) {\n if (this._extra && Object.keys(this._extra).length) {\n event.extra = { ...this._extra, ...event.extra };\n }\n if (this._tags && Object.keys(this._tags).length) {\n event.tags = { ...this._tags, ...event.tags };\n }\n if (this._user && Object.keys(this._user).length) {\n event.user = { ...this._user, ...event.user };\n }\n if (this._contexts && Object.keys(this._contexts).length) {\n event.contexts = { ...this._contexts, ...event.contexts };\n }\n if (this._level) {\n event.level = this._level;\n }\n if (this._transactionName) {\n event.transaction = this._transactionName;\n }\n\n // We want to set the trace context for normal events only if there isn't already\n // a trace context on the event. There is a product feature in place where we link\n // errors with transaction and it relies on that.\n if (this._span) {\n event.contexts = { trace: this._span.getTraceContext(), ...event.contexts };\n const transaction = this._span.transaction;\n if (transaction) {\n event.sdkProcessingMetadata = {\n dynamicSamplingContext: transaction.getDynamicSamplingContext(),\n ...event.sdkProcessingMetadata,\n };\n const transactionName = transaction.name;\n if (transactionName) {\n event.tags = { transaction: transactionName, ...event.tags };\n }\n }\n }\n\n this._applyFingerprint(event);\n\n event.breadcrumbs = [...(event.breadcrumbs || []), ...this._breadcrumbs];\n event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n\n event.sdkProcessingMetadata = {\n ...event.sdkProcessingMetadata,\n ...this._sdkProcessingMetadata,\n propagationContext: this._propagationContext,\n };\n\n return this._notifyEventProcessors([...getGlobalEventProcessors(), ...this._eventProcessors], event, hint);\n }\n\n /**\n * Add data which will be accessible during event processing but won't get sent to Sentry\n */\n setSDKProcessingMetadata(newData) {\n this._sdkProcessingMetadata = { ...this._sdkProcessingMetadata, ...newData };\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setPropagationContext(context) {\n this._propagationContext = context;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getPropagationContext() {\n return this._propagationContext;\n }\n\n /**\n * This will be called after {@link applyToEvent} is finished.\n */\n _notifyEventProcessors(\n processors,\n event,\n hint,\n index = 0,\n ) {\n return new SyncPromise((resolve, reject) => {\n const processor = processors[index];\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n } else {\n const result = processor({ ...event }, hint) ;\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n processor.id &&\n result === null &&\n logger.log(`Event processor \"${processor.id}\" dropped event`);\n\n if (isThenable(result)) {\n void result\n .then(final => this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n .then(null, reject);\n } else {\n void this._notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n }\n\n /**\n * This will be called on every set call.\n */\n _notifyScopeListeners() {\n // We need this check for this._notifyingListeners to be able to work on scope during updates\n // If this check is not here we'll produce endless recursion when something is done with the scope\n // during the callback.\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n this._scopeListeners.forEach(callback => {\n callback(this);\n });\n this._notifyingListeners = false;\n }\n }\n\n /**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\n _applyFingerprint(event) {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint ? arrayify(event.fingerprint) : [];\n\n // If we have something on the scope, then merge it with event\n if (this._fingerprint) {\n event.fingerprint = event.fingerprint.concat(this._fingerprint);\n }\n\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n }\n}\n\n/**\n * Returns the global event processors.\n */\nfunction getGlobalEventProcessors() {\n return getGlobalSingleton('globalEventProcessors', () => []);\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nfunction addGlobalEventProcessor(callback) {\n getGlobalEventProcessors().push(callback);\n}\n\nfunction generatePropagationContext() {\n return {\n traceId: uuid4(),\n spanId: uuid4().substring(16),\n sampled: false,\n };\n}\n\nexport { Scope, addGlobalEventProcessor };\n","import { timestampInSeconds, uuid4, dropUndefinedKeys } from '@sentry/utils';\n\n/**\n * Creates a new `Session` object by setting certain default parameters. If optional @param context\n * is passed, the passed properties are applied to the session object.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns a new `Session` object\n */\nfunction makeSession(context) {\n // Both timestamp and started are in seconds since the UNIX epoch.\n const startingTime = timestampInSeconds();\n\n const session = {\n sid: uuid4(),\n init: true,\n timestamp: startingTime,\n started: startingTime,\n duration: 0,\n status: 'ok',\n errors: 0,\n ignoreDuration: false,\n toJSON: () => sessionToJSON(session),\n };\n\n if (context) {\n updateSession(session, context);\n }\n\n return session;\n}\n\n/**\n * Updates a session object with the properties passed in the context.\n *\n * Note that this function mutates the passed object and returns void.\n * (Had to do this instead of returning a new and updated session because closing and sending a session\n * makes an update to the session after it was passed to the sending logic.\n * @see BaseClient.captureSession )\n *\n * @param session the `Session` to update\n * @param context the `SessionContext` holding the properties that should be updated in @param session\n */\n// eslint-disable-next-line complexity\nfunction updateSession(session, context = {}) {\n if (context.user) {\n if (!session.ipAddress && context.user.ip_address) {\n session.ipAddress = context.user.ip_address;\n }\n\n if (!session.did && !context.did) {\n session.did = context.user.id || context.user.email || context.user.username;\n }\n }\n\n session.timestamp = context.timestamp || timestampInSeconds();\n\n if (context.ignoreDuration) {\n session.ignoreDuration = context.ignoreDuration;\n }\n if (context.sid) {\n // Good enough uuid validation. — Kamil\n session.sid = context.sid.length === 32 ? context.sid : uuid4();\n }\n if (context.init !== undefined) {\n session.init = context.init;\n }\n if (!session.did && context.did) {\n session.did = `${context.did}`;\n }\n if (typeof context.started === 'number') {\n session.started = context.started;\n }\n if (session.ignoreDuration) {\n session.duration = undefined;\n } else if (typeof context.duration === 'number') {\n session.duration = context.duration;\n } else {\n const duration = session.timestamp - session.started;\n session.duration = duration >= 0 ? duration : 0;\n }\n if (context.release) {\n session.release = context.release;\n }\n if (context.environment) {\n session.environment = context.environment;\n }\n if (!session.ipAddress && context.ipAddress) {\n session.ipAddress = context.ipAddress;\n }\n if (!session.userAgent && context.userAgent) {\n session.userAgent = context.userAgent;\n }\n if (typeof context.errors === 'number') {\n session.errors = context.errors;\n }\n if (context.status) {\n session.status = context.status;\n }\n}\n\n/**\n * Closes a session by setting its status and updating the session object with it.\n * Internally calls `updateSession` to update the passed session object.\n *\n * Note that this function mutates the passed session (@see updateSession for explanation).\n *\n * @param session the `Session` object to be closed\n * @param status the `SessionStatus` with which the session was closed. If you don't pass a status,\n * this function will keep the previously set status, unless it was `'ok'` in which case\n * it is changed to `'exited'`.\n */\nfunction closeSession(session, status) {\n let context = {};\n if (status) {\n context = { status };\n } else if (session.status === 'ok') {\n context = { status: 'exited' };\n }\n\n updateSession(session, context);\n}\n\n/**\n * Serializes a passed session object to a JSON object with a slightly different structure.\n * This is necessary because the Sentry backend requires a slightly different schema of a session\n * than the one the JS SDKs use internally.\n *\n * @param session the session to be converted\n *\n * @returns a JSON object of the passed session\n */\nfunction sessionToJSON(session) {\n return dropUndefinedKeys({\n sid: `${session.sid}`,\n init: session.init,\n // Make sure that sec is converted to ms for date constructor\n started: new Date(session.started * 1000).toISOString(),\n timestamp: new Date(session.timestamp * 1000).toISOString(),\n status: session.status,\n errors: session.errors,\n did: typeof session.did === 'number' || typeof session.did === 'string' ? `${session.did}` : undefined,\n duration: session.duration,\n attrs: {\n release: session.release,\n environment: session.environment,\n ip_address: session.ipAddress,\n user_agent: session.userAgent,\n },\n });\n}\n\nexport { closeSession, makeSession, updateSession };\n","import { dropUndefinedKeys } from '@sentry/utils';\nimport { DEFAULT_ENVIRONMENT } from '../constants.js';\n\n/**\n * Creates a dynamic sampling context from a client.\n *\n * Dispatchs the `createDsc` lifecycle hook as a side effect.\n */\nfunction getDynamicSamplingContextFromClient(\n trace_id,\n client,\n scope,\n) {\n const options = client.getOptions();\n\n const { publicKey: public_key } = client.getDsn() || {};\n const { segment: user_segment } = (scope && scope.getUser()) || {};\n\n const dsc = dropUndefinedKeys({\n environment: options.environment || DEFAULT_ENVIRONMENT,\n release: options.release,\n user_segment,\n public_key,\n trace_id,\n }) ;\n\n client.emit && client.emit('createDsc', dsc);\n\n return dsc;\n}\n\nexport { getDynamicSamplingContextFromClient };\n","import { addInstrumentationHandler, logger } from '@sentry/utils';\nimport { getActiveTransaction } from './utils.js';\n\nlet errorsInstrumented = false;\n\n/**\n * Configures global error listeners\n */\nfunction registerErrorInstrumentation() {\n if (errorsInstrumented) {\n return;\n }\n\n errorsInstrumented = true;\n addInstrumentationHandler('error', errorCallback);\n addInstrumentationHandler('unhandledrejection', errorCallback);\n}\n\n/**\n * If an error or unhandled promise occurs, we mark the active transaction as failed\n */\nfunction errorCallback() {\n const activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n const status = 'internal_error';\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] Transaction: ${status} -> Global error occured`);\n activeTransaction.setStatus(status);\n }\n}\n\n// The function name will be lost when bundling but we need to be able to identify this listener later to maintain the\n// node.js default exit behaviour\nerrorCallback.tag = 'sentry_tracingErrorCallback';\n\nexport { registerErrorInstrumentation };\n","import { logger, isNaN } from '@sentry/utils';\nimport { getMainCarrier } from '../hub.js';\nimport { hasTracingEnabled } from '../utils/hasTracingEnabled.js';\nimport { registerErrorInstrumentation } from './errors.js';\nimport { IdleTransaction } from './idletransaction.js';\nimport { Transaction } from './transaction.js';\n\n/** Returns all trace headers that are currently on the top scope. */\nfunction traceHeaders() {\n const scope = this.getScope();\n const span = scope.getSpan();\n\n return span\n ? {\n 'sentry-trace': span.toTraceparent(),\n }\n : {};\n}\n\n/**\n * Makes a sampling decision for the given transaction and stores it on the transaction.\n *\n * Called every time a transaction is created. Only transactions which emerge with a `sampled` value of `true` will be\n * sent to Sentry.\n *\n * @param transaction: The transaction needing a sampling decision\n * @param options: The current client's options, so we can access `tracesSampleRate` and/or `tracesSampler`\n * @param samplingContext: Default and user-provided data which may be used to help make the decision\n *\n * @returns The given transaction with its `sampled` value set\n */\nfunction sample(\n transaction,\n options,\n samplingContext,\n) {\n // nothing to do if tracing is not enabled\n if (!hasTracingEnabled(options)) {\n transaction.sampled = false;\n return transaction;\n }\n\n // if the user has forced a sampling decision by passing a `sampled` value in their transaction context, go with that\n if (transaction.sampled !== undefined) {\n transaction.setMetadata({\n sampleRate: Number(transaction.sampled),\n });\n return transaction;\n }\n\n // we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` nor `enableTracing` were defined, so one of these should\n // work; prefer the hook if so\n let sampleRate;\n if (typeof options.tracesSampler === 'function') {\n sampleRate = options.tracesSampler(samplingContext);\n transaction.setMetadata({\n sampleRate: Number(sampleRate),\n });\n } else if (samplingContext.parentSampled !== undefined) {\n sampleRate = samplingContext.parentSampled;\n } else if (typeof options.tracesSampleRate !== 'undefined') {\n sampleRate = options.tracesSampleRate;\n transaction.setMetadata({\n sampleRate: Number(sampleRate),\n });\n } else {\n // When `enableTracing === true`, we use a sample rate of 100%\n sampleRate = 1;\n transaction.setMetadata({\n sampleRate,\n });\n }\n\n // Since this is coming from the user (or from a function provided by the user), who knows what we might get. (The\n // only valid values are booleans or numbers between 0 and 1.)\n if (!isValidSampleRate(sampleRate)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('[Tracing] Discarding transaction because of invalid sample rate.');\n transaction.sampled = false;\n return transaction;\n }\n\n // if the function returned 0 (or false), or if `tracesSampleRate` is 0, it's a sign the transaction should be dropped\n if (!sampleRate) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n `[Tracing] Discarding transaction because ${\n typeof options.tracesSampler === 'function'\n ? 'tracesSampler returned 0 or false'\n : 'a negative sampling decision was inherited or tracesSampleRate is set to 0'\n }`,\n );\n transaction.sampled = false;\n return transaction;\n }\n\n // Now we roll the dice. Math.random is inclusive of 0, but not of 1, so strict < is safe here. In case sampleRate is\n // a boolean, the < comparison will cause it to be automatically cast to 1 if it's true and 0 if it's false.\n transaction.sampled = Math.random() < (sampleRate );\n\n // if we're not going to keep it, we're done\n if (!transaction.sampled) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(\n sampleRate,\n )})`,\n );\n return transaction;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] starting ${transaction.op} transaction - ${transaction.name}`);\n return transaction;\n}\n\n/**\n * Checks the given sample rate to make sure it is valid type and value (a boolean, or a number between 0 and 1).\n */\nfunction isValidSampleRate(rate) {\n // we need to check NaN explicitly because it's of type 'number' and therefore wouldn't get caught by this typecheck\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (isNaN(rate) || !(typeof rate === 'number' || typeof rate === 'boolean')) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n rate,\n )} of type ${JSON.stringify(typeof rate)}.`,\n );\n return false;\n }\n\n // in case sampleRate is a boolean, it will get automatically cast to 1 if it's true and 0 if it's false\n if (rate < 0 || rate > 1) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(`[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got ${rate}.`);\n return false;\n }\n return true;\n}\n\n/**\n * Creates a new transaction and adds a sampling decision if it doesn't yet have one.\n *\n * The Hub.startTransaction method delegates to this method to do its work, passing the Hub instance in as `this`, as if\n * it had been called on the hub directly. Exists as a separate function so that it can be injected into the class as an\n * \"extension method.\"\n *\n * @param this: The Hub starting the transaction\n * @param transactionContext: Data used to configure the transaction\n * @param CustomSamplingContext: Optional data to be provided to the `tracesSampler` function (if any)\n *\n * @returns The new transaction\n *\n * @see {@link Hub.startTransaction}\n */\nfunction _startTransaction(\n\n transactionContext,\n customSamplingContext,\n) {\n const client = this.getClient();\n const options = (client && client.getOptions()) || {};\n\n const configInstrumenter = options.instrumenter || 'sentry';\n const transactionInstrumenter = transactionContext.instrumenter || 'sentry';\n\n if (configInstrumenter !== transactionInstrumenter) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.error(\n `A transaction was started with instrumenter=\\`${transactionInstrumenter}\\`, but the SDK is configured with the \\`${configInstrumenter}\\` instrumenter.\nThe transaction will not be sampled. Please use the ${configInstrumenter} instrumentation to start transactions.`,\n );\n\n transactionContext.sampled = false;\n }\n\n let transaction = new Transaction(transactionContext, this);\n transaction = sample(transaction, options, {\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n ...customSamplingContext,\n });\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans ));\n }\n if (client && client.emit) {\n client.emit('startTransaction', transaction);\n }\n return transaction;\n}\n\n/**\n * Create new idle transaction.\n */\nfunction startIdleTransaction(\n hub,\n transactionContext,\n idleTimeout,\n finalTimeout,\n onScope,\n customSamplingContext,\n heartbeatInterval,\n) {\n const client = hub.getClient();\n const options = (client && client.getOptions()) || {};\n\n let transaction = new IdleTransaction(transactionContext, hub, idleTimeout, finalTimeout, heartbeatInterval, onScope);\n transaction = sample(transaction, options, {\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n ...customSamplingContext,\n });\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans ));\n }\n if (client && client.emit) {\n client.emit('startTransaction', transaction);\n }\n return transaction;\n}\n\n/**\n * Adds tracing extensions to the global hub.\n */\nfunction addTracingExtensions() {\n const carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n carrier.__SENTRY__.extensions = carrier.__SENTRY__.extensions || {};\n if (!carrier.__SENTRY__.extensions.startTransaction) {\n carrier.__SENTRY__.extensions.startTransaction = _startTransaction;\n }\n if (!carrier.__SENTRY__.extensions.traceHeaders) {\n carrier.__SENTRY__.extensions.traceHeaders = traceHeaders;\n }\n\n registerErrorInstrumentation();\n}\n\nexport { addTracingExtensions, startIdleTransaction };\n","import { logger, timestampInSeconds } from '@sentry/utils';\nimport { SpanRecorder } from './span.js';\nimport { Transaction } from './transaction.js';\n\nconst TRACING_DEFAULTS = {\n idleTimeout: 1000,\n finalTimeout: 30000,\n heartbeatInterval: 5000,\n};\n\nconst FINISH_REASON_TAG = 'finishReason';\n\nconst IDLE_TRANSACTION_FINISH_REASONS = [\n 'heartbeatFailed',\n 'idleTimeout',\n 'documentHidden',\n 'finalTimeout',\n 'externalFinish',\n 'cancelled',\n];\n\n/**\n * @inheritDoc\n */\nclass IdleTransactionSpanRecorder extends SpanRecorder {\n constructor(\n _pushActivity,\n _popActivity,\n transactionSpanId,\n maxlen,\n ) {\n super(maxlen);this._pushActivity = _pushActivity;this._popActivity = _popActivity;this.transactionSpanId = transactionSpanId; }\n\n /**\n * @inheritDoc\n */\n add(span) {\n // We should make sure we do not push and pop activities for\n // the transaction that this span recorder belongs to.\n if (span.spanId !== this.transactionSpanId) {\n // We patch span.finish() to pop an activity after setting an endTimestamp.\n span.finish = (endTimestamp) => {\n span.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampInSeconds();\n this._popActivity(span.spanId);\n };\n\n // We should only push new activities if the span does not have an end timestamp.\n if (span.endTimestamp === undefined) {\n this._pushActivity(span.spanId);\n }\n }\n\n super.add(span);\n }\n}\n\n/**\n * An IdleTransaction is a transaction that automatically finishes. It does this by tracking child spans as activities.\n * You can have multiple IdleTransactions active, but if the `onScope` option is specified, the idle transaction will\n * put itself on the scope on creation.\n */\nclass IdleTransaction extends Transaction {\n // Activities store a list of active spans\n\n // Track state of activities in previous heartbeat\n\n // Amount of times heartbeat has counted. Will cause transaction to finish after 3 beats.\n\n // We should not use heartbeat if we finished a transaction\n\n // Idle timeout was canceled and we should finish the transaction with the last span end.\n\n /**\n * Timer that tracks Transaction idleTimeout\n */\n\n constructor(\n transactionContext,\n _idleHub,\n /**\n * The time to wait in ms until the idle transaction will be finished. This timer is started each time\n * there are no active spans on this transaction.\n */\n _idleTimeout = TRACING_DEFAULTS.idleTimeout,\n /**\n * The final value in ms that a transaction cannot exceed\n */\n _finalTimeout = TRACING_DEFAULTS.finalTimeout,\n _heartbeatInterval = TRACING_DEFAULTS.heartbeatInterval,\n // Whether or not the transaction should put itself on the scope when it starts and pop itself off when it ends\n _onScope = false,\n ) {\n super(transactionContext, _idleHub);this._idleHub = _idleHub;this._idleTimeout = _idleTimeout;this._finalTimeout = _finalTimeout;this._heartbeatInterval = _heartbeatInterval;this._onScope = _onScope;\n this.activities = {};\n this._heartbeatCounter = 0;\n this._finished = false;\n this._idleTimeoutCanceledPermanently = false;\n this._beforeFinishCallbacks = [];\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[4];\n\n if (_onScope) {\n // We set the transaction here on the scope so error events pick up the trace\n // context and attach it to the error.\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Setting idle transaction on scope. Span ID: ${this.spanId}`);\n _idleHub.configureScope(scope => scope.setSpan(this));\n }\n\n this._restartIdleTimeout();\n setTimeout(() => {\n if (!this._finished) {\n this.setStatus('deadline_exceeded');\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[3];\n this.finish();\n }\n }, this._finalTimeout);\n }\n\n /** {@inheritDoc} */\n finish(endTimestamp = timestampInSeconds()) {\n this._finished = true;\n this.activities = {};\n\n if (this.op === 'ui.action.click') {\n this.setTag(FINISH_REASON_TAG, this._finishReason);\n }\n\n if (this.spanRecorder) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log('[Tracing] finishing IdleTransaction', new Date(endTimestamp * 1000).toISOString(), this.op);\n\n for (const callback of this._beforeFinishCallbacks) {\n callback(this, endTimestamp);\n }\n\n this.spanRecorder.spans = this.spanRecorder.spans.filter((span) => {\n // If we are dealing with the transaction itself, we just return it\n if (span.spanId === this.spanId) {\n return true;\n }\n\n // We cancel all pending spans with status \"cancelled\" to indicate the idle transaction was finished early\n if (!span.endTimestamp) {\n span.endTimestamp = endTimestamp;\n span.setStatus('cancelled');\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log('[Tracing] cancelling span since transaction ended early', JSON.stringify(span, undefined, 2));\n }\n\n const spanStartedBeforeTransactionFinish = span.startTimestamp < endTimestamp;\n\n // Add a delta with idle timeout so that we prevent false positives\n const timeoutWithMarginOfError = (this._finalTimeout + this._idleTimeout) / 1000;\n const spanEndedBeforeFinalTimeout = span.endTimestamp - this.startTimestamp < timeoutWithMarginOfError;\n\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n const stringifiedSpan = JSON.stringify(span, undefined, 2);\n if (!spanStartedBeforeTransactionFinish) {\n logger.log('[Tracing] discarding Span since it happened after Transaction was finished', stringifiedSpan);\n } else if (!spanEndedBeforeFinalTimeout) {\n logger.log('[Tracing] discarding Span since it finished after Transaction final timeout', stringifiedSpan);\n }\n }\n\n return spanStartedBeforeTransactionFinish && spanEndedBeforeFinalTimeout;\n });\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] flushing IdleTransaction');\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] No active IdleTransaction');\n }\n\n // if `this._onScope` is `true`, the transaction put itself on the scope when it started\n if (this._onScope) {\n const scope = this._idleHub.getScope();\n if (scope.getTransaction() === this) {\n scope.setSpan(undefined);\n }\n }\n\n return super.finish(endTimestamp);\n }\n\n /**\n * Register a callback function that gets excecuted before the transaction finishes.\n * Useful for cleanup or if you want to add any additional spans based on current context.\n *\n * This is exposed because users have no other way of running something before an idle transaction\n * finishes.\n */\n registerBeforeFinishCallback(callback) {\n this._beforeFinishCallbacks.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n initSpanRecorder(maxlen) {\n if (!this.spanRecorder) {\n const pushActivity = (id) => {\n if (this._finished) {\n return;\n }\n this._pushActivity(id);\n };\n const popActivity = (id) => {\n if (this._finished) {\n return;\n }\n this._popActivity(id);\n };\n\n this.spanRecorder = new IdleTransactionSpanRecorder(pushActivity, popActivity, this.spanId, maxlen);\n\n // Start heartbeat so that transactions do not run forever.\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('Starting heartbeat');\n this._pingHeartbeat();\n }\n this.spanRecorder.add(this);\n }\n\n /**\n * Cancels the existing idle timeout, if there is one.\n * @param restartOnChildSpanChange Default is `true`.\n * If set to false the transaction will end\n * with the last child span.\n */\n cancelIdleTimeout(\n endTimestamp,\n {\n restartOnChildSpanChange,\n }\n\n = {\n restartOnChildSpanChange: true,\n },\n ) {\n this._idleTimeoutCanceledPermanently = restartOnChildSpanChange === false;\n if (this._idleTimeoutID) {\n clearTimeout(this._idleTimeoutID);\n this._idleTimeoutID = undefined;\n\n if (Object.keys(this.activities).length === 0 && this._idleTimeoutCanceledPermanently) {\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[5];\n this.finish(endTimestamp);\n }\n }\n }\n\n /**\n * Temporary method used to externally set the transaction's `finishReason`\n *\n * ** WARNING**\n * This is for the purpose of experimentation only and will be removed in the near future, do not use!\n *\n * @internal\n *\n */\n setFinishReason(reason) {\n this._finishReason = reason;\n }\n\n /**\n * Restarts idle timeout, if there is no running idle timeout it will start one.\n */\n _restartIdleTimeout(endTimestamp) {\n this.cancelIdleTimeout();\n this._idleTimeoutID = setTimeout(() => {\n if (!this._finished && Object.keys(this.activities).length === 0) {\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[1];\n this.finish(endTimestamp);\n }\n }, this._idleTimeout);\n }\n\n /**\n * Start tracking a specific activity.\n * @param spanId The span id that represents the activity\n */\n _pushActivity(spanId) {\n this.cancelIdleTimeout(undefined, { restartOnChildSpanChange: !this._idleTimeoutCanceledPermanently });\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] pushActivity: ${spanId}`);\n this.activities[spanId] = true;\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n /**\n * Remove an activity from usage\n * @param spanId The span id that represents the activity\n */\n _popActivity(spanId) {\n if (this.activities[spanId]) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] popActivity ${spanId}`);\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.activities[spanId];\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n if (Object.keys(this.activities).length === 0) {\n const endTimestamp = timestampInSeconds();\n if (this._idleTimeoutCanceledPermanently) {\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[5];\n this.finish(endTimestamp);\n } else {\n // We need to add the timeout here to have the real endtimestamp of the transaction\n // Remember timestampInSeconds is in seconds, timeout is in ms\n this._restartIdleTimeout(endTimestamp + this._idleTimeout / 1000);\n }\n }\n }\n\n /**\n * Checks when entries of this.activities are not changing for 3 beats.\n * If this occurs we finish the transaction.\n */\n _beat() {\n // We should not be running heartbeat if the idle transaction is finished.\n if (this._finished) {\n return;\n }\n\n const heartbeatString = Object.keys(this.activities).join('');\n\n if (heartbeatString === this._prevHeartbeatString) {\n this._heartbeatCounter++;\n } else {\n this._heartbeatCounter = 1;\n }\n\n this._prevHeartbeatString = heartbeatString;\n\n if (this._heartbeatCounter >= 3) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] Transaction finished because of no change for 3 heart beats');\n this.setStatus('deadline_exceeded');\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[0];\n this.finish();\n } else {\n this._pingHeartbeat();\n }\n }\n\n /**\n * Pings the heartbeat\n */\n _pingHeartbeat() {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`pinging Heartbeat -> current counter: ${this._heartbeatCounter}`);\n setTimeout(() => {\n this._beat();\n }, this._heartbeatInterval);\n }\n}\n\nexport { IdleTransaction, IdleTransactionSpanRecorder, TRACING_DEFAULTS };\n","import { uuid4, timestampInSeconds, logger, generateSentryTraceHeader, dropUndefinedKeys } from '@sentry/utils';\n\n/**\n * Keeps track of finished spans for a given transaction\n * @internal\n * @hideconstructor\n * @hidden\n */\nclass SpanRecorder {\n\n constructor(maxlen = 1000) {\n this._maxlen = maxlen;\n this.spans = [];\n }\n\n /**\n * This is just so that we don't run out of memory while recording a lot\n * of spans. At some point we just stop and flush out the start of the\n * trace tree (i.e.the first n spans with the smallest\n * start_timestamp).\n */\n add(span) {\n if (this.spans.length > this._maxlen) {\n span.spanRecorder = undefined;\n } else {\n this.spans.push(span);\n }\n }\n}\n\n/**\n * Span contains all data about a span\n */\nclass Span {\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * Internal keeper of the status\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * Timestamp in seconds when the span was created.\n */\n\n /**\n * Timestamp in seconds when the span ended.\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n /**\n * List of spans that were finalized\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * The instrumenter that created this span.\n */\n\n /**\n * You should never call the constructor manually, always use `Sentry.startTransaction()`\n * or call `startChild()` on an existing span.\n * @internal\n * @hideconstructor\n * @hidden\n */\n constructor(spanContext) {\n this.traceId = uuid4();\n this.spanId = uuid4().substring(16);\n this.startTimestamp = timestampInSeconds();\n this.tags = {};\n this.data = {};\n this.instrumenter = 'sentry';\n\n if (!spanContext) {\n return this;\n }\n if (spanContext.traceId) {\n this.traceId = spanContext.traceId;\n }\n if (spanContext.spanId) {\n this.spanId = spanContext.spanId;\n }\n if (spanContext.parentSpanId) {\n this.parentSpanId = spanContext.parentSpanId;\n }\n // We want to include booleans as well here\n if ('sampled' in spanContext) {\n this.sampled = spanContext.sampled;\n }\n if (spanContext.op) {\n this.op = spanContext.op;\n }\n if (spanContext.description) {\n this.description = spanContext.description;\n }\n if (spanContext.name) {\n this.description = spanContext.name;\n }\n if (spanContext.data) {\n this.data = spanContext.data;\n }\n if (spanContext.tags) {\n this.tags = spanContext.tags;\n }\n if (spanContext.status) {\n this.status = spanContext.status;\n }\n if (spanContext.startTimestamp) {\n this.startTimestamp = spanContext.startTimestamp;\n }\n if (spanContext.endTimestamp) {\n this.endTimestamp = spanContext.endTimestamp;\n }\n if (spanContext.instrumenter) {\n this.instrumenter = spanContext.instrumenter;\n }\n }\n\n /**\n * @inheritDoc\n */\n startChild(\n spanContext,\n ) {\n const childSpan = new Span({\n ...spanContext,\n parentSpanId: this.spanId,\n sampled: this.sampled,\n traceId: this.traceId,\n });\n\n childSpan.spanRecorder = this.spanRecorder;\n if (childSpan.spanRecorder) {\n childSpan.spanRecorder.add(childSpan);\n }\n\n childSpan.transaction = this.transaction;\n\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && childSpan.transaction) {\n const opStr = (spanContext && spanContext.op) || '< unknown op >';\n const nameStr = childSpan.transaction.name || '< unknown name >';\n const idStr = childSpan.transaction.spanId;\n\n const logMessage = `[Tracing] Starting '${opStr}' span on transaction '${nameStr}' (${idStr}).`;\n childSpan.transaction.metadata.spanMetadata[childSpan.spanId] = { logMessage };\n logger.log(logMessage);\n }\n\n return childSpan;\n }\n\n /**\n * @inheritDoc\n */\n setTag(key, value) {\n this.tags = { ...this.tags, [key]: value };\n return this;\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n setData(key, value) {\n this.data = { ...this.data, [key]: value };\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setStatus(value) {\n this.status = value;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setHttpStatus(httpStatus) {\n this.setTag('http.status_code', String(httpStatus));\n this.setData('http.response.status_code', httpStatus);\n const spanStatus = spanStatusfromHttpCode(httpStatus);\n if (spanStatus !== 'unknown_error') {\n this.setStatus(spanStatus);\n }\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setName(name) {\n this.description = name;\n }\n\n /**\n * @inheritDoc\n */\n isSuccess() {\n return this.status === 'ok';\n }\n\n /**\n * @inheritDoc\n */\n finish(endTimestamp) {\n if (\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n // Don't call this for transactions\n this.transaction &&\n this.transaction.spanId !== this.spanId\n ) {\n const { logMessage } = this.transaction.metadata.spanMetadata[this.spanId];\n if (logMessage) {\n logger.log((logMessage ).replace('Starting', 'Finishing'));\n }\n }\n\n this.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampInSeconds();\n }\n\n /**\n * @inheritDoc\n */\n toTraceparent() {\n return generateSentryTraceHeader(this.traceId, this.spanId, this.sampled);\n }\n\n /**\n * @inheritDoc\n */\n toContext() {\n return dropUndefinedKeys({\n data: this.data,\n description: this.description,\n endTimestamp: this.endTimestamp,\n op: this.op,\n parentSpanId: this.parentSpanId,\n sampled: this.sampled,\n spanId: this.spanId,\n startTimestamp: this.startTimestamp,\n status: this.status,\n tags: this.tags,\n traceId: this.traceId,\n });\n }\n\n /**\n * @inheritDoc\n */\n updateWithContext(spanContext) {\n this.data = spanContext.data || {};\n this.description = spanContext.description;\n this.endTimestamp = spanContext.endTimestamp;\n this.op = spanContext.op;\n this.parentSpanId = spanContext.parentSpanId;\n this.sampled = spanContext.sampled;\n this.spanId = spanContext.spanId || this.spanId;\n this.startTimestamp = spanContext.startTimestamp || this.startTimestamp;\n this.status = spanContext.status;\n this.tags = spanContext.tags || {};\n this.traceId = spanContext.traceId || this.traceId;\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getTraceContext() {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n trace_id: this.traceId,\n });\n }\n\n /**\n * @inheritDoc\n */\n toJSON()\n\n {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n start_timestamp: this.startTimestamp,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n timestamp: this.endTimestamp,\n trace_id: this.traceId,\n });\n }\n}\n\n/**\n * Converts a HTTP status code into a {@link SpanStatusType}.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\nfunction spanStatusfromHttpCode(httpStatus) {\n if (httpStatus < 400 && httpStatus >= 100) {\n return 'ok';\n }\n\n if (httpStatus >= 400 && httpStatus < 500) {\n switch (httpStatus) {\n case 401:\n return 'unauthenticated';\n case 403:\n return 'permission_denied';\n case 404:\n return 'not_found';\n case 409:\n return 'already_exists';\n case 413:\n return 'failed_precondition';\n case 429:\n return 'resource_exhausted';\n default:\n return 'invalid_argument';\n }\n }\n\n if (httpStatus >= 500 && httpStatus < 600) {\n switch (httpStatus) {\n case 501:\n return 'unimplemented';\n case 503:\n return 'unavailable';\n case 504:\n return 'deadline_exceeded';\n default:\n return 'internal_error';\n }\n }\n\n return 'unknown_error';\n}\n\nexport { Span, SpanRecorder, spanStatusfromHttpCode };\n","import { logger, dropUndefinedKeys } from '@sentry/utils';\nimport { getCurrentHub } from '../hub.js';\nimport { getDynamicSamplingContextFromClient } from './dynamicSamplingContext.js';\nimport { Span, SpanRecorder } from './span.js';\n\n/** JSDoc */\nclass Transaction extends Span {\n\n /**\n * The reference to the current hub.\n */\n\n /**\n * This constructor should never be called manually. Those instrumenting tracing should use\n * `Sentry.startTransaction()`, and internal methods should use `hub.startTransaction()`.\n * @internal\n * @hideconstructor\n * @hidden\n */\n constructor(transactionContext, hub) {\n super(transactionContext);\n // We need to delete description since it's set by the Span class constructor\n // but not needed for transactions.\n delete this.description;\n\n this._measurements = {};\n this._contexts = {};\n\n this._hub = hub || getCurrentHub();\n\n this._name = transactionContext.name || '';\n\n this.metadata = {\n source: 'custom',\n ...transactionContext.metadata,\n spanMetadata: {},\n };\n\n this._trimEnd = transactionContext.trimEnd;\n\n // this is because transactions are also spans, and spans have a transaction pointer\n this.transaction = this;\n\n // If Dynamic Sampling Context is provided during the creation of the transaction, we freeze it as it usually means\n // there is incoming Dynamic Sampling Context. (Either through an incoming request, a baggage meta-tag, or other means)\n const incomingDynamicSamplingContext = this.metadata.dynamicSamplingContext;\n if (incomingDynamicSamplingContext) {\n // We shallow copy this in case anything writes to the original reference of the passed in `dynamicSamplingContext`\n this._frozenDynamicSamplingContext = { ...incomingDynamicSamplingContext };\n }\n }\n\n /** Getter for `name` property */\n get name() {\n return this._name;\n }\n\n /** Setter for `name` property, which also sets `source` as custom */\n set name(newName) {\n this.setName(newName);\n }\n\n /**\n * JSDoc\n */\n setName(name, source = 'custom') {\n this._name = name;\n this.metadata.source = source;\n }\n\n /**\n * Attaches SpanRecorder to the span itself\n * @param maxlen maximum number of spans that can be recorded\n */\n initSpanRecorder(maxlen = 1000) {\n if (!this.spanRecorder) {\n this.spanRecorder = new SpanRecorder(maxlen);\n }\n this.spanRecorder.add(this);\n }\n\n /**\n * @inheritDoc\n */\n setContext(key, context) {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts[key] = context;\n }\n }\n\n /**\n * @inheritDoc\n */\n setMeasurement(name, value, unit = '') {\n this._measurements[name] = { value, unit };\n }\n\n /**\n * @inheritDoc\n */\n setMetadata(newMetadata) {\n this.metadata = { ...this.metadata, ...newMetadata };\n }\n\n /**\n * @inheritDoc\n */\n finish(endTimestamp) {\n // This transaction is already finished, so we should not flush it again.\n if (this.endTimestamp !== undefined) {\n return undefined;\n }\n\n if (!this.name) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Transaction has no name, falling back to ``.');\n this.name = '';\n }\n\n // just sets the end timestamp\n super.finish(endTimestamp);\n\n const client = this._hub.getClient();\n if (client && client.emit) {\n client.emit('finishTransaction', this);\n }\n\n if (this.sampled !== true) {\n // At this point if `sampled !== true` we want to discard the transaction.\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] Discarding transaction because its trace was not chosen to be sampled.');\n\n if (client) {\n client.recordDroppedEvent('sample_rate', 'transaction');\n }\n\n return undefined;\n }\n\n const finishedSpans = this.spanRecorder ? this.spanRecorder.spans.filter(s => s !== this && s.endTimestamp) : [];\n\n if (this._trimEnd && finishedSpans.length > 0) {\n this.endTimestamp = finishedSpans.reduce((prev, current) => {\n if (prev.endTimestamp && current.endTimestamp) {\n return prev.endTimestamp > current.endTimestamp ? prev : current;\n }\n return prev;\n }).endTimestamp;\n }\n\n const metadata = this.metadata;\n\n const transaction = {\n contexts: {\n ...this._contexts,\n // We don't want to override trace context\n trace: this.getTraceContext(),\n },\n spans: finishedSpans,\n start_timestamp: this.startTimestamp,\n tags: this.tags,\n timestamp: this.endTimestamp,\n transaction: this.name,\n type: 'transaction',\n sdkProcessingMetadata: {\n ...metadata,\n dynamicSamplingContext: this.getDynamicSamplingContext(),\n },\n ...(metadata.source && {\n transaction_info: {\n source: metadata.source,\n },\n }),\n };\n\n const hasMeasurements = Object.keys(this._measurements).length > 0;\n\n if (hasMeasurements) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n '[Measurements] Adding measurements to transaction',\n JSON.stringify(this._measurements, undefined, 2),\n );\n transaction.measurements = this._measurements;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] Finishing ${this.op} transaction: ${this.name}.`);\n\n return this._hub.captureEvent(transaction);\n }\n\n /**\n * @inheritDoc\n */\n toContext() {\n const spanContext = super.toContext();\n\n return dropUndefinedKeys({\n ...spanContext,\n name: this.name,\n trimEnd: this._trimEnd,\n });\n }\n\n /**\n * @inheritDoc\n */\n updateWithContext(transactionContext) {\n super.updateWithContext(transactionContext);\n\n this.name = transactionContext.name || '';\n\n this._trimEnd = transactionContext.trimEnd;\n\n return this;\n }\n\n /**\n * @inheritdoc\n *\n * @experimental\n */\n getDynamicSamplingContext() {\n if (this._frozenDynamicSamplingContext) {\n return this._frozenDynamicSamplingContext;\n }\n\n const hub = this._hub || getCurrentHub();\n const client = hub.getClient();\n\n if (!client) return {};\n\n const scope = hub.getScope();\n const dsc = getDynamicSamplingContextFromClient(this.traceId, client, scope);\n\n const maybeSampleRate = this.metadata.sampleRate;\n if (maybeSampleRate !== undefined) {\n dsc.sample_rate = `${maybeSampleRate}`;\n }\n\n // We don't want to have a transaction name in the DSC if the source is \"url\" because URLs might contain PII\n const source = this.metadata.source;\n if (source && source !== 'url') {\n dsc.transaction = this.name;\n }\n\n if (this.sampled !== undefined) {\n dsc.sampled = String(this.sampled);\n }\n\n // Uncomment if we want to make DSC immutable\n // this._frozenDynamicSamplingContext = dsc;\n\n return dsc;\n }\n\n /**\n * Override the current hub with a new one.\n * Used if you want another hub to finish the transaction.\n *\n * @internal\n */\n setHub(hub) {\n this._hub = hub;\n }\n}\n\nexport { Transaction };\n","import { getCurrentHub } from '../hub.js';\nexport { TRACEPARENT_REGEXP, extractTraceparentData, stripUrlQueryAndFragment } from '@sentry/utils';\n\n/** Grabs active transaction off scope, if any */\nfunction getActiveTransaction(maybeHub) {\n const hub = maybeHub || getCurrentHub();\n const scope = hub.getScope();\n return scope.getTransaction() ;\n}\n\nexport { getActiveTransaction };\n","import { getCurrentHub } from '../hub.js';\n\n// Treeshakable guard to remove all code related to tracing\n\n/**\n * Determines if tracing is currently enabled.\n *\n * Tracing is enabled when at least one of `tracesSampleRate` and `tracesSampler` is defined in the SDK config.\n */\nfunction hasTracingEnabled(\n maybeOptions,\n) {\n if (typeof __SENTRY_TRACING__ === 'boolean' && !__SENTRY_TRACING__) {\n return false;\n }\n\n const client = getCurrentHub().getClient();\n const options = maybeOptions || (client && client.getOptions());\n return !!options && (options.enableTracing || 'tracesSampleRate' in options || 'tracesSampler' in options);\n}\n\nexport { hasTracingEnabled };\n","var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","'use strict';\n\n/******************************************************************************\n * Created 2008-08-19.\n *\n * Dijkstra path-finding functions. Adapted from the Dijkstar Python project.\n *\n * Copyright (C) 2008\n * Wyatt Baldwin \n * All rights reserved\n *\n * Licensed under the MIT license.\n *\n * http://www.opensource.org/licenses/mit-license.php\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *****************************************************************************/\nvar dijkstra = {\n single_source_shortest_paths: function(graph, s, d) {\n // Predecessor map for each node that has been encountered.\n // node ID => predecessor node ID\n var predecessors = {};\n\n // Costs of shortest paths from s to all nodes encountered.\n // node ID => cost\n var costs = {};\n costs[s] = 0;\n\n // Costs of shortest paths from s to all nodes encountered; differs from\n // `costs` in that it provides easy access to the node that currently has\n // the known shortest path from s.\n // XXX: Do we actually need both `costs` and `open`?\n var open = dijkstra.PriorityQueue.make();\n open.push(s, 0);\n\n var closest,\n u, v,\n cost_of_s_to_u,\n adjacent_nodes,\n cost_of_e,\n cost_of_s_to_u_plus_cost_of_e,\n cost_of_s_to_v,\n first_visit;\n while (!open.empty()) {\n // In the nodes remaining in graph that have a known cost from s,\n // find the node, u, that currently has the shortest path from s.\n closest = open.pop();\n u = closest.value;\n cost_of_s_to_u = closest.cost;\n\n // Get nodes adjacent to u...\n adjacent_nodes = graph[u] || {};\n\n // ...and explore the edges that connect u to those nodes, updating\n // the cost of the shortest paths to any or all of those nodes as\n // necessary. v is the node across the current edge from u.\n for (v in adjacent_nodes) {\n if (adjacent_nodes.hasOwnProperty(v)) {\n // Get the cost of the edge running from u to v.\n cost_of_e = adjacent_nodes[v];\n\n // Cost of s to u plus the cost of u to v across e--this is *a*\n // cost from s to v that may or may not be less than the current\n // known cost to v.\n cost_of_s_to_u_plus_cost_of_e = cost_of_s_to_u + cost_of_e;\n\n // If we haven't visited v yet OR if the current known cost from s to\n // v is greater than the new cost we just found (cost of s to u plus\n // cost of u to v across e), update v's cost in the cost list and\n // update v's predecessor in the predecessor list (it's now u).\n cost_of_s_to_v = costs[v];\n first_visit = (typeof costs[v] === 'undefined');\n if (first_visit || cost_of_s_to_v > cost_of_s_to_u_plus_cost_of_e) {\n costs[v] = cost_of_s_to_u_plus_cost_of_e;\n open.push(v, cost_of_s_to_u_plus_cost_of_e);\n predecessors[v] = u;\n }\n }\n }\n }\n\n if (typeof d !== 'undefined' && typeof costs[d] === 'undefined') {\n var msg = ['Could not find a path from ', s, ' to ', d, '.'].join('');\n throw new Error(msg);\n }\n\n return predecessors;\n },\n\n extract_shortest_path_from_predecessor_list: function(predecessors, d) {\n var nodes = [];\n var u = d;\n var predecessor;\n while (u) {\n nodes.push(u);\n predecessor = predecessors[u];\n u = predecessors[u];\n }\n nodes.reverse();\n return nodes;\n },\n\n find_path: function(graph, s, d) {\n var predecessors = dijkstra.single_source_shortest_paths(graph, s, d);\n return dijkstra.extract_shortest_path_from_predecessor_list(\n predecessors, d);\n },\n\n /**\n * A very naive priority queue implementation.\n */\n PriorityQueue: {\n make: function (opts) {\n var T = dijkstra.PriorityQueue,\n t = {},\n key;\n opts = opts || {};\n for (key in T) {\n if (T.hasOwnProperty(key)) {\n t[key] = T[key];\n }\n }\n t.queue = [];\n t.sorter = opts.sorter || T.default_sorter;\n return t;\n },\n\n default_sorter: function (a, b) {\n return a.cost - b.cost;\n },\n\n /**\n * Add a new item to the queue and ensure the highest priority element\n * is at the front of the queue.\n */\n push: function (value, cost) {\n var item = {value: value, cost: cost};\n this.queue.push(item);\n this.queue.sort(this.sorter);\n },\n\n /**\n * Return the highest priority element in the queue.\n */\n pop: function () {\n return this.queue.shift();\n },\n\n empty: function () {\n return this.queue.length === 0;\n }\n }\n};\n\n\n// node.js module exports\nif (typeof module !== 'undefined') {\n module.exports = dijkstra;\n}\n","'use strict'\n\nmodule.exports = function encodeUtf8 (input) {\n var result = []\n var size = input.length\n\n for (var index = 0; index < size; index++) {\n var point = input.charCodeAt(index)\n\n if (point >= 0xD800 && point <= 0xDBFF && size > index + 1) {\n var second = input.charCodeAt(index + 1)\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n point = (point - 0xD800) * 0x400 + second - 0xDC00 + 0x10000\n index += 1\n }\n }\n\n // US-ASCII\n if (point < 0x80) {\n result.push(point)\n continue\n }\n\n // 2-byte UTF-8\n if (point < 0x800) {\n result.push((point >> 6) | 192)\n result.push((point & 63) | 128)\n continue\n }\n\n // 3-byte UTF-8\n if (point < 0xD800 || (point >= 0xE000 && point < 0x10000)) {\n result.push((point >> 12) | 224)\n result.push(((point >> 6) & 63) | 128)\n result.push((point & 63) | 128)\n continue\n }\n\n // 4-byte UTF-8\n if (point >= 0x10000 && point <= 0x10FFFF) {\n result.push((point >> 18) | 240)\n result.push(((point >> 12) & 63) | 128)\n result.push(((point >> 6) & 63) | 128)\n result.push((point & 63) | 128)\n continue\n }\n\n // Invalid character\n result.push(0xEF, 0xBF, 0xBD)\n }\n\n return new Uint8Array(result).buffer\n}\n","(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(a,b,c){var d=new XMLHttpRequest;d.open(\"GET\",a),d.responseType=\"blob\",d.onload=function(){g(d.response,b,c)},d.onerror=function(){console.error(\"could not download file\")},d.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),g=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype&&!a?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(b,d,e,g){if(g=g||open(\"\",\"_blank\"),g&&(g.document.title=g.document.body.innerText=\"downloading...\"),\"string\"==typeof b)return c(b,d,e);var h=\"application/octet-stream\"===b.type,i=/constructor/i.test(f.HTMLElement)||f.safari,j=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((j||h&&i||a)&&\"undefined\"!=typeof FileReader){var k=new FileReader;k.onloadend=function(){var a=k.result;a=j?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),g?g.location.href=a:location=a,g=null},k.readAsDataURL(b)}else{var l=f.URL||f.webkitURL,m=l.createObjectURL(b);g?g.location=m:location.href=m,g=null,setTimeout(function(){l.revokeObjectURL(m)},4E4)}});f.saveAs=g.saveAs=g,\"undefined\"!=typeof module&&(module.exports=g)});\n\n","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\nexport { _objectWithoutPropertiesLoose as _ };\n","/**\n * Applies mask on element.\n * @constructor\n * @param {HTMLInputElement|HTMLTextAreaElement|MaskElement} el - Element to apply mask\n * @param {Object} opts - Custom mask options\n * @return {InputMask}\n */\nfunction IMask(el) {\n let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // currently available only for input-like elements\n return new IMask.InputMask(el, opts);\n}\n\nexport { IMask as default };\n","import IMask from './holder.js';\n\n/**\n Provides details of changing model value\n @param {Object} [details]\n @param {string} [details.inserted] - Inserted symbols\n @param {boolean} [details.skip] - Can skip chars\n @param {number} [details.removeCount] - Removed symbols count\n @param {number} [details.tailShift] - Additional offset if any changes occurred before tail\n*/\nclass ChangeDetails {\n /** Inserted symbols */\n\n /** Can skip chars */\n\n /** Additional offset if any changes occurred before tail */\n\n /** Raw inserted is used by dynamic mask */\n\n constructor(details) {\n Object.assign(this, {\n inserted: '',\n rawInserted: '',\n skip: false,\n tailShift: 0\n }, details);\n }\n\n /**\n Aggregate changes\n @returns {ChangeDetails} `this`\n */\n aggregate(details) {\n this.rawInserted += details.rawInserted;\n this.skip = this.skip || details.skip;\n this.inserted += details.inserted;\n this.tailShift += details.tailShift;\n return this;\n }\n\n /** Total offset considering all changes */\n get offset() {\n return this.tailShift + this.inserted.length;\n }\n}\nIMask.ChangeDetails = ChangeDetails;\n\nexport { ChangeDetails as default };\n","import ChangeDetails from './change-details.js';\nimport './holder.js';\n\n/** Checks if value is string */\nfunction isString(str) {\n return typeof str === 'string' || str instanceof String;\n}\n\n/**\n Direction\n @prop {string} NONE\n @prop {string} LEFT\n @prop {string} FORCE_LEFT\n @prop {string} RIGHT\n @prop {string} FORCE_RIGHT\n*/\nconst DIRECTION = {\n NONE: 'NONE',\n LEFT: 'LEFT',\n FORCE_LEFT: 'FORCE_LEFT',\n RIGHT: 'RIGHT',\n FORCE_RIGHT: 'FORCE_RIGHT'\n};\n/**\n Direction\n @enum {string}\n*/\n\n/** Returns next char index in direction */\nfunction indexInDirection(pos, direction) {\n if (direction === DIRECTION.LEFT) --pos;\n return pos;\n}\n\n/** Returns next char position in direction */\nfunction posInDirection(pos, direction) {\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return --pos;\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n return ++pos;\n default:\n return pos;\n }\n}\n\n/** */\nfunction forceDirection(direction) {\n switch (direction) {\n case DIRECTION.LEFT:\n return DIRECTION.FORCE_LEFT;\n case DIRECTION.RIGHT:\n return DIRECTION.FORCE_RIGHT;\n default:\n return direction;\n }\n}\n\n/** Escapes regular expression control chars */\nfunction escapeRegExp(str) {\n return str.replace(/([.*+?^=!:${}()|[\\]\\/\\\\])/g, '\\\\$1');\n}\nfunction normalizePrepare(prep) {\n return Array.isArray(prep) ? prep : [prep, new ChangeDetails()];\n}\n\n// cloned from https://github.com/epoberezkin/fast-deep-equal with small changes\nfunction objectIncludes(b, a) {\n if (a === b) return true;\n var arrA = Array.isArray(a),\n arrB = Array.isArray(b),\n i;\n if (arrA && arrB) {\n if (a.length != b.length) return false;\n for (i = 0; i < a.length; i++) if (!objectIncludes(a[i], b[i])) return false;\n return true;\n }\n if (arrA != arrB) return false;\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n var dateA = a instanceof Date,\n dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() == b.getTime();\n if (dateA != dateB) return false;\n var regexpA = a instanceof RegExp,\n regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() == b.toString();\n if (regexpA != regexpB) return false;\n var keys = Object.keys(a);\n // if (keys.length !== Object.keys(b).length) return false;\n\n for (i = 0; i < keys.length; i++)\n // $FlowFixMe ... ???\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n for (i = 0; i < keys.length; i++) if (!objectIncludes(b[keys[i]], a[keys[i]])) return false;\n return true;\n } else if (a && b && typeof a === 'function' && typeof b === 'function') {\n return a.toString() === b.toString();\n }\n return false;\n}\n\n/** Selection range */\n\nexport { DIRECTION, escapeRegExp, forceDirection, indexInDirection, isString, normalizePrepare, objectIncludes, posInDirection };\n","import { DIRECTION } from './utils.js';\nimport './change-details.js';\nimport './holder.js';\n\n/** Provides details of changing input */\nclass ActionDetails {\n /** Current input value */\n\n /** Current cursor position */\n\n /** Old input value */\n\n /** Old selection */\n\n constructor(value, cursorPos, oldValue, oldSelection) {\n this.value = value;\n this.cursorPos = cursorPos;\n this.oldValue = oldValue;\n this.oldSelection = oldSelection;\n\n // double check if left part was changed (autofilling, other non-standard input triggers)\n while (this.value.slice(0, this.startChangePos) !== this.oldValue.slice(0, this.startChangePos)) {\n --this.oldSelection.start;\n }\n }\n\n /**\n Start changing position\n @readonly\n */\n get startChangePos() {\n return Math.min(this.cursorPos, this.oldSelection.start);\n }\n\n /**\n Inserted symbols count\n @readonly\n */\n get insertedCount() {\n return this.cursorPos - this.startChangePos;\n }\n\n /**\n Inserted symbols\n @readonly\n */\n get inserted() {\n return this.value.substr(this.startChangePos, this.insertedCount);\n }\n\n /**\n Removed symbols count\n @readonly\n */\n get removedCount() {\n // Math.max for opposite operation\n return Math.max(this.oldSelection.end - this.startChangePos ||\n // for Delete\n this.oldValue.length - this.value.length, 0);\n }\n\n /**\n Removed symbols\n @readonly\n */\n get removed() {\n return this.oldValue.substr(this.startChangePos, this.removedCount);\n }\n\n /**\n Unchanged head symbols\n @readonly\n */\n get head() {\n return this.value.substring(0, this.startChangePos);\n }\n\n /**\n Unchanged tail symbols\n @readonly\n */\n get tail() {\n return this.value.substring(this.startChangePos + this.insertedCount);\n }\n\n /**\n Remove direction\n @readonly\n */\n get removeDirection() {\n if (!this.removedCount || this.insertedCount) return DIRECTION.NONE;\n\n // align right if delete at right\n return (this.oldSelection.end === this.cursorPos || this.oldSelection.start === this.cursorPos) &&\n // if not range removed (event with backspace)\n this.oldSelection.end === this.oldSelection.start ? DIRECTION.RIGHT : DIRECTION.LEFT;\n }\n}\n\nexport { ActionDetails as default };\n","/** Provides details of continuous extracted tail */\nclass ContinuousTailDetails {\n /** Tail value as string */\n\n /** Tail start position */\n\n /** Start position */\n\n constructor() {\n let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n let from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n let stop = arguments.length > 2 ? arguments[2] : undefined;\n this.value = value;\n this.from = from;\n this.stop = stop;\n }\n toString() {\n return this.value;\n }\n extend(tail) {\n this.value += String(tail);\n }\n appendTo(masked) {\n return masked.append(this.toString(), {\n tail: true\n }).aggregate(masked._appendPlaceholder());\n }\n get state() {\n return {\n value: this.value,\n from: this.from,\n stop: this.stop\n };\n }\n set state(state) {\n Object.assign(this, state);\n }\n unshift(beforePos) {\n if (!this.value.length || beforePos != null && this.from >= beforePos) return '';\n const shiftChar = this.value[0];\n this.value = this.value.slice(1);\n return shiftChar;\n }\n shift() {\n if (!this.value.length) return '';\n const shiftChar = this.value[this.value.length - 1];\n this.value = this.value.slice(0, -1);\n return shiftChar;\n }\n}\n\nexport { ContinuousTailDetails as default };\n","import ChangeDetails from '../core/change-details.js';\nimport ContinuousTailDetails from '../core/continuous-tail-details.js';\nimport { isString, normalizePrepare, DIRECTION, forceDirection } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n/** Supported mask type */\n\n/** Append flags */\n\n/** Extract flags */\n\n/** Provides common masking stuff */\nclass Masked {\n // $Shape; TODO after fix https://github.com/facebook/flow/issues/4773\n\n /** @type {Mask} */\n\n /** */ // $FlowFixMe no ideas\n /** Transforms value before mask processing */\n /** Validates if value is acceptable */\n /** Does additional processing in the end of editing */\n /** Format typed value to string */\n /** Parse strgin to get typed value */\n /** Enable characters overwriting */\n /** */\n /** */\n /** */\n constructor(opts) {\n this._value = '';\n this._update(Object.assign({}, Masked.DEFAULTS, opts));\n this.isInitialized = true;\n }\n\n /** Sets and applies new options */\n updateOptions(opts) {\n if (!Object.keys(opts).length) return;\n // $FlowFixMe\n this.withValueRefresh(this._update.bind(this, opts));\n }\n\n /**\n Sets new options\n @protected\n */\n _update(opts) {\n Object.assign(this, opts);\n }\n\n /** Mask state */\n get state() {\n return {\n _value: this.value\n };\n }\n set state(state) {\n this._value = state._value;\n }\n\n /** Resets value */\n reset() {\n this._value = '';\n }\n\n /** */\n get value() {\n return this._value;\n }\n set value(value) {\n this.resolve(value);\n }\n\n /** Resolve new value */\n resolve(value) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n input: true\n };\n this.reset();\n this.append(value, flags, '');\n this.doCommit();\n return this.value;\n }\n\n /** */\n get unmaskedValue() {\n return this.value;\n }\n set unmaskedValue(value) {\n this.reset();\n this.append(value, {}, '');\n this.doCommit();\n }\n\n /** */\n get typedValue() {\n return this.doParse(this.value);\n }\n set typedValue(value) {\n this.value = this.doFormat(value);\n }\n\n /** Value that includes raw user input */\n get rawInputValue() {\n return this.extractInput(0, this.value.length, {\n raw: true\n });\n }\n set rawInputValue(value) {\n this.reset();\n this.append(value, {\n raw: true\n }, '');\n this.doCommit();\n }\n get displayValue() {\n return this.value;\n }\n\n /** */\n get isComplete() {\n return true;\n }\n\n /** */\n get isFilled() {\n return this.isComplete;\n }\n\n /** Finds nearest input position in direction */\n nearestInputPos(cursorPos, direction) {\n return cursorPos;\n }\n totalInputPositions() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n return Math.min(this.value.length, toPos - fromPos);\n }\n\n /** Extracts value in range considering flags */\n extractInput() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n return this.value.slice(fromPos, toPos);\n }\n\n /** Extracts tail in range */\n extractTail() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n return new ContinuousTailDetails(this.extractInput(fromPos, toPos), fromPos);\n }\n\n /** Appends tail */\n // $FlowFixMe no ideas\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n\n /** Appends char */\n _appendCharRaw(ch) {\n if (!ch) return new ChangeDetails();\n this._value += ch;\n return new ChangeDetails({\n inserted: ch,\n rawInserted: ch\n });\n }\n\n /** Appends char */\n _appendChar(ch) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let checkTail = arguments.length > 2 ? arguments[2] : undefined;\n const consistentState = this.state;\n let details;\n [ch, details] = normalizePrepare(this.doPrepare(ch, flags));\n details = details.aggregate(this._appendCharRaw(ch, flags));\n if (details.inserted) {\n let consistentTail;\n let appended = this.doValidate(flags) !== false;\n if (appended && checkTail != null) {\n // validation ok, check tail\n const beforeTailState = this.state;\n if (this.overwrite === true) {\n consistentTail = checkTail.state;\n checkTail.unshift(this.value.length - details.tailShift);\n }\n let tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted === checkTail.toString();\n\n // not ok, try shift\n if (!(appended && tailDetails.inserted) && this.overwrite === 'shift') {\n this.state = beforeTailState;\n consistentTail = checkTail.state;\n checkTail.shift();\n tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted === checkTail.toString();\n }\n\n // if ok, rollback state after tail\n if (appended && tailDetails.inserted) this.state = beforeTailState;\n }\n\n // revert all if something went wrong\n if (!appended) {\n details = new ChangeDetails();\n this.state = consistentState;\n if (checkTail && consistentTail) checkTail.state = consistentTail;\n }\n }\n return details;\n }\n\n /** Appends optional placeholder at end */\n _appendPlaceholder() {\n return new ChangeDetails();\n }\n\n /** Appends optional eager placeholder at end */\n _appendEager() {\n return new ChangeDetails();\n }\n\n /** Appends symbols considering flags */\n // $FlowFixMe no ideas\n append(str, flags, tail) {\n if (!isString(str)) throw new Error('value should be string');\n const details = new ChangeDetails();\n const checkTail = isString(tail) ? new ContinuousTailDetails(String(tail)) : tail;\n if (flags !== null && flags !== void 0 && flags.tail) flags._beforeTailState = this.state;\n for (let ci = 0; ci < str.length; ++ci) {\n const d = this._appendChar(str[ci], flags, checkTail);\n if (!d.rawInserted && !this.doSkipInvalid(str[ci], flags, checkTail)) break;\n details.aggregate(d);\n }\n if ((this.eager === true || this.eager === 'append') && flags !== null && flags !== void 0 && flags.input && str) {\n details.aggregate(this._appendEager());\n }\n\n // append tail but aggregate only tailShift\n if (checkTail != null) {\n details.tailShift += this.appendTail(checkTail).tailShift;\n // TODO it's a good idea to clear state after appending ends\n // but it causes bugs when one append calls another (when dynamic dispatch set rawInputValue)\n // this._resetBeforeTailState();\n }\n\n return details;\n }\n\n /** */\n remove() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n this._value = this.value.slice(0, fromPos) + this.value.slice(toPos);\n return new ChangeDetails();\n }\n\n /** Calls function and reapplies current value */\n withValueRefresh(fn) {\n if (this._refreshing || !this.isInitialized) return fn();\n this._refreshing = true;\n const rawInput = this.rawInputValue;\n const value = this.value;\n const ret = fn();\n this.rawInputValue = rawInput;\n // append lost trailing chars at end\n if (this.value && this.value !== value && value.indexOf(this.value) === 0) {\n this.append(value.slice(this.value.length), {}, '');\n }\n delete this._refreshing;\n return ret;\n }\n\n /** */\n runIsolated(fn) {\n if (this._isolated || !this.isInitialized) return fn(this);\n this._isolated = true;\n const state = this.state;\n const ret = fn(this);\n this.state = state;\n delete this._isolated;\n return ret;\n }\n\n /** */\n doSkipInvalid(ch) {\n return this.skipInvalid;\n }\n\n /**\n Prepares string before mask processing\n @protected\n */\n doPrepare(str) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.prepare ? this.prepare(str, this, flags) : str;\n }\n\n /**\n Validates if value is acceptable\n @protected\n */\n doValidate(flags) {\n return (!this.validate || this.validate(this.value, this, flags)) && (!this.parent || this.parent.doValidate(flags));\n }\n\n /**\n Does additional processing in the end of editing\n @protected\n */\n doCommit() {\n if (this.commit) this.commit(this.value, this);\n }\n\n /** */\n doFormat(value) {\n return this.format ? this.format(value, this) : value;\n }\n\n /** */\n doParse(str) {\n return this.parse ? this.parse(str, this) : str;\n }\n\n /** */\n splice(start, deleteCount, inserted, removeDirection) {\n let flags = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n input: true\n };\n const tailPos = start + deleteCount;\n const tail = this.extractTail(tailPos);\n const eagerRemove = this.eager === true || this.eager === 'remove';\n let oldRawValue;\n if (eagerRemove) {\n removeDirection = forceDirection(removeDirection);\n oldRawValue = this.extractInput(0, tailPos, {\n raw: true\n });\n }\n let startChangePos = start;\n const details = new ChangeDetails();\n\n // if it is just deletion without insertion\n if (removeDirection !== DIRECTION.NONE) {\n startChangePos = this.nearestInputPos(start, deleteCount > 1 && start !== 0 && !eagerRemove ? DIRECTION.NONE : removeDirection);\n\n // adjust tailShift if start was aligned\n details.tailShift = startChangePos - start;\n }\n details.aggregate(this.remove(startChangePos));\n if (eagerRemove && removeDirection !== DIRECTION.NONE && oldRawValue === this.rawInputValue) {\n if (removeDirection === DIRECTION.FORCE_LEFT) {\n let valLength;\n while (oldRawValue === this.rawInputValue && (valLength = this.value.length)) {\n details.aggregate(new ChangeDetails({\n tailShift: -1\n })).aggregate(this.remove(valLength - 1));\n }\n } else if (removeDirection === DIRECTION.FORCE_RIGHT) {\n tail.unshift();\n }\n }\n return details.aggregate(this.append(inserted, flags, tail));\n }\n maskEquals(mask) {\n return this.mask === mask;\n }\n typedValueEquals(value) {\n const tval = this.typedValue;\n return value === tval || Masked.EMPTY_VALUES.includes(value) && Masked.EMPTY_VALUES.includes(tval) || this.doFormat(value) === this.doFormat(this.typedValue);\n }\n}\nMasked.DEFAULTS = {\n format: String,\n parse: v => v,\n skipInvalid: true\n};\nMasked.EMPTY_VALUES = [undefined, null, ''];\nIMask.Masked = Masked;\n\nexport { Masked as default };\n","import { isString } from '../core/utils.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\n\n/** Get Masked class by mask type */\nfunction maskedClass(mask) {\n if (mask == null) {\n throw new Error('mask property should be defined');\n }\n\n // $FlowFixMe\n if (mask instanceof RegExp) return IMask.MaskedRegExp;\n // $FlowFixMe\n if (isString(mask)) return IMask.MaskedPattern;\n // $FlowFixMe\n if (mask instanceof Date || mask === Date) return IMask.MaskedDate;\n // $FlowFixMe\n if (mask instanceof Number || typeof mask === 'number' || mask === Number) return IMask.MaskedNumber;\n // $FlowFixMe\n if (Array.isArray(mask) || mask === Array) return IMask.MaskedDynamic;\n // $FlowFixMe\n if (IMask.Masked && mask.prototype instanceof IMask.Masked) return mask;\n // $FlowFixMe\n if (mask instanceof IMask.Masked) return mask.constructor;\n // $FlowFixMe\n if (mask instanceof Function) return IMask.MaskedFunction;\n console.warn('Mask not found for mask', mask); // eslint-disable-line no-console\n // $FlowFixMe\n return IMask.Masked;\n}\n\n/** Creates new {@link Masked} depending on mask type */\nfunction createMask(opts) {\n // $FlowFixMe\n if (IMask.Masked && opts instanceof IMask.Masked) return opts;\n opts = Object.assign({}, opts);\n const mask = opts.mask;\n\n // $FlowFixMe\n if (IMask.Masked && mask instanceof IMask.Masked) return mask;\n const MaskedClass = maskedClass(mask);\n if (!MaskedClass) throw new Error('Masked class is not found for provided mask, appropriate module needs to be import manually before creating mask.');\n return new MaskedClass(opts);\n}\nIMask.createMask = createMask;\n\nexport { createMask as default, maskedClass };\n","import { _ as _objectWithoutPropertiesLoose } from '../../_rollupPluginBabelHelpers-6b3bd404.js';\nimport createMask from '../factory.js';\nimport ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION } from '../../core/utils.js';\nimport '../../core/holder.js';\n\nconst _excluded = [\"parent\", \"isOptional\", \"placeholderChar\", \"displayChar\", \"lazy\", \"eager\"];\n\n/** */\n\nconst DEFAULT_INPUT_DEFINITIONS = {\n '0': /\\d/,\n 'a': /[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/,\n // http://stackoverflow.com/a/22075070\n '*': /./\n};\n\n/** */\nclass PatternInputDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n const {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager\n } = opts,\n maskOpts = _objectWithoutPropertiesLoose(opts, _excluded);\n this.masked = createMask(maskOpts);\n Object.assign(this, {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager\n });\n }\n reset() {\n this.isFilled = false;\n this.masked.reset();\n }\n remove() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n if (fromPos === 0 && toPos >= 1) {\n this.isFilled = false;\n return this.masked.remove(fromPos, toPos);\n }\n return new ChangeDetails();\n }\n get value() {\n return this.masked.value || (this.isFilled && !this.isOptional ? this.placeholderChar : '');\n }\n get unmaskedValue() {\n return this.masked.unmaskedValue;\n }\n get displayValue() {\n return this.masked.value && this.displayChar || this.value;\n }\n get isComplete() {\n return Boolean(this.masked.value) || this.isOptional;\n }\n _appendChar(ch) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (this.isFilled) return new ChangeDetails();\n const state = this.masked.state;\n // simulate input\n const details = this.masked._appendChar(ch, flags);\n if (details.inserted && this.doValidate(flags) === false) {\n details.inserted = details.rawInserted = '';\n this.masked.state = state;\n }\n if (!details.inserted && !this.isOptional && !this.lazy && !flags.input) {\n details.inserted = this.placeholderChar;\n }\n details.skip = !details.inserted && !this.isOptional;\n this.isFilled = Boolean(details.inserted);\n return details;\n }\n append() {\n // TODO probably should be done via _appendChar\n return this.masked.append(...arguments);\n }\n _appendPlaceholder() {\n const details = new ChangeDetails();\n if (this.isFilled || this.isOptional) return details;\n this.isFilled = true;\n details.inserted = this.placeholderChar;\n return details;\n }\n _appendEager() {\n return new ChangeDetails();\n }\n extractTail() {\n return this.masked.extractTail(...arguments);\n }\n appendTail() {\n return this.masked.appendTail(...arguments);\n }\n extractInput() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n let flags = arguments.length > 2 ? arguments[2] : undefined;\n return this.masked.extractInput(fromPos, toPos, flags);\n }\n nearestInputPos(cursorPos) {\n let direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIRECTION.NONE;\n const minPos = 0;\n const maxPos = this.value.length;\n const boundPos = Math.min(Math.max(cursorPos, minPos), maxPos);\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return this.isComplete ? boundPos : minPos;\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n return this.isComplete ? boundPos : maxPos;\n case DIRECTION.NONE:\n default:\n return boundPos;\n }\n }\n totalInputPositions() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n return this.value.slice(fromPos, toPos).length;\n }\n doValidate() {\n return this.masked.doValidate(...arguments) && (!this.parent || this.parent.doValidate(...arguments));\n }\n doCommit() {\n this.masked.doCommit();\n }\n get state() {\n return {\n masked: this.masked.state,\n isFilled: this.isFilled\n };\n }\n set state(state) {\n this.masked.state = state.masked;\n this.isFilled = state.isFilled;\n }\n}\n\nexport { DEFAULT_INPUT_DEFINITIONS, PatternInputDefinition as default };\n","import ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION, isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport '../../core/holder.js';\n\n/** */\n\nclass PatternFixedDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n Object.assign(this, opts);\n this._value = '';\n this.isFixed = true;\n }\n get value() {\n return this._value;\n }\n get unmaskedValue() {\n return this.isUnmasking ? this.value : '';\n }\n get displayValue() {\n return this.value;\n }\n reset() {\n this._isRawInput = false;\n this._value = '';\n }\n remove() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this._value.length;\n this._value = this._value.slice(0, fromPos) + this._value.slice(toPos);\n if (!this._value) this._isRawInput = false;\n return new ChangeDetails();\n }\n nearestInputPos(cursorPos) {\n let direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIRECTION.NONE;\n const minPos = 0;\n const maxPos = this._value.length;\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return minPos;\n case DIRECTION.NONE:\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n default:\n return maxPos;\n }\n }\n totalInputPositions() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this._value.length;\n return this._isRawInput ? toPos - fromPos : 0;\n }\n extractInput() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this._value.length;\n let flags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return flags.raw && this._isRawInput && this._value.slice(fromPos, toPos) || '';\n }\n get isComplete() {\n return true;\n }\n get isFilled() {\n return Boolean(this._value);\n }\n _appendChar(ch) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const details = new ChangeDetails();\n if (this.isFilled) return details;\n const appendEager = this.eager === true || this.eager === 'append';\n const appended = this.char === ch;\n const isResolved = appended && (this.isUnmasking || flags.input || flags.raw) && (!flags.raw || !appendEager) && !flags.tail;\n if (isResolved) details.rawInserted = this.char;\n this._value = details.inserted = this.char;\n this._isRawInput = isResolved && (flags.raw || flags.input);\n return details;\n }\n _appendEager() {\n return this._appendChar(this.char, {\n tail: true\n });\n }\n _appendPlaceholder() {\n const details = new ChangeDetails();\n if (this.isFilled) return details;\n this._value = details.inserted = this.char;\n return details;\n }\n extractTail() {\n arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n return new ContinuousTailDetails('');\n }\n\n // $FlowFixMe no ideas\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n append(str, flags, tail) {\n const details = this._appendChar(str[0], flags);\n if (tail != null) {\n details.tailShift += this.appendTail(tail).tailShift;\n }\n return details;\n }\n doCommit() {}\n get state() {\n return {\n _value: this._value,\n _isRawInput: this._isRawInput\n };\n }\n set state(state) {\n Object.assign(this, state);\n }\n}\n\nexport { PatternFixedDefinition as default };\n","import { _ as _objectWithoutPropertiesLoose } from '../../_rollupPluginBabelHelpers-6b3bd404.js';\nimport ChangeDetails from '../../core/change-details.js';\nimport { isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport IMask from '../../core/holder.js';\n\nconst _excluded = [\"chunks\"];\nclass ChunksTailDetails {\n /** */\n\n constructor() {\n let chunks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n this.chunks = chunks;\n this.from = from;\n }\n toString() {\n return this.chunks.map(String).join('');\n }\n\n // $FlowFixMe no ideas\n extend(tailChunk) {\n if (!String(tailChunk)) return;\n if (isString(tailChunk)) tailChunk = new ContinuousTailDetails(String(tailChunk));\n const lastChunk = this.chunks[this.chunks.length - 1];\n const extendLast = lastChunk && (\n // if stops are same or tail has no stop\n lastChunk.stop === tailChunk.stop || tailChunk.stop == null) &&\n // if tail chunk goes just after last chunk\n tailChunk.from === lastChunk.from + lastChunk.toString().length;\n if (tailChunk instanceof ContinuousTailDetails) {\n // check the ability to extend previous chunk\n if (extendLast) {\n // extend previous chunk\n lastChunk.extend(tailChunk.toString());\n } else {\n // append new chunk\n this.chunks.push(tailChunk);\n }\n } else if (tailChunk instanceof ChunksTailDetails) {\n if (tailChunk.stop == null) {\n // unwrap floating chunks to parent, keeping `from` pos\n let firstTailChunk;\n while (tailChunk.chunks.length && tailChunk.chunks[0].stop == null) {\n firstTailChunk = tailChunk.chunks.shift();\n firstTailChunk.from += tailChunk.from;\n this.extend(firstTailChunk);\n }\n }\n\n // if tail chunk still has value\n if (tailChunk.toString()) {\n // if chunks contains stops, then popup stop to container\n tailChunk.stop = tailChunk.blockIndex;\n this.chunks.push(tailChunk);\n }\n }\n }\n appendTo(masked) {\n // $FlowFixMe\n if (!(masked instanceof IMask.MaskedPattern)) {\n const tail = new ContinuousTailDetails(this.toString());\n return tail.appendTo(masked);\n }\n const details = new ChangeDetails();\n for (let ci = 0; ci < this.chunks.length && !details.skip; ++ci) {\n const chunk = this.chunks[ci];\n const lastBlockIter = masked._mapPosToBlock(masked.value.length);\n const stop = chunk.stop;\n let chunkBlock;\n if (stop != null && (\n // if block not found or stop is behind lastBlock\n !lastBlockIter || lastBlockIter.index <= stop)) {\n if (chunk instanceof ChunksTailDetails ||\n // for continuous block also check if stop is exist\n masked._stops.indexOf(stop) >= 0) {\n const phDetails = masked._appendPlaceholder(stop);\n details.aggregate(phDetails);\n }\n chunkBlock = chunk instanceof ChunksTailDetails && masked._blocks[stop];\n }\n if (chunkBlock) {\n const tailDetails = chunkBlock.appendTail(chunk);\n tailDetails.skip = false; // always ignore skip, it will be set on last\n details.aggregate(tailDetails);\n masked._value += tailDetails.inserted;\n\n // get not inserted chars\n const remainChars = chunk.toString().slice(tailDetails.rawInserted.length);\n if (remainChars) details.aggregate(masked.append(remainChars, {\n tail: true\n }));\n } else {\n details.aggregate(masked.append(chunk.toString(), {\n tail: true\n }));\n }\n }\n return details;\n }\n get state() {\n return {\n chunks: this.chunks.map(c => c.state),\n from: this.from,\n stop: this.stop,\n blockIndex: this.blockIndex\n };\n }\n set state(state) {\n const {\n chunks\n } = state,\n props = _objectWithoutPropertiesLoose(state, _excluded);\n Object.assign(this, props);\n this.chunks = chunks.map(cstate => {\n const chunk = \"chunks\" in cstate ? new ChunksTailDetails() : new ContinuousTailDetails();\n // $FlowFixMe already checked above\n chunk.state = cstate;\n return chunk;\n });\n }\n unshift(beforePos) {\n if (!this.chunks.length || beforePos != null && this.from >= beforePos) return '';\n const chunkShiftPos = beforePos != null ? beforePos - this.from : beforePos;\n let ci = 0;\n while (ci < this.chunks.length) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.unshift(chunkShiftPos);\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n ++ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n shift() {\n if (!this.chunks.length) return '';\n let ci = this.chunks.length - 1;\n while (0 <= ci) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.shift();\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n --ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n}\n\nexport { ChunksTailDetails as default };\n","import { DIRECTION } from '../../core/utils.js';\nimport '../../core/change-details.js';\nimport '../../core/holder.js';\n\nclass PatternCursor {\n constructor(masked, pos) {\n this.masked = masked;\n this._log = [];\n const {\n offset,\n index\n } = masked._mapPosToBlock(pos) || (pos < 0 ?\n // first\n {\n index: 0,\n offset: 0\n } :\n // last\n {\n index: this.masked._blocks.length,\n offset: 0\n });\n this.offset = offset;\n this.index = index;\n this.ok = false;\n }\n get block() {\n return this.masked._blocks[this.index];\n }\n get pos() {\n return this.masked._blockStartPos(this.index) + this.offset;\n }\n get state() {\n return {\n index: this.index,\n offset: this.offset,\n ok: this.ok\n };\n }\n set state(s) {\n Object.assign(this, s);\n }\n pushState() {\n this._log.push(this.state);\n }\n popState() {\n const s = this._log.pop();\n this.state = s;\n return s;\n }\n bindBlock() {\n if (this.block) return;\n if (this.index < 0) {\n this.index = 0;\n this.offset = 0;\n }\n if (this.index >= this.masked._blocks.length) {\n this.index = this.masked._blocks.length - 1;\n this.offset = this.block.value.length;\n }\n }\n _pushLeft(fn) {\n this.pushState();\n for (this.bindBlock(); 0 <= this.index; --this.index, this.offset = ((_this$block = this.block) === null || _this$block === void 0 ? void 0 : _this$block.value.length) || 0) {\n var _this$block;\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n _pushRight(fn) {\n this.pushState();\n for (this.bindBlock(); this.index < this.masked._blocks.length; ++this.index, this.offset = 0) {\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n pushLeftBeforeFilled() {\n return this._pushLeft(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_LEFT);\n if (this.offset !== 0) return true;\n });\n }\n pushLeftBeforeInput() {\n // cases:\n // filled input: 00|\n // optional empty input: 00[]|\n // nested block: XX<[]>|\n return this._pushLeft(() => {\n if (this.block.isFixed) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushLeftBeforeRequired() {\n return this._pushLeft(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushRightBeforeFilled() {\n return this._pushRight(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_RIGHT);\n if (this.offset !== this.block.value.length) return true;\n });\n }\n pushRightBeforeInput() {\n return this._pushRight(() => {\n if (this.block.isFixed) return;\n\n // const o = this.offset;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n // HACK cases like (STILL DOES NOT WORK FOR NESTED)\n // aa|X\n // aaX_ - this will not work\n // if (o && o === this.offset && this.block instanceof PatternInputDefinition) continue;\n return true;\n });\n }\n pushRightBeforeRequired() {\n return this._pushRight(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n\n // TODO check |[*]XX_\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n return true;\n });\n }\n}\n\nexport { PatternCursor as default };\n","import Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by RegExp */\nclass MaskedRegExp extends Masked {\n /**\n @override\n @param {Object} opts\n */\n _update(opts) {\n if (opts.mask) opts.validate = value => value.search(opts.mask) >= 0;\n super._update(opts);\n }\n}\nIMask.MaskedRegExp = MaskedRegExp;\n\nexport { MaskedRegExp as default };\n","import { _ as _objectWithoutPropertiesLoose } from '../_rollupPluginBabelHelpers-6b3bd404.js';\nimport { DIRECTION } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport Masked from './base.js';\nimport PatternInputDefinition, { DEFAULT_INPUT_DEFINITIONS } from './pattern/input-definition.js';\nimport PatternFixedDefinition from './pattern/fixed-definition.js';\nimport ChunksTailDetails from './pattern/chunk-tail-details.js';\nimport PatternCursor from './pattern/cursor.js';\nimport createMask from './factory.js';\nimport IMask from '../core/holder.js';\nimport './regexp.js';\nimport '../core/continuous-tail-details.js';\n\nconst _excluded = [\"_blocks\"];\n\n/**\n Pattern mask\n @param {Object} opts\n @param {Object} opts.blocks\n @param {Object} opts.definitions\n @param {string} opts.placeholderChar\n @param {string} opts.displayChar\n @param {boolean} opts.lazy\n*/\nclass MaskedPattern extends Masked {\n /** */\n\n /** */\n\n /** Single char for empty input */\n\n /** Single char for filled input */\n\n /** Show placeholder only when needed */\n\n constructor() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO type $Shape={} does not work\n opts.definitions = Object.assign({}, DEFAULT_INPUT_DEFINITIONS, opts.definitions);\n super(Object.assign({}, MaskedPattern.DEFAULTS, opts));\n }\n\n /**\n @override\n @param {Object} opts\n */\n _update() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n opts.definitions = Object.assign({}, this.definitions, opts.definitions);\n super._update(opts);\n this._rebuildMask();\n }\n\n /** */\n _rebuildMask() {\n const defs = this.definitions;\n this._blocks = [];\n this._stops = [];\n this._maskedBlocks = {};\n let pattern = this.mask;\n if (!pattern || !defs) return;\n let unmaskingBlock = false;\n let optionalBlock = false;\n for (let i = 0; i < pattern.length; ++i) {\n var _defs$char, _defs$char2;\n if (this.blocks) {\n const p = pattern.slice(i);\n const bNames = Object.keys(this.blocks).filter(bName => p.indexOf(bName) === 0);\n // order by key length\n bNames.sort((a, b) => b.length - a.length);\n // use block name with max length\n const bName = bNames[0];\n if (bName) {\n // $FlowFixMe no ideas\n const maskedBlock = createMask(Object.assign({\n parent: this,\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n overwrite: this.overwrite\n }, this.blocks[bName]));\n if (maskedBlock) {\n this._blocks.push(maskedBlock);\n\n // store block index\n if (!this._maskedBlocks[bName]) this._maskedBlocks[bName] = [];\n this._maskedBlocks[bName].push(this._blocks.length - 1);\n }\n i += bName.length - 1;\n continue;\n }\n }\n let char = pattern[i];\n let isInput = (char in defs);\n if (char === MaskedPattern.STOP_CHAR) {\n this._stops.push(this._blocks.length);\n continue;\n }\n if (char === '{' || char === '}') {\n unmaskingBlock = !unmaskingBlock;\n continue;\n }\n if (char === '[' || char === ']') {\n optionalBlock = !optionalBlock;\n continue;\n }\n if (char === MaskedPattern.ESCAPE_CHAR) {\n ++i;\n char = pattern[i];\n if (!char) break;\n isInput = false;\n }\n const maskOpts = (_defs$char = defs[char]) !== null && _defs$char !== void 0 && _defs$char.mask && !(((_defs$char2 = defs[char]) === null || _defs$char2 === void 0 ? void 0 : _defs$char2.mask.prototype) instanceof IMask.Masked) ? defs[char] : {\n mask: defs[char]\n };\n const def = isInput ? new PatternInputDefinition(Object.assign({\n parent: this,\n isOptional: optionalBlock,\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar\n }, maskOpts)) : new PatternFixedDefinition({\n char,\n eager: this.eager,\n isUnmasking: unmaskingBlock\n });\n this._blocks.push(def);\n }\n }\n\n /**\n @override\n */\n get state() {\n return Object.assign({}, super.state, {\n _blocks: this._blocks.map(b => b.state)\n });\n }\n set state(state) {\n const {\n _blocks\n } = state,\n maskedState = _objectWithoutPropertiesLoose(state, _excluded);\n this._blocks.forEach((b, bi) => b.state = _blocks[bi]);\n super.state = maskedState;\n }\n\n /**\n @override\n */\n reset() {\n super.reset();\n this._blocks.forEach(b => b.reset());\n }\n\n /**\n @override\n */\n get isComplete() {\n return this._blocks.every(b => b.isComplete);\n }\n\n /**\n @override\n */\n get isFilled() {\n return this._blocks.every(b => b.isFilled);\n }\n get isFixed() {\n return this._blocks.every(b => b.isFixed);\n }\n get isOptional() {\n return this._blocks.every(b => b.isOptional);\n }\n\n /**\n @override\n */\n doCommit() {\n this._blocks.forEach(b => b.doCommit());\n super.doCommit();\n }\n\n /**\n @override\n */\n get unmaskedValue() {\n return this._blocks.reduce((str, b) => str += b.unmaskedValue, '');\n }\n set unmaskedValue(unmaskedValue) {\n super.unmaskedValue = unmaskedValue;\n }\n\n /**\n @override\n */\n get value() {\n // TODO return _value when not in change?\n return this._blocks.reduce((str, b) => str += b.value, '');\n }\n set value(value) {\n super.value = value;\n }\n get displayValue() {\n return this._blocks.reduce((str, b) => str += b.displayValue, '');\n }\n\n /**\n @override\n */\n appendTail(tail) {\n return super.appendTail(tail).aggregate(this._appendPlaceholder());\n }\n\n /**\n @override\n */\n _appendEager() {\n var _this$_mapPosToBlock;\n const details = new ChangeDetails();\n let startBlockIndex = (_this$_mapPosToBlock = this._mapPosToBlock(this.value.length)) === null || _this$_mapPosToBlock === void 0 ? void 0 : _this$_mapPosToBlock.index;\n if (startBlockIndex == null) return details;\n\n // TODO test if it works for nested pattern masks\n if (this._blocks[startBlockIndex].isFilled) ++startBlockIndex;\n for (let bi = startBlockIndex; bi < this._blocks.length; ++bi) {\n const d = this._blocks[bi]._appendEager();\n if (!d.inserted) break;\n details.aggregate(d);\n }\n return details;\n }\n\n /**\n @override\n */\n _appendCharRaw(ch) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const blockIter = this._mapPosToBlock(this.value.length);\n const details = new ChangeDetails();\n if (!blockIter) return details;\n for (let bi = blockIter.index;; ++bi) {\n var _flags$_beforeTailSta, _flags$_beforeTailSta2;\n const block = this._blocks[bi];\n if (!block) break;\n const blockDetails = block._appendChar(ch, Object.assign({}, flags, {\n _beforeTailState: (_flags$_beforeTailSta = flags._beforeTailState) === null || _flags$_beforeTailSta === void 0 ? void 0 : (_flags$_beforeTailSta2 = _flags$_beforeTailSta._blocks) === null || _flags$_beforeTailSta2 === void 0 ? void 0 : _flags$_beforeTailSta2[bi]\n }));\n const skip = blockDetails.skip;\n details.aggregate(blockDetails);\n if (skip || blockDetails.rawInserted) break; // go next char\n }\n\n return details;\n }\n\n /**\n @override\n */\n extractTail() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n const chunkTail = new ChunksTailDetails();\n if (fromPos === toPos) return chunkTail;\n this._forEachBlocksInRange(fromPos, toPos, (b, bi, bFromPos, bToPos) => {\n const blockChunk = b.extractTail(bFromPos, bToPos);\n blockChunk.stop = this._findStopBefore(bi);\n blockChunk.from = this._blockStartPos(bi);\n if (blockChunk instanceof ChunksTailDetails) blockChunk.blockIndex = bi;\n chunkTail.extend(blockChunk);\n });\n return chunkTail;\n }\n\n /**\n @override\n */\n extractInput() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n let flags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (fromPos === toPos) return '';\n let input = '';\n this._forEachBlocksInRange(fromPos, toPos, (b, _, fromPos, toPos) => {\n input += b.extractInput(fromPos, toPos, flags);\n });\n return input;\n }\n _findStopBefore(blockIndex) {\n let stopBefore;\n for (let si = 0; si < this._stops.length; ++si) {\n const stop = this._stops[si];\n if (stop <= blockIndex) stopBefore = stop;else break;\n }\n return stopBefore;\n }\n\n /** Appends placeholder depending on laziness */\n _appendPlaceholder(toBlockIndex) {\n const details = new ChangeDetails();\n if (this.lazy && toBlockIndex == null) return details;\n const startBlockIter = this._mapPosToBlock(this.value.length);\n if (!startBlockIter) return details;\n const startBlockIndex = startBlockIter.index;\n const endBlockIndex = toBlockIndex != null ? toBlockIndex : this._blocks.length;\n this._blocks.slice(startBlockIndex, endBlockIndex).forEach(b => {\n if (!b.lazy || toBlockIndex != null) {\n // $FlowFixMe `_blocks` may not be present\n const args = b._blocks != null ? [b._blocks.length] : [];\n const bDetails = b._appendPlaceholder(...args);\n this._value += bDetails.inserted;\n details.aggregate(bDetails);\n }\n });\n return details;\n }\n\n /** Finds block in pos */\n _mapPosToBlock(pos) {\n let accVal = '';\n for (let bi = 0; bi < this._blocks.length; ++bi) {\n const block = this._blocks[bi];\n const blockStartPos = accVal.length;\n accVal += block.value;\n if (pos <= accVal.length) {\n return {\n index: bi,\n offset: pos - blockStartPos\n };\n }\n }\n }\n\n /** */\n _blockStartPos(blockIndex) {\n return this._blocks.slice(0, blockIndex).reduce((pos, b) => pos += b.value.length, 0);\n }\n\n /** */\n _forEachBlocksInRange(fromPos) {\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n let fn = arguments.length > 2 ? arguments[2] : undefined;\n const fromBlockIter = this._mapPosToBlock(fromPos);\n if (fromBlockIter) {\n const toBlockIter = this._mapPosToBlock(toPos);\n // process first block\n const isSameBlock = toBlockIter && fromBlockIter.index === toBlockIter.index;\n const fromBlockStartPos = fromBlockIter.offset;\n const fromBlockEndPos = toBlockIter && isSameBlock ? toBlockIter.offset : this._blocks[fromBlockIter.index].value.length;\n fn(this._blocks[fromBlockIter.index], fromBlockIter.index, fromBlockStartPos, fromBlockEndPos);\n if (toBlockIter && !isSameBlock) {\n // process intermediate blocks\n for (let bi = fromBlockIter.index + 1; bi < toBlockIter.index; ++bi) {\n fn(this._blocks[bi], bi, 0, this._blocks[bi].value.length);\n }\n\n // process last block\n fn(this._blocks[toBlockIter.index], toBlockIter.index, 0, toBlockIter.offset);\n }\n }\n }\n\n /**\n @override\n */\n remove() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n const removeDetails = super.remove(fromPos, toPos);\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n removeDetails.aggregate(b.remove(bFromPos, bToPos));\n });\n return removeDetails;\n }\n\n /**\n @override\n */\n nearestInputPos(cursorPos) {\n let direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIRECTION.NONE;\n if (!this._blocks.length) return 0;\n const cursor = new PatternCursor(this, cursorPos);\n if (direction === DIRECTION.NONE) {\n // -------------------------------------------------\n // NONE should only go out from fixed to the right!\n // -------------------------------------------------\n if (cursor.pushRightBeforeInput()) return cursor.pos;\n cursor.popState();\n if (cursor.pushLeftBeforeInput()) return cursor.pos;\n return this.value.length;\n }\n\n // FORCE is only about a|* otherwise is 0\n if (direction === DIRECTION.LEFT || direction === DIRECTION.FORCE_LEFT) {\n // try to break fast when *|a\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeFilled();\n if (cursor.ok && cursor.pos === cursorPos) return cursorPos;\n cursor.popState();\n }\n\n // forward flow\n cursor.pushLeftBeforeInput();\n cursor.pushLeftBeforeRequired();\n cursor.pushLeftBeforeFilled();\n\n // backward flow\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n }\n if (cursor.ok) return cursor.pos;\n if (direction === DIRECTION.FORCE_LEFT) return 0;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n\n // cursor.popState();\n // if (\n // cursor.pushRightBeforeInput() &&\n // // TODO HACK for lazy if has aligned left inside fixed and has came to the start - use start position\n // (!this.lazy || this.extractInput())\n // ) return cursor.pos;\n\n return 0;\n }\n if (direction === DIRECTION.RIGHT || direction === DIRECTION.FORCE_RIGHT) {\n // forward flow\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.pushRightBeforeFilled()) return cursor.pos;\n if (direction === DIRECTION.FORCE_RIGHT) return this.value.length;\n\n // backward flow\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return this.nearestInputPos(cursorPos, DIRECTION.LEFT);\n }\n return cursorPos;\n }\n\n /**\n @override\n */\n totalInputPositions() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n let total = 0;\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n total += b.totalInputPositions(bFromPos, bToPos);\n });\n return total;\n }\n\n /** Get block by name */\n maskedBlock(name) {\n return this.maskedBlocks(name)[0];\n }\n\n /** Get all blocks by name */\n maskedBlocks(name) {\n const indices = this._maskedBlocks[name];\n if (!indices) return [];\n return indices.map(gi => this._blocks[gi]);\n }\n}\nMaskedPattern.DEFAULTS = {\n lazy: true,\n placeholderChar: '_'\n};\nMaskedPattern.STOP_CHAR = '`';\nMaskedPattern.ESCAPE_CHAR = '\\\\';\nMaskedPattern.InputDefinition = PatternInputDefinition;\nMaskedPattern.FixedDefinition = PatternFixedDefinition;\nIMask.MaskedPattern = MaskedPattern;\n\nexport { MaskedPattern as default };\n","import MaskedPattern from './pattern.js';\nimport '../core/change-details.js';\nimport { normalizePrepare } from '../core/utils.js';\nimport IMask from '../core/holder.js';\nimport '../_rollupPluginBabelHelpers-6b3bd404.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './pattern/input-definition.js';\nimport './factory.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './regexp.js';\n\n/** Pattern which accepts ranges */\nclass MaskedRange extends MaskedPattern {\n /**\n Optionally sets max length of pattern.\n Used when pattern length is longer then `to` param length. Pads zeros at start in this case.\n */\n\n /** Min bound */\n\n /** Max bound */\n\n /** */\n\n get _matchFrom() {\n return this.maxLength - String(this.from).length;\n }\n\n /**\n @override\n */\n _update(opts) {\n // TODO type\n opts = Object.assign({\n to: this.to || 0,\n from: this.from || 0,\n maxLength: this.maxLength || 0\n }, opts);\n let maxLength = String(opts.to).length;\n if (opts.maxLength != null) maxLength = Math.max(maxLength, opts.maxLength);\n opts.maxLength = maxLength;\n const fromStr = String(opts.from).padStart(maxLength, '0');\n const toStr = String(opts.to).padStart(maxLength, '0');\n let sameCharsCount = 0;\n while (sameCharsCount < toStr.length && toStr[sameCharsCount] === fromStr[sameCharsCount]) ++sameCharsCount;\n opts.mask = toStr.slice(0, sameCharsCount).replace(/0/g, '\\\\0') + '0'.repeat(maxLength - sameCharsCount);\n super._update(opts);\n }\n\n /**\n @override\n */\n get isComplete() {\n return super.isComplete && Boolean(this.value);\n }\n boundaries(str) {\n let minstr = '';\n let maxstr = '';\n const [, placeholder, num] = str.match(/^(\\D*)(\\d*)(\\D*)/) || [];\n if (num) {\n minstr = '0'.repeat(placeholder.length) + num;\n maxstr = '9'.repeat(placeholder.length) + num;\n }\n minstr = minstr.padEnd(this.maxLength, '0');\n maxstr = maxstr.padEnd(this.maxLength, '9');\n return [minstr, maxstr];\n }\n\n // TODO str is a single char everytime\n /**\n @override\n */\n doPrepare(ch) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let details;\n [ch, details] = normalizePrepare(super.doPrepare(ch.replace(/\\D/g, ''), flags));\n if (!this.autofix || !ch) return ch;\n const fromStr = String(this.from).padStart(this.maxLength, '0');\n const toStr = String(this.to).padStart(this.maxLength, '0');\n let nextVal = this.value + ch;\n if (nextVal.length > this.maxLength) return '';\n const [minstr, maxstr] = this.boundaries(nextVal);\n if (Number(maxstr) < this.from) return fromStr[nextVal.length - 1];\n if (Number(minstr) > this.to) {\n if (this.autofix === 'pad' && nextVal.length < this.maxLength) {\n return ['', details.aggregate(this.append(fromStr[nextVal.length - 1] + ch, flags))];\n }\n return toStr[nextVal.length - 1];\n }\n return ch;\n }\n\n /**\n @override\n */\n doValidate() {\n const str = this.value;\n const firstNonZero = str.search(/[^0]/);\n if (firstNonZero === -1 && str.length <= this._matchFrom) return true;\n const [minstr, maxstr] = this.boundaries(str);\n return this.from <= Number(maxstr) && Number(minstr) <= this.to && super.doValidate(...arguments);\n }\n}\nIMask.MaskedRange = MaskedRange;\n\nexport { MaskedRange as default };\n","import MaskedPattern from './pattern.js';\nimport MaskedRange from './range.js';\nimport IMask from '../core/holder.js';\nimport '../_rollupPluginBabelHelpers-6b3bd404.js';\nimport '../core/utils.js';\nimport '../core/change-details.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './pattern/input-definition.js';\nimport './factory.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './regexp.js';\n\n/** Date mask */\nclass MaskedDate extends MaskedPattern {\n /** Pattern mask for date according to {@link MaskedDate#format} */\n\n /** Start date */\n\n /** End date */\n\n /** */\n\n /**\n @param {Object} opts\n */\n constructor(opts) {\n super(Object.assign({}, MaskedDate.DEFAULTS, opts));\n }\n\n /**\n @override\n */\n _update(opts) {\n if (opts.mask === Date) delete opts.mask;\n if (opts.pattern) opts.mask = opts.pattern;\n const blocks = opts.blocks;\n opts.blocks = Object.assign({}, MaskedDate.GET_DEFAULT_BLOCKS());\n // adjust year block\n if (opts.min) opts.blocks.Y.from = opts.min.getFullYear();\n if (opts.max) opts.blocks.Y.to = opts.max.getFullYear();\n if (opts.min && opts.max && opts.blocks.Y.from === opts.blocks.Y.to) {\n opts.blocks.m.from = opts.min.getMonth() + 1;\n opts.blocks.m.to = opts.max.getMonth() + 1;\n if (opts.blocks.m.from === opts.blocks.m.to) {\n opts.blocks.d.from = opts.min.getDate();\n opts.blocks.d.to = opts.max.getDate();\n }\n }\n Object.assign(opts.blocks, this.blocks, blocks);\n\n // add autofix\n Object.keys(opts.blocks).forEach(bk => {\n const b = opts.blocks[bk];\n if (!('autofix' in b) && 'autofix' in opts) b.autofix = opts.autofix;\n });\n super._update(opts);\n }\n\n /**\n @override\n */\n doValidate() {\n const date = this.date;\n return super.doValidate(...arguments) && (!this.isComplete || this.isDateExist(this.value) && date != null && (this.min == null || this.min <= date) && (this.max == null || date <= this.max));\n }\n\n /** Checks if date is exists */\n isDateExist(str) {\n return this.format(this.parse(str, this), this).indexOf(str) >= 0;\n }\n\n /** Parsed Date */\n get date() {\n return this.typedValue;\n }\n set date(date) {\n this.typedValue = date;\n }\n\n /**\n @override\n */\n get typedValue() {\n return this.isComplete ? super.typedValue : null;\n }\n set typedValue(value) {\n super.typedValue = value;\n }\n\n /**\n @override\n */\n maskEquals(mask) {\n return mask === Date || super.maskEquals(mask);\n }\n}\nMaskedDate.DEFAULTS = {\n pattern: 'd{.}`m{.}`Y',\n format: date => {\n if (!date) return '';\n const day = String(date.getDate()).padStart(2, '0');\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const year = date.getFullYear();\n return [day, month, year].join('.');\n },\n parse: str => {\n const [day, month, year] = str.split('.');\n return new Date(year, month - 1, day);\n }\n};\nMaskedDate.GET_DEFAULT_BLOCKS = () => ({\n d: {\n mask: MaskedRange,\n from: 1,\n to: 31,\n maxLength: 2\n },\n m: {\n mask: MaskedRange,\n from: 1,\n to: 12,\n maxLength: 2\n },\n Y: {\n mask: MaskedRange,\n from: 1900,\n to: 9999\n }\n});\nIMask.MaskedDate = MaskedDate;\n\nexport { MaskedDate as default };\n","import IMask from '../core/holder.js';\n\n/**\n Generic element API to use with mask\n @interface\n*/\nclass MaskElement {\n /** */\n\n /** */\n\n /** */\n\n /** Safely returns selection start */\n get selectionStart() {\n let start;\n try {\n start = this._unsafeSelectionStart;\n } catch (e) {}\n return start != null ? start : this.value.length;\n }\n\n /** Safely returns selection end */\n get selectionEnd() {\n let end;\n try {\n end = this._unsafeSelectionEnd;\n } catch (e) {}\n return end != null ? end : this.value.length;\n }\n\n /** Safely sets element selection */\n select(start, end) {\n if (start == null || end == null || start === this.selectionStart && end === this.selectionEnd) return;\n try {\n this._unsafeSelect(start, end);\n } catch (e) {}\n }\n\n /** Should be overriden in subclasses */\n _unsafeSelect(start, end) {}\n /** Should be overriden in subclasses */\n get isActive() {\n return false;\n }\n /** Should be overriden in subclasses */\n bindEvents(handlers) {}\n /** Should be overriden in subclasses */\n unbindEvents() {}\n}\nIMask.MaskElement = MaskElement;\n\nexport { MaskElement as default };\n","import MaskElement from './mask-element.js';\nimport IMask from '../core/holder.js';\n\n/** Bridge between HTMLElement and {@link Masked} */\nclass HTMLMaskElement extends MaskElement {\n /** Mapping between HTMLElement events and mask internal events */\n\n /** HTMLElement to use mask on */\n\n /**\n @param {HTMLInputElement|HTMLTextAreaElement} input\n */\n constructor(input) {\n super();\n this.input = input;\n this._handlers = {};\n }\n\n /** */\n // $FlowFixMe https://github.com/facebook/flow/issues/2839\n get rootElement() {\n var _this$input$getRootNo, _this$input$getRootNo2, _this$input;\n return (_this$input$getRootNo = (_this$input$getRootNo2 = (_this$input = this.input).getRootNode) === null || _this$input$getRootNo2 === void 0 ? void 0 : _this$input$getRootNo2.call(_this$input)) !== null && _this$input$getRootNo !== void 0 ? _this$input$getRootNo : document;\n }\n\n /**\n Is element in focus\n @readonly\n */\n get isActive() {\n //$FlowFixMe\n return this.input === this.rootElement.activeElement;\n }\n\n /**\n Returns HTMLElement selection start\n @override\n */\n get _unsafeSelectionStart() {\n return this.input.selectionStart;\n }\n\n /**\n Returns HTMLElement selection end\n @override\n */\n get _unsafeSelectionEnd() {\n return this.input.selectionEnd;\n }\n\n /**\n Sets HTMLElement selection\n @override\n */\n _unsafeSelect(start, end) {\n this.input.setSelectionRange(start, end);\n }\n\n /**\n HTMLElement value\n @override\n */\n get value() {\n return this.input.value;\n }\n set value(value) {\n this.input.value = value;\n }\n\n /**\n Binds HTMLElement events to mask internal events\n @override\n */\n bindEvents(handlers) {\n Object.keys(handlers).forEach(event => this._toggleEventHandler(HTMLMaskElement.EVENTS_MAP[event], handlers[event]));\n }\n\n /**\n Unbinds HTMLElement events to mask internal events\n @override\n */\n unbindEvents() {\n Object.keys(this._handlers).forEach(event => this._toggleEventHandler(event));\n }\n\n /** */\n _toggleEventHandler(event, handler) {\n if (this._handlers[event]) {\n this.input.removeEventListener(event, this._handlers[event]);\n delete this._handlers[event];\n }\n if (handler) {\n this.input.addEventListener(event, handler);\n this._handlers[event] = handler;\n }\n }\n}\nHTMLMaskElement.EVENTS_MAP = {\n selectionChange: 'keydown',\n input: 'input',\n drop: 'drop',\n click: 'click',\n focus: 'focus',\n commit: 'blur'\n};\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLMaskElement as default };\n","import HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\nclass HTMLContenteditableMaskElement extends HTMLMaskElement {\n /**\n Returns HTMLElement selection start\n @override\n */\n get _unsafeSelectionStart() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset < focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /**\n Returns HTMLElement selection end\n @override\n */\n get _unsafeSelectionEnd() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset > focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /**\n Sets HTMLElement selection\n @override\n */\n _unsafeSelect(start, end) {\n if (!this.rootElement.createRange) return;\n const range = this.rootElement.createRange();\n range.setStart(this.input.firstChild || this.input, start);\n range.setEnd(this.input.lastChild || this.input, end);\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n if (selection) {\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n\n /**\n HTMLElement value\n @override\n */\n get value() {\n // $FlowFixMe\n return this.input.textContent;\n }\n set value(value) {\n this.input.textContent = value;\n }\n}\nIMask.HTMLContenteditableMaskElement = HTMLContenteditableMaskElement;\n\nexport { HTMLContenteditableMaskElement as default };\n","import { _ as _objectWithoutPropertiesLoose } from '../_rollupPluginBabelHelpers-6b3bd404.js';\nimport { objectIncludes, DIRECTION } from '../core/utils.js';\nimport ActionDetails from '../core/action-details.js';\nimport '../masked/date.js';\nimport createMask, { maskedClass } from '../masked/factory.js';\nimport MaskElement from './mask-element.js';\nimport HTMLMaskElement from './html-mask-element.js';\nimport HTMLContenteditableMaskElement from './html-contenteditable-mask-element.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../masked/pattern.js';\nimport '../masked/base.js';\nimport '../core/continuous-tail-details.js';\nimport '../masked/pattern/input-definition.js';\nimport '../masked/pattern/fixed-definition.js';\nimport '../masked/pattern/chunk-tail-details.js';\nimport '../masked/pattern/cursor.js';\nimport '../masked/regexp.js';\nimport '../masked/range.js';\n\nconst _excluded = [\"mask\"];\n\n/** Listens to element events and controls changes between element and {@link Masked} */\nclass InputMask {\n /**\n View element\n @readonly\n */\n\n /**\n Internal {@link Masked} model\n @readonly\n */\n\n /**\n @param {MaskElement|HTMLInputElement|HTMLTextAreaElement} el\n @param {Object} opts\n */\n constructor(el, opts) {\n this.el = el instanceof MaskElement ? el : el.isContentEditable && el.tagName !== 'INPUT' && el.tagName !== 'TEXTAREA' ? new HTMLContenteditableMaskElement(el) : new HTMLMaskElement(el);\n this.masked = createMask(opts);\n this._listeners = {};\n this._value = '';\n this._unmaskedValue = '';\n this._saveSelection = this._saveSelection.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onChange = this._onChange.bind(this);\n this._onDrop = this._onDrop.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onClick = this._onClick.bind(this);\n this.alignCursor = this.alignCursor.bind(this);\n this.alignCursorFriendly = this.alignCursorFriendly.bind(this);\n this._bindEvents();\n\n // refresh\n this.updateValue();\n this._onChange();\n }\n\n /** Read or update mask */\n get mask() {\n return this.masked.mask;\n }\n maskEquals(mask) {\n var _this$masked;\n return mask == null || ((_this$masked = this.masked) === null || _this$masked === void 0 ? void 0 : _this$masked.maskEquals(mask));\n }\n set mask(mask) {\n if (this.maskEquals(mask)) return;\n\n // $FlowFixMe No ideas ... after update\n if (!(mask instanceof IMask.Masked) && this.masked.constructor === maskedClass(mask)) {\n this.masked.updateOptions({\n mask\n });\n return;\n }\n const masked = createMask({\n mask\n });\n masked.unmaskedValue = this.masked.unmaskedValue;\n this.masked = masked;\n }\n\n /** Raw value */\n get value() {\n return this._value;\n }\n set value(str) {\n if (this.value === str) return;\n this.masked.value = str;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Unmasked value */\n get unmaskedValue() {\n return this._unmaskedValue;\n }\n set unmaskedValue(str) {\n if (this.unmaskedValue === str) return;\n this.masked.unmaskedValue = str;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Typed unmasked value */\n get typedValue() {\n return this.masked.typedValue;\n }\n set typedValue(val) {\n if (this.masked.typedValueEquals(val)) return;\n this.masked.typedValue = val;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Display value */\n get displayValue() {\n return this.masked.displayValue;\n }\n\n /**\n Starts listening to element events\n @protected\n */\n _bindEvents() {\n this.el.bindEvents({\n selectionChange: this._saveSelection,\n input: this._onInput,\n drop: this._onDrop,\n click: this._onClick,\n focus: this._onFocus,\n commit: this._onChange\n });\n }\n\n /**\n Stops listening to element events\n @protected\n */\n _unbindEvents() {\n if (this.el) this.el.unbindEvents();\n }\n\n /**\n Fires custom event\n @protected\n */\n _fireEvent(ev) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n const listeners = this._listeners[ev];\n if (!listeners) return;\n listeners.forEach(l => l(...args));\n }\n\n /**\n Current selection start\n @readonly\n */\n get selectionStart() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionStart;\n }\n\n /** Current cursor position */\n get cursorPos() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionEnd;\n }\n set cursorPos(pos) {\n if (!this.el || !this.el.isActive) return;\n this.el.select(pos, pos);\n this._saveSelection();\n }\n\n /**\n Stores current selection\n @protected\n */\n _saveSelection( /* ev */\n ) {\n if (this.displayValue !== this.el.value) {\n console.warn('Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly.'); // eslint-disable-line no-console\n }\n\n this._selection = {\n start: this.selectionStart,\n end: this.cursorPos\n };\n }\n\n /** Syncronizes model value from view */\n updateValue() {\n this.masked.value = this.el.value;\n this._value = this.masked.value;\n }\n\n /** Syncronizes view from model value, fires change events */\n updateControl() {\n const newUnmaskedValue = this.masked.unmaskedValue;\n const newValue = this.masked.value;\n const newDisplayValue = this.displayValue;\n const isChanged = this.unmaskedValue !== newUnmaskedValue || this.value !== newValue;\n this._unmaskedValue = newUnmaskedValue;\n this._value = newValue;\n if (this.el.value !== newDisplayValue) this.el.value = newDisplayValue;\n if (isChanged) this._fireChangeEvents();\n }\n\n /** Updates options with deep equal check, recreates @{link Masked} model if mask type changes */\n updateOptions(opts) {\n const {\n mask\n } = opts,\n restOpts = _objectWithoutPropertiesLoose(opts, _excluded);\n const updateMask = !this.maskEquals(mask);\n const updateOpts = !objectIncludes(this.masked, restOpts);\n if (updateMask) this.mask = mask;\n if (updateOpts) this.masked.updateOptions(restOpts);\n if (updateMask || updateOpts) this.updateControl();\n }\n\n /** Updates cursor */\n updateCursor(cursorPos) {\n if (cursorPos == null) return;\n this.cursorPos = cursorPos;\n\n // also queue change cursor for mobile browsers\n this._delayUpdateCursor(cursorPos);\n }\n\n /**\n Delays cursor update to support mobile browsers\n @private\n */\n _delayUpdateCursor(cursorPos) {\n this._abortUpdateCursor();\n this._changingCursorPos = cursorPos;\n this._cursorChanging = setTimeout(() => {\n if (!this.el) return; // if was destroyed\n this.cursorPos = this._changingCursorPos;\n this._abortUpdateCursor();\n }, 10);\n }\n\n /**\n Fires custom events\n @protected\n */\n _fireChangeEvents() {\n this._fireEvent('accept', this._inputEvent);\n if (this.masked.isComplete) this._fireEvent('complete', this._inputEvent);\n }\n\n /**\n Aborts delayed cursor update\n @private\n */\n _abortUpdateCursor() {\n if (this._cursorChanging) {\n clearTimeout(this._cursorChanging);\n delete this._cursorChanging;\n }\n }\n\n /** Aligns cursor to nearest available position */\n alignCursor() {\n this.cursorPos = this.masked.nearestInputPos(this.masked.nearestInputPos(this.cursorPos, DIRECTION.LEFT));\n }\n\n /** Aligns cursor only if selection is empty */\n alignCursorFriendly() {\n if (this.selectionStart !== this.cursorPos) return; // skip if range is selected\n this.alignCursor();\n }\n\n /** Adds listener on custom event */\n on(ev, handler) {\n if (!this._listeners[ev]) this._listeners[ev] = [];\n this._listeners[ev].push(handler);\n return this;\n }\n\n /** Removes custom event listener */\n off(ev, handler) {\n if (!this._listeners[ev]) return this;\n if (!handler) {\n delete this._listeners[ev];\n return this;\n }\n const hIndex = this._listeners[ev].indexOf(handler);\n if (hIndex >= 0) this._listeners[ev].splice(hIndex, 1);\n return this;\n }\n\n /** Handles view input event */\n _onInput(e) {\n this._inputEvent = e;\n this._abortUpdateCursor();\n\n // fix strange IE behavior\n if (!this._selection) return this.updateValue();\n const details = new ActionDetails(\n // new state\n this.el.value, this.cursorPos,\n // old state\n this.displayValue, this._selection);\n const oldRawValue = this.masked.rawInputValue;\n const offset = this.masked.splice(details.startChangePos, details.removed.length, details.inserted, details.removeDirection, {\n input: true,\n raw: true\n }).offset;\n\n // force align in remove direction only if no input chars were removed\n // otherwise we still need to align with NONE (to get out from fixed symbols for instance)\n const removeDirection = oldRawValue === this.masked.rawInputValue ? details.removeDirection : DIRECTION.NONE;\n let cursorPos = this.masked.nearestInputPos(details.startChangePos + offset, removeDirection);\n if (removeDirection !== DIRECTION.NONE) cursorPos = this.masked.nearestInputPos(cursorPos, DIRECTION.NONE);\n this.updateControl();\n this.updateCursor(cursorPos);\n delete this._inputEvent;\n }\n\n /** Handles view change event and commits model value */\n _onChange() {\n if (this.displayValue !== this.el.value) {\n this.updateValue();\n }\n this.masked.doCommit();\n this.updateControl();\n this._saveSelection();\n }\n\n /** Handles view drop event, prevents by default */\n _onDrop(ev) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n /** Restore last selection on focus */\n _onFocus(ev) {\n this.alignCursorFriendly();\n }\n\n /** Restore last selection on focus */\n _onClick(ev) {\n this.alignCursorFriendly();\n }\n\n /** Unbind view events and removes element reference */\n destroy() {\n this._unbindEvents();\n // $FlowFixMe why not do so?\n this._listeners.length = 0;\n // $FlowFixMe\n delete this.el;\n }\n}\nIMask.InputMask = InputMask;\n\nexport { InputMask as default };\n","import MaskedPattern from './pattern.js';\nimport IMask from '../core/holder.js';\nimport '../_rollupPluginBabelHelpers-6b3bd404.js';\nimport '../core/utils.js';\nimport '../core/change-details.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './pattern/input-definition.js';\nimport './factory.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './regexp.js';\n\n/** Pattern which validates enum values */\nclass MaskedEnum extends MaskedPattern {\n /**\n @override\n @param {Object} opts\n */\n _update(opts) {\n // TODO type\n if (opts.enum) opts.mask = '*'.repeat(opts.enum[0].length);\n super._update(opts);\n }\n\n /**\n @override\n */\n doValidate() {\n return this.enum.some(e => e.indexOf(this.unmaskedValue) >= 0) && super.doValidate(...arguments);\n }\n}\nIMask.MaskedEnum = MaskedEnum;\n\nexport { MaskedEnum as default };\n","import { escapeRegExp, normalizePrepare, DIRECTION } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\n/**\n Number mask\n @param {Object} opts\n @param {string} opts.radix - Single char\n @param {string} opts.thousandsSeparator - Single char\n @param {Array} opts.mapToRadix - Array of single chars\n @param {number} opts.min\n @param {number} opts.max\n @param {number} opts.scale - Digits after point\n @param {boolean} opts.signed - Allow negative\n @param {boolean} opts.normalizeZeros - Flag to remove leading and trailing zeros in the end of editing\n @param {boolean} opts.padFractionalZeros - Flag to pad trailing zeros after point in the end of editing\n*/\nclass MaskedNumber extends Masked {\n /** Single char */\n\n /** Single char */\n\n /** Array of single chars */\n\n /** */\n\n /** */\n\n /** Digits after point */\n\n /** */\n\n /** Flag to remove leading and trailing zeros in the end of editing */\n\n /** Flag to pad trailing zeros after point in the end of editing */\n\n constructor(opts) {\n super(Object.assign({}, MaskedNumber.DEFAULTS, opts));\n }\n\n /**\n @override\n */\n _update(opts) {\n super._update(opts);\n this._updateRegExps();\n }\n\n /** */\n _updateRegExps() {\n let start = '^' + (this.allowNegative ? '[+|\\\\-]?' : '');\n let mid = '\\\\d*';\n let end = (this.scale ? \"(\".concat(escapeRegExp(this.radix), \"\\\\d{0,\").concat(this.scale, \"})?\") : '') + '$';\n this._numberRegExp = new RegExp(start + mid + end);\n this._mapToRadixRegExp = new RegExp(\"[\".concat(this.mapToRadix.map(escapeRegExp).join(''), \"]\"), 'g');\n this._thousandsSeparatorRegExp = new RegExp(escapeRegExp(this.thousandsSeparator), 'g');\n }\n\n /** */\n _removeThousandsSeparators(value) {\n return value.replace(this._thousandsSeparatorRegExp, '');\n }\n\n /** */\n _insertThousandsSeparators(value) {\n // https://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript\n const parts = value.split(this.radix);\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousandsSeparator);\n return parts.join(this.radix);\n }\n\n /**\n @override\n */\n doPrepare(ch) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n ch = this._removeThousandsSeparators(this.scale && this.mapToRadix.length && (\n /*\n radix should be mapped when\n 1) input is done from keyboard = flags.input && flags.raw\n 2) unmasked value is set = !flags.input && !flags.raw\n and should not be mapped when\n 1) value is set = flags.input && !flags.raw\n 2) raw value is set = !flags.input && flags.raw\n */\n flags.input && flags.raw || !flags.input && !flags.raw) ? ch.replace(this._mapToRadixRegExp, this.radix) : ch);\n const [prepCh, details] = normalizePrepare(super.doPrepare(ch, flags));\n if (ch && !prepCh) details.skip = true;\n return [prepCh, details];\n }\n\n /** */\n _separatorsCount(to) {\n let extendOnSeparators = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n let count = 0;\n for (let pos = 0; pos < to; ++pos) {\n if (this._value.indexOf(this.thousandsSeparator, pos) === pos) {\n ++count;\n if (extendOnSeparators) to += this.thousandsSeparator.length;\n }\n }\n return count;\n }\n\n /** */\n _separatorsCountFromSlice() {\n let slice = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this._value;\n return this._separatorsCount(this._removeThousandsSeparators(slice).length, true);\n }\n\n /**\n @override\n */\n extractInput() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n let flags = arguments.length > 2 ? arguments[2] : undefined;\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n return this._removeThousandsSeparators(super.extractInput(fromPos, toPos, flags));\n }\n\n /**\n @override\n */\n _appendCharRaw(ch) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!this.thousandsSeparator) return super._appendCharRaw(ch, flags);\n const prevBeforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n const prevBeforeTailSeparatorsCount = this._separatorsCountFromSlice(prevBeforeTailValue);\n this._value = this._removeThousandsSeparators(this.value);\n const appendDetails = super._appendCharRaw(ch, flags);\n this._value = this._insertThousandsSeparators(this._value);\n const beforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(beforeTailValue);\n appendDetails.tailShift += (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length;\n appendDetails.skip = !appendDetails.rawInserted && ch === this.thousandsSeparator;\n return appendDetails;\n }\n\n /** */\n _findSeparatorAround(pos) {\n if (this.thousandsSeparator) {\n const searchFrom = pos - this.thousandsSeparator.length + 1;\n const separatorPos = this.value.indexOf(this.thousandsSeparator, searchFrom);\n if (separatorPos <= pos) return separatorPos;\n }\n return -1;\n }\n _adjustRangeWithSeparators(from, to) {\n const separatorAroundFromPos = this._findSeparatorAround(from);\n if (separatorAroundFromPos >= 0) from = separatorAroundFromPos;\n const separatorAroundToPos = this._findSeparatorAround(to);\n if (separatorAroundToPos >= 0) to = separatorAroundToPos + this.thousandsSeparator.length;\n return [from, to];\n }\n\n /**\n @override\n */\n remove() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n const valueBeforePos = this.value.slice(0, fromPos);\n const valueAfterPos = this.value.slice(toPos);\n const prevBeforeTailSeparatorsCount = this._separatorsCount(valueBeforePos.length);\n this._value = this._insertThousandsSeparators(this._removeThousandsSeparators(valueBeforePos + valueAfterPos));\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(valueBeforePos);\n return new ChangeDetails({\n tailShift: (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length\n });\n }\n\n /**\n @override\n */\n nearestInputPos(cursorPos, direction) {\n if (!this.thousandsSeparator) return cursorPos;\n switch (direction) {\n case DIRECTION.NONE:\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n {\n const separatorAtLeftPos = this._findSeparatorAround(cursorPos - 1);\n if (separatorAtLeftPos >= 0) {\n const separatorAtLeftEndPos = separatorAtLeftPos + this.thousandsSeparator.length;\n if (cursorPos < separatorAtLeftEndPos || this.value.length <= separatorAtLeftEndPos || direction === DIRECTION.FORCE_LEFT) {\n return separatorAtLeftPos;\n }\n }\n break;\n }\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n {\n const separatorAtRightPos = this._findSeparatorAround(cursorPos);\n if (separatorAtRightPos >= 0) {\n return separatorAtRightPos + this.thousandsSeparator.length;\n }\n }\n }\n return cursorPos;\n }\n\n /**\n @override\n */\n doValidate(flags) {\n // validate as string\n let valid = Boolean(this._removeThousandsSeparators(this.value).match(this._numberRegExp));\n if (valid) {\n // validate as number\n const number = this.number;\n valid = valid && !isNaN(number) && (\n // check min bound for negative values\n this.min == null || this.min >= 0 || this.min <= this.number) && (\n // check max bound for positive values\n this.max == null || this.max <= 0 || this.number <= this.max);\n }\n return valid && super.doValidate(flags);\n }\n\n /**\n @override\n */\n doCommit() {\n if (this.value) {\n const number = this.number;\n let validnum = number;\n\n // check bounds\n if (this.min != null) validnum = Math.max(validnum, this.min);\n if (this.max != null) validnum = Math.min(validnum, this.max);\n if (validnum !== number) this.unmaskedValue = this.doFormat(validnum);\n let formatted = this.value;\n if (this.normalizeZeros) formatted = this._normalizeZeros(formatted);\n if (this.padFractionalZeros && this.scale > 0) formatted = this._padFractionalZeros(formatted);\n this._value = formatted;\n }\n super.doCommit();\n }\n\n /** */\n _normalizeZeros(value) {\n const parts = this._removeThousandsSeparators(value).split(this.radix);\n\n // remove leading zeros\n parts[0] = parts[0].replace(/^(\\D*)(0*)(\\d*)/, (match, sign, zeros, num) => sign + num);\n // add leading zero\n if (value.length && !/\\d$/.test(parts[0])) parts[0] = parts[0] + '0';\n if (parts.length > 1) {\n parts[1] = parts[1].replace(/0*$/, ''); // remove trailing zeros\n if (!parts[1].length) parts.length = 1; // remove fractional\n }\n\n return this._insertThousandsSeparators(parts.join(this.radix));\n }\n\n /** */\n _padFractionalZeros(value) {\n if (!value) return value;\n const parts = value.split(this.radix);\n if (parts.length < 2) parts.push('');\n parts[1] = parts[1].padEnd(this.scale, '0');\n return parts.join(this.radix);\n }\n\n /** */\n doSkipInvalid(ch) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let checkTail = arguments.length > 2 ? arguments[2] : undefined;\n const dropFractional = this.scale === 0 && ch !== this.thousandsSeparator && (ch === this.radix || ch === MaskedNumber.UNMASKED_RADIX || this.mapToRadix.includes(ch));\n return super.doSkipInvalid(ch, flags, checkTail) && !dropFractional;\n }\n\n /**\n @override\n */\n get unmaskedValue() {\n return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix, MaskedNumber.UNMASKED_RADIX);\n }\n set unmaskedValue(unmaskedValue) {\n super.unmaskedValue = unmaskedValue;\n }\n\n /**\n @override\n */\n get typedValue() {\n return this.doParse(this.unmaskedValue);\n }\n set typedValue(n) {\n this.rawInputValue = this.doFormat(n).replace(MaskedNumber.UNMASKED_RADIX, this.radix);\n }\n\n /** Parsed Number */\n get number() {\n return this.typedValue;\n }\n set number(number) {\n this.typedValue = number;\n }\n\n /**\n Is negative allowed\n @readonly\n */\n get allowNegative() {\n return this.signed || this.min != null && this.min < 0 || this.max != null && this.max < 0;\n }\n\n /**\n @override\n */\n typedValueEquals(value) {\n // handle 0 -> '' case (typed = 0 even if value = '')\n // for details see https://github.com/uNmAnNeR/imaskjs/issues/134\n return (super.typedValueEquals(value) || MaskedNumber.EMPTY_VALUES.includes(value) && MaskedNumber.EMPTY_VALUES.includes(this.typedValue)) && !(value === 0 && this.value === '');\n }\n}\nMaskedNumber.UNMASKED_RADIX = '.';\nMaskedNumber.DEFAULTS = {\n radix: ',',\n thousandsSeparator: '',\n mapToRadix: [MaskedNumber.UNMASKED_RADIX],\n scale: 2,\n signed: false,\n normalizeZeros: true,\n padFractionalZeros: false,\n parse: Number,\n format: n => n.toLocaleString('en-US', {\n useGrouping: false,\n maximumFractionDigits: 20\n })\n};\nMaskedNumber.EMPTY_VALUES = [...Masked.EMPTY_VALUES, 0];\nIMask.MaskedNumber = MaskedNumber;\n\nexport { MaskedNumber as default };\n","import Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by custom Function */\nclass MaskedFunction extends Masked {\n /**\n @override\n @param {Object} opts\n */\n _update(opts) {\n if (opts.mask) opts.validate = opts.mask;\n super._update(opts);\n }\n}\nIMask.MaskedFunction = MaskedFunction;\n\nexport { MaskedFunction as default };\n","import { _ as _objectWithoutPropertiesLoose } from '../_rollupPluginBabelHelpers-6b3bd404.js';\nimport { DIRECTION, normalizePrepare, objectIncludes } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport createMask from './factory.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\nconst _excluded = [\"compiledMasks\", \"currentMaskRef\", \"currentMask\"],\n _excluded2 = [\"mask\"];\n/** Dynamic mask for choosing apropriate mask in run-time */\nclass MaskedDynamic extends Masked {\n /** Currently chosen mask */\n\n /** Compliled {@link Masked} options */\n\n /** Chooses {@link Masked} depending on input value */\n\n /**\n @param {Object} opts\n */\n constructor(opts) {\n super(Object.assign({}, MaskedDynamic.DEFAULTS, opts));\n this.currentMask = null;\n }\n\n /**\n @override\n */\n _update(opts) {\n super._update(opts);\n if ('mask' in opts) {\n // mask could be totally dynamic with only `dispatch` option\n this.compiledMasks = Array.isArray(opts.mask) ? opts.mask.map(m => createMask(m)) : [];\n\n // this.currentMask = this.doDispatch(''); // probably not needed but lets see\n }\n }\n\n /**\n @override\n */\n _appendCharRaw(ch) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const details = this._applyDispatch(ch, flags);\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendChar(ch, this.currentMaskFlags(flags)));\n }\n return details;\n }\n _applyDispatch() {\n let appended = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let tail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n const prevValueBeforeTail = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._value : this.value;\n const inputValue = this.rawInputValue;\n const insertValue = flags.tail && flags._beforeTailState != null ?\n // $FlowFixMe - tired to fight with type system\n flags._beforeTailState._rawInputValue : inputValue;\n const tailValue = inputValue.slice(insertValue.length);\n const prevMask = this.currentMask;\n const details = new ChangeDetails();\n const prevMaskState = prevMask === null || prevMask === void 0 ? void 0 : prevMask.state;\n\n // clone flags to prevent overwriting `_beforeTailState`\n this.currentMask = this.doDispatch(appended, Object.assign({}, flags), tail);\n\n // restore state after dispatch\n if (this.currentMask) {\n if (this.currentMask !== prevMask) {\n // if mask changed reapply input\n this.currentMask.reset();\n if (insertValue) {\n // $FlowFixMe - it's ok, we don't change current mask above\n const d = this.currentMask.append(insertValue, {\n raw: true\n });\n details.tailShift = d.inserted.length - prevValueBeforeTail.length;\n }\n if (tailValue) {\n // $FlowFixMe - it's ok, we don't change current mask above\n details.tailShift += this.currentMask.append(tailValue, {\n raw: true,\n tail: true\n }).tailShift;\n }\n } else {\n // Dispatch can do something bad with state, so\n // restore prev mask state\n this.currentMask.state = prevMaskState;\n }\n }\n return details;\n }\n _appendPlaceholder() {\n const details = this._applyDispatch(...arguments);\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendPlaceholder());\n }\n return details;\n }\n\n /**\n @override\n */\n _appendEager() {\n const details = this._applyDispatch(...arguments);\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendEager());\n }\n return details;\n }\n appendTail(tail) {\n const details = new ChangeDetails();\n if (tail) details.aggregate(this._applyDispatch('', {}, tail));\n return details.aggregate(this.currentMask ? this.currentMask.appendTail(tail) : super.appendTail(tail));\n }\n currentMaskFlags(flags) {\n var _flags$_beforeTailSta, _flags$_beforeTailSta2;\n return Object.assign({}, flags, {\n _beforeTailState: ((_flags$_beforeTailSta = flags._beforeTailState) === null || _flags$_beforeTailSta === void 0 ? void 0 : _flags$_beforeTailSta.currentMaskRef) === this.currentMask && ((_flags$_beforeTailSta2 = flags._beforeTailState) === null || _flags$_beforeTailSta2 === void 0 ? void 0 : _flags$_beforeTailSta2.currentMask) || flags._beforeTailState\n });\n }\n\n /**\n @override\n */\n doDispatch(appended) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let tail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n return this.dispatch(appended, this, flags, tail);\n }\n\n /**\n @override\n */\n doValidate(flags) {\n return super.doValidate(flags) && (!this.currentMask || this.currentMask.doValidate(this.currentMaskFlags(flags)));\n }\n\n /**\n @override\n */\n doPrepare(str) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let [s, details] = normalizePrepare(super.doPrepare(str, flags));\n if (this.currentMask) {\n let currentDetails;\n [s, currentDetails] = normalizePrepare(super.doPrepare(s, this.currentMaskFlags(flags)));\n details = details.aggregate(currentDetails);\n }\n return [s, details];\n }\n\n /**\n @override\n */\n reset() {\n var _this$currentMask;\n (_this$currentMask = this.currentMask) === null || _this$currentMask === void 0 ? void 0 : _this$currentMask.reset();\n this.compiledMasks.forEach(m => m.reset());\n }\n\n /**\n @override\n */\n get value() {\n return this.currentMask ? this.currentMask.value : '';\n }\n set value(value) {\n super.value = value;\n }\n\n /**\n @override\n */\n get unmaskedValue() {\n return this.currentMask ? this.currentMask.unmaskedValue : '';\n }\n set unmaskedValue(unmaskedValue) {\n super.unmaskedValue = unmaskedValue;\n }\n\n /**\n @override\n */\n get typedValue() {\n return this.currentMask ? this.currentMask.typedValue : '';\n }\n\n // probably typedValue should not be used with dynamic\n set typedValue(value) {\n let unmaskedValue = String(value);\n\n // double check it\n if (this.currentMask) {\n this.currentMask.typedValue = value;\n unmaskedValue = this.currentMask.unmaskedValue;\n }\n this.unmaskedValue = unmaskedValue;\n }\n get displayValue() {\n return this.currentMask ? this.currentMask.displayValue : '';\n }\n\n /**\n @override\n */\n get isComplete() {\n var _this$currentMask2;\n return Boolean((_this$currentMask2 = this.currentMask) === null || _this$currentMask2 === void 0 ? void 0 : _this$currentMask2.isComplete);\n }\n\n /**\n @override\n */\n get isFilled() {\n var _this$currentMask3;\n return Boolean((_this$currentMask3 = this.currentMask) === null || _this$currentMask3 === void 0 ? void 0 : _this$currentMask3.isFilled);\n }\n\n /**\n @override\n */\n remove() {\n const details = new ChangeDetails();\n if (this.currentMask) {\n details.aggregate(this.currentMask.remove(...arguments))\n // update with dispatch\n .aggregate(this._applyDispatch());\n }\n return details;\n }\n\n /**\n @override\n */\n get state() {\n var _this$currentMask4;\n return Object.assign({}, super.state, {\n _rawInputValue: this.rawInputValue,\n compiledMasks: this.compiledMasks.map(m => m.state),\n currentMaskRef: this.currentMask,\n currentMask: (_this$currentMask4 = this.currentMask) === null || _this$currentMask4 === void 0 ? void 0 : _this$currentMask4.state\n });\n }\n set state(state) {\n const {\n compiledMasks,\n currentMaskRef,\n currentMask\n } = state,\n maskedState = _objectWithoutPropertiesLoose(state, _excluded);\n this.compiledMasks.forEach((m, mi) => m.state = compiledMasks[mi]);\n if (currentMaskRef != null) {\n this.currentMask = currentMaskRef;\n this.currentMask.state = currentMask;\n }\n super.state = maskedState;\n }\n\n /**\n @override\n */\n extractInput() {\n return this.currentMask ? this.currentMask.extractInput(...arguments) : '';\n }\n\n /**\n @override\n */\n extractTail() {\n return this.currentMask ? this.currentMask.extractTail(...arguments) : super.extractTail(...arguments);\n }\n\n /**\n @override\n */\n doCommit() {\n if (this.currentMask) this.currentMask.doCommit();\n super.doCommit();\n }\n\n /**\n @override\n */\n nearestInputPos() {\n return this.currentMask ? this.currentMask.nearestInputPos(...arguments) : super.nearestInputPos(...arguments);\n }\n get overwrite() {\n return this.currentMask ? this.currentMask.overwrite : super.overwrite;\n }\n set overwrite(overwrite) {\n console.warn('\"overwrite\" option is not available in dynamic mask, use this option in siblings');\n }\n get eager() {\n return this.currentMask ? this.currentMask.eager : super.eager;\n }\n set eager(eager) {\n console.warn('\"eager\" option is not available in dynamic mask, use this option in siblings');\n }\n get skipInvalid() {\n return this.currentMask ? this.currentMask.skipInvalid : super.skipInvalid;\n }\n set skipInvalid(skipInvalid) {\n if (this.isInitialized || skipInvalid !== Masked.DEFAULTS.skipInvalid) {\n console.warn('\"skipInvalid\" option is not available in dynamic mask, use this option in siblings');\n }\n }\n\n /**\n @override\n */\n maskEquals(mask) {\n return Array.isArray(mask) && this.compiledMasks.every((m, mi) => {\n if (!mask[mi]) return;\n const _mask$mi = mask[mi],\n {\n mask: oldMask\n } = _mask$mi,\n restOpts = _objectWithoutPropertiesLoose(_mask$mi, _excluded2);\n return objectIncludes(m, restOpts) && m.maskEquals(oldMask);\n });\n }\n\n /**\n @override\n */\n typedValueEquals(value) {\n var _this$currentMask5;\n return Boolean((_this$currentMask5 = this.currentMask) === null || _this$currentMask5 === void 0 ? void 0 : _this$currentMask5.typedValueEquals(value));\n }\n}\nMaskedDynamic.DEFAULTS = {\n dispatch: (appended, masked, flags, tail) => {\n if (!masked.compiledMasks.length) return;\n const inputValue = masked.rawInputValue;\n\n // simulate input\n const inputs = masked.compiledMasks.map((m, index) => {\n const isCurrent = masked.currentMask === m;\n const startInputPos = isCurrent ? m.value.length : m.nearestInputPos(m.value.length, DIRECTION.FORCE_LEFT);\n if (m.rawInputValue !== inputValue) {\n m.reset();\n m.append(inputValue, {\n raw: true\n });\n } else if (!isCurrent) {\n m.remove(startInputPos);\n }\n m.append(appended, masked.currentMaskFlags(flags));\n m.appendTail(tail);\n return {\n index,\n weight: m.rawInputValue.length,\n totalInputPositions: m.totalInputPositions(0, Math.max(startInputPos, m.nearestInputPos(m.value.length, DIRECTION.FORCE_LEFT)))\n };\n });\n\n // pop masks with longer values first\n inputs.sort((i1, i2) => i2.weight - i1.weight || i2.totalInputPositions - i1.totalInputPositions);\n return masked.compiledMasks[inputs[0].index];\n }\n};\nIMask.MaskedDynamic = MaskedDynamic;\n\nexport { MaskedDynamic as default };\n","import createMask from './factory.js';\nimport IMask from '../core/holder.js';\nimport '../core/utils.js';\nimport '../core/change-details.js';\n\n/** Mask pipe source and destination types */\nconst PIPE_TYPE = {\n MASKED: 'value',\n UNMASKED: 'unmaskedValue',\n TYPED: 'typedValue'\n};\n\n/** Creates new pipe function depending on mask type, source and destination options */\nfunction createPipe(mask) {\n let from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : PIPE_TYPE.MASKED;\n let to = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : PIPE_TYPE.MASKED;\n const masked = createMask(mask);\n return value => masked.runIsolated(m => {\n m[from] = value;\n return m[to];\n });\n}\n\n/** Pipes value through mask depending on mask type, source and destination options */\nfunction pipe(value) {\n for (var _len = arguments.length, pipeArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n pipeArgs[_key - 1] = arguments[_key];\n }\n return createPipe(...pipeArgs)(value);\n}\nIMask.PIPE_TYPE = PIPE_TYPE;\nIMask.createPipe = createPipe;\nIMask.pipe = pipe;\n\nexport { PIPE_TYPE, createPipe, pipe };\n","export { default as InputMask } from './controls/input.js';\nimport IMask from './core/holder.js';\nexport { default } from './core/holder.js';\nexport { default as Masked } from './masked/base.js';\nexport { default as MaskedPattern } from './masked/pattern.js';\nexport { default as MaskedEnum } from './masked/enum.js';\nexport { default as MaskedRange } from './masked/range.js';\nexport { default as MaskedNumber } from './masked/number.js';\nexport { default as MaskedDate } from './masked/date.js';\nexport { default as MaskedRegExp } from './masked/regexp.js';\nexport { default as MaskedFunction } from './masked/function.js';\nexport { default as MaskedDynamic } from './masked/dynamic.js';\nexport { default as createMask } from './masked/factory.js';\nexport { default as MaskElement } from './controls/mask-element.js';\nexport { default as HTMLMaskElement } from './controls/html-mask-element.js';\nexport { default as HTMLContenteditableMaskElement } from './controls/html-contenteditable-mask-element.js';\nexport { PIPE_TYPE, createPipe, pipe } from './masked/pipe.js';\nexport { default as ChangeDetails } from './core/change-details.js';\nimport './_rollupPluginBabelHelpers-6b3bd404.js';\nimport './core/utils.js';\nimport './core/action-details.js';\nimport './core/continuous-tail-details.js';\nimport './masked/pattern/input-definition.js';\nimport './masked/pattern/fixed-definition.js';\nimport './masked/pattern/chunk-tail-details.js';\nimport './masked/pattern/cursor.js';\n\ntry {\n globalThis.IMask = IMask;\n} catch (e) {}\n","(function(){\n\n // Copyright (c) 2005 Tom Wu\n // All Rights Reserved.\n // See \"LICENSE\" for details.\n\n // Basic JavaScript BN library - subset useful for RSA encryption.\n\n // Bits per digit\n var dbits;\n\n // JavaScript engine analysis\n var canary = 0xdeadbeefcafe;\n var j_lm = ((canary&0xffffff)==0xefcafe);\n\n // (public) Constructor\n function BigInteger(a,b,c) {\n if(a != null)\n if(\"number\" == typeof a) this.fromNumber(a,b,c);\n else if(b == null && \"string\" != typeof a) this.fromString(a,256);\n else this.fromString(a,b);\n }\n\n // return new, unset BigInteger\n function nbi() { return new BigInteger(null); }\n\n // am: Compute w_j += (x*this_i), propagate carries,\n // c is initial carry, returns final carry.\n // c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n // We need to select the fastest one that works in this environment.\n\n // am1: use a single mult and divide to get the high bits,\n // max digit bits should be 26 because\n // max internal value = 2*dvalue^2-2*dvalue (< 2^53)\n function am1(i,x,w,j,c,n) {\n while(--n >= 0) {\n var v = x*this[i++]+w[j]+c;\n c = Math.floor(v/0x4000000);\n w[j++] = v&0x3ffffff;\n }\n return c;\n }\n // am2 avoids a big mult-and-extract completely.\n // Max digit bits should be <= 30 because we do bitwise ops\n // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\n function am2(i,x,w,j,c,n) {\n var xl = x&0x7fff, xh = x>>15;\n while(--n >= 0) {\n var l = this[i]&0x7fff;\n var h = this[i++]>>15;\n var m = xh*l+h*xl;\n l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff);\n c = (l>>>30)+(m>>>15)+xh*h+(c>>>30);\n w[j++] = l&0x3fffffff;\n }\n return c;\n }\n // Alternately, set max digit bits to 28 since some\n // browsers slow down when dealing with 32-bit numbers.\n function am3(i,x,w,j,c,n) {\n var xl = x&0x3fff, xh = x>>14;\n while(--n >= 0) {\n var l = this[i]&0x3fff;\n var h = this[i++]>>14;\n var m = xh*l+h*xl;\n l = xl*l+((m&0x3fff)<<14)+w[j]+c;\n c = (l>>28)+(m>>14)+xh*h;\n w[j++] = l&0xfffffff;\n }\n return c;\n }\n var inBrowser = typeof navigator !== \"undefined\";\n if(inBrowser && j_lm && (navigator.appName == \"Microsoft Internet Explorer\")) {\n BigInteger.prototype.am = am2;\n dbits = 30;\n }\n else if(inBrowser && j_lm && (navigator.appName != \"Netscape\")) {\n BigInteger.prototype.am = am1;\n dbits = 26;\n }\n else { // Mozilla/Netscape seems to prefer am3\n BigInteger.prototype.am = am3;\n dbits = 28;\n }\n\n BigInteger.prototype.DB = dbits;\n BigInteger.prototype.DM = ((1<= 0; --i) r[i] = this[i];\n r.t = this.t;\n r.s = this.s;\n }\n\n // (protected) set from integer value x, -DV <= x < DV\n function bnpFromInt(x) {\n this.t = 1;\n this.s = (x<0)?-1:0;\n if(x > 0) this[0] = x;\n else if(x < -1) this[0] = x+this.DV;\n else this.t = 0;\n }\n\n // return bigint initialized to value\n function nbv(i) { var r = nbi(); r.fromInt(i); return r; }\n\n // (protected) set from string and radix\n function bnpFromString(s,b) {\n var k;\n if(b == 16) k = 4;\n else if(b == 8) k = 3;\n else if(b == 256) k = 8; // byte array\n else if(b == 2) k = 1;\n else if(b == 32) k = 5;\n else if(b == 4) k = 2;\n else { this.fromRadix(s,b); return; }\n this.t = 0;\n this.s = 0;\n var i = s.length, mi = false, sh = 0;\n while(--i >= 0) {\n var x = (k==8)?s[i]&0xff:intAt(s,i);\n if(x < 0) {\n if(s.charAt(i) == \"-\") mi = true;\n continue;\n }\n mi = false;\n if(sh == 0)\n this[this.t++] = x;\n else if(sh+k > this.DB) {\n this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<>(this.DB-sh));\n }\n else\n this[this.t-1] |= x<= this.DB) sh -= this.DB;\n }\n if(k == 8 && (s[0]&0x80) != 0) {\n this.s = -1;\n if(sh > 0) this[this.t-1] |= ((1<<(this.DB-sh))-1)< 0 && this[this.t-1] == c) --this.t;\n }\n\n // (public) return string representation in given radix\n function bnToString(b) {\n if(this.s < 0) return \"-\"+this.negate().toString(b);\n var k;\n if(b == 16) k = 4;\n else if(b == 8) k = 3;\n else if(b == 2) k = 1;\n else if(b == 32) k = 5;\n else if(b == 4) k = 2;\n else return this.toRadix(b);\n var km = (1< 0) {\n if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); }\n while(i >= 0) {\n if(p < k) {\n d = (this[i]&((1<>(p+=this.DB-k);\n }\n else {\n d = (this[i]>>(p-=k))&km;\n if(p <= 0) { p += this.DB; --i; }\n }\n if(d > 0) m = true;\n if(m) r += int2char(d);\n }\n }\n return m?r:\"0\";\n }\n\n // (public) -this\n function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; }\n\n // (public) |this|\n function bnAbs() { return (this.s<0)?this.negate():this; }\n\n // (public) return + if this > a, - if this < a, 0 if equal\n function bnCompareTo(a) {\n var r = this.s-a.s;\n if(r != 0) return r;\n var i = this.t;\n r = i-a.t;\n if(r != 0) return (this.s<0)?-r:r;\n while(--i >= 0) if((r=this[i]-a[i]) != 0) return r;\n return 0;\n }\n\n // returns bit length of the integer x\n function nbits(x) {\n var r = 1, t;\n if((t=x>>>16) != 0) { x = t; r += 16; }\n if((t=x>>8) != 0) { x = t; r += 8; }\n if((t=x>>4) != 0) { x = t; r += 4; }\n if((t=x>>2) != 0) { x = t; r += 2; }\n if((t=x>>1) != 0) { x = t; r += 1; }\n return r;\n }\n\n // (public) return the number of bits in \"this\"\n function bnBitLength() {\n if(this.t <= 0) return 0;\n return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM));\n }\n\n // (protected) r = this << n*DB\n function bnpDLShiftTo(n,r) {\n var i;\n for(i = this.t-1; i >= 0; --i) r[i+n] = this[i];\n for(i = n-1; i >= 0; --i) r[i] = 0;\n r.t = this.t+n;\n r.s = this.s;\n }\n\n // (protected) r = this >> n*DB\n function bnpDRShiftTo(n,r) {\n for(var i = n; i < this.t; ++i) r[i-n] = this[i];\n r.t = Math.max(this.t-n,0);\n r.s = this.s;\n }\n\n // (protected) r = this << n\n function bnpLShiftTo(n,r) {\n var bs = n%this.DB;\n var cbs = this.DB-bs;\n var bm = (1<= 0; --i) {\n r[i+ds+1] = (this[i]>>cbs)|c;\n c = (this[i]&bm)<= 0; --i) r[i] = 0;\n r[ds] = c;\n r.t = this.t+ds+1;\n r.s = this.s;\n r.clamp();\n }\n\n // (protected) r = this >> n\n function bnpRShiftTo(n,r) {\n r.s = this.s;\n var ds = Math.floor(n/this.DB);\n if(ds >= this.t) { r.t = 0; return; }\n var bs = n%this.DB;\n var cbs = this.DB-bs;\n var bm = (1<>bs;\n for(var i = ds+1; i < this.t; ++i) {\n r[i-ds-1] |= (this[i]&bm)<>bs;\n }\n if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<>= this.DB;\n }\n if(a.t < this.t) {\n c -= a.s;\n while(i < this.t) {\n c += this[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while(i < a.t) {\n c -= a[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c -= a.s;\n }\n r.s = (c<0)?-1:0;\n if(c < -1) r[i++] = this.DV+c;\n else if(c > 0) r[i++] = c;\n r.t = i;\n r.clamp();\n }\n\n // (protected) r = this * a, r != this,a (HAC 14.12)\n // \"this\" should be the larger one if appropriate.\n function bnpMultiplyTo(a,r) {\n var x = this.abs(), y = a.abs();\n var i = x.t;\n r.t = i+y.t;\n while(--i >= 0) r[i] = 0;\n for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t);\n r.s = 0;\n r.clamp();\n if(this.s != a.s) BigInteger.ZERO.subTo(r,r);\n }\n\n // (protected) r = this^2, r != this (HAC 14.16)\n function bnpSquareTo(r) {\n var x = this.abs();\n var i = r.t = 2*x.t;\n while(--i >= 0) r[i] = 0;\n for(i = 0; i < x.t-1; ++i) {\n var c = x.am(i,x[i],r,2*i,0,1);\n if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) {\n r[i+x.t] -= x.DV;\n r[i+x.t+1] = 1;\n }\n }\n if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1);\n r.s = 0;\n r.clamp();\n }\n\n // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n // r != q, this != m. q or r may be null.\n function bnpDivRemTo(m,q,r) {\n var pm = m.abs();\n if(pm.t <= 0) return;\n var pt = this.abs();\n if(pt.t < pm.t) {\n if(q != null) q.fromInt(0);\n if(r != null) this.copyTo(r);\n return;\n }\n if(r == null) r = nbi();\n var y = nbi(), ts = this.s, ms = m.s;\n var nsh = this.DB-nbits(pm[pm.t-1]); // normalize modulus\n if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); }\n else { pm.copyTo(y); pt.copyTo(r); }\n var ys = y.t;\n var y0 = y[ys-1];\n if(y0 == 0) return;\n var yt = y0*(1<1)?y[ys-2]>>this.F2:0);\n var d1 = this.FV/yt, d2 = (1<= 0) {\n r[r.t++] = 1;\n r.subTo(t,r);\n }\n BigInteger.ONE.dlShiftTo(ys,t);\n t.subTo(y,y); // \"negative\" y so we can replace sub with am later\n while(y.t < ys) y[y.t++] = 0;\n while(--j >= 0) {\n // Estimate quotient digit\n var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);\n if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) { // Try it out\n y.dlShiftTo(j,t);\n r.subTo(t,r);\n while(r[i] < --qd) r.subTo(t,r);\n }\n }\n if(q != null) {\n r.drShiftTo(ys,q);\n if(ts != ms) BigInteger.ZERO.subTo(q,q);\n }\n r.t = ys;\n r.clamp();\n if(nsh > 0) r.rShiftTo(nsh,r); // Denormalize remainder\n if(ts < 0) BigInteger.ZERO.subTo(r,r);\n }\n\n // (public) this mod a\n function bnMod(a) {\n var r = nbi();\n this.abs().divRemTo(a,null,r);\n if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r);\n return r;\n }\n\n // Modular reduction using \"classic\" algorithm\n function Classic(m) { this.m = m; }\n function cConvert(x) {\n if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m);\n else return x;\n }\n function cRevert(x) { return x; }\n function cReduce(x) { x.divRemTo(this.m,null,x); }\n function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n Classic.prototype.convert = cConvert;\n Classic.prototype.revert = cRevert;\n Classic.prototype.reduce = cReduce;\n Classic.prototype.mulTo = cMulTo;\n Classic.prototype.sqrTo = cSqrTo;\n\n // (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n // justification:\n // xy == 1 (mod m)\n // xy = 1+km\n // xy(2-xy) = (1+km)(1-km)\n // x[y(2-xy)] = 1-k^2m^2\n // x[y(2-xy)] == 1 (mod m^2)\n // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n // JS multiply \"overflows\" differently from C/C++, so care is needed here.\n function bnpInvDigit() {\n if(this.t < 1) return 0;\n var x = this[0];\n if((x&1) == 0) return 0;\n var y = x&3; // y == 1/x mod 2^2\n y = (y*(2-(x&0xf)*y))&0xf; // y == 1/x mod 2^4\n y = (y*(2-(x&0xff)*y))&0xff; // y == 1/x mod 2^8\n y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff; // y == 1/x mod 2^16\n // last step - calculate inverse mod DV directly;\n // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n y = (y*(2-x*y%this.DV))%this.DV; // y == 1/x mod 2^dbits\n // we really want the negative inverse, and -DV < y < DV\n return (y>0)?this.DV-y:-y;\n }\n\n // Montgomery reduction\n function Montgomery(m) {\n this.m = m;\n this.mp = m.invDigit();\n this.mpl = this.mp&0x7fff;\n this.mph = this.mp>>15;\n this.um = (1<<(m.DB-15))-1;\n this.mt2 = 2*m.t;\n }\n\n // xR mod m\n function montConvert(x) {\n var r = nbi();\n x.abs().dlShiftTo(this.m.t,r);\n r.divRemTo(this.m,null,r);\n if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r);\n return r;\n }\n\n // x/R mod m\n function montRevert(x) {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n }\n\n // x = x/R mod m (HAC 14.32)\n function montReduce(x) {\n while(x.t <= this.mt2) // pad x so am has enough room later\n x[x.t++] = 0;\n for(var i = 0; i < this.m.t; ++i) {\n // faster way of calculating u0 = x[i]*mp mod DV\n var j = x[i]&0x7fff;\n var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM;\n // use am to combine the multiply-shift-add into one call\n j = i+this.m.t;\n x[j] += this.m.am(0,u0,x,i,0,this.m.t);\n // propagate carry\n while(x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; }\n }\n x.clamp();\n x.drShiftTo(this.m.t,x);\n if(x.compareTo(this.m) >= 0) x.subTo(this.m,x);\n }\n\n // r = \"x^2/R mod m\"; x != r\n function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n // r = \"xy/R mod m\"; x,y != r\n function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n\n Montgomery.prototype.convert = montConvert;\n Montgomery.prototype.revert = montRevert;\n Montgomery.prototype.reduce = montReduce;\n Montgomery.prototype.mulTo = montMulTo;\n Montgomery.prototype.sqrTo = montSqrTo;\n\n // (protected) true iff this is even\n function bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; }\n\n // (protected) this^e, e < 2^32, doing sqr and mul with \"r\" (HAC 14.79)\n function bnpExp(e,z) {\n if(e > 0xffffffff || e < 1) return BigInteger.ONE;\n var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1;\n g.copyTo(r);\n while(--i >= 0) {\n z.sqrTo(r,r2);\n if((e&(1< 0) z.mulTo(r2,g,r);\n else { var t = r; r = r2; r2 = t; }\n }\n return z.revert(r);\n }\n\n // (public) this^e % m, 0 <= e < 2^32\n function bnModPowInt(e,m) {\n var z;\n if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m);\n return this.exp(e,z);\n }\n\n // protected\n BigInteger.prototype.copyTo = bnpCopyTo;\n BigInteger.prototype.fromInt = bnpFromInt;\n BigInteger.prototype.fromString = bnpFromString;\n BigInteger.prototype.clamp = bnpClamp;\n BigInteger.prototype.dlShiftTo = bnpDLShiftTo;\n BigInteger.prototype.drShiftTo = bnpDRShiftTo;\n BigInteger.prototype.lShiftTo = bnpLShiftTo;\n BigInteger.prototype.rShiftTo = bnpRShiftTo;\n BigInteger.prototype.subTo = bnpSubTo;\n BigInteger.prototype.multiplyTo = bnpMultiplyTo;\n BigInteger.prototype.squareTo = bnpSquareTo;\n BigInteger.prototype.divRemTo = bnpDivRemTo;\n BigInteger.prototype.invDigit = bnpInvDigit;\n BigInteger.prototype.isEven = bnpIsEven;\n BigInteger.prototype.exp = bnpExp;\n\n // public\n BigInteger.prototype.toString = bnToString;\n BigInteger.prototype.negate = bnNegate;\n BigInteger.prototype.abs = bnAbs;\n BigInteger.prototype.compareTo = bnCompareTo;\n BigInteger.prototype.bitLength = bnBitLength;\n BigInteger.prototype.mod = bnMod;\n BigInteger.prototype.modPowInt = bnModPowInt;\n\n // \"constants\"\n BigInteger.ZERO = nbv(0);\n BigInteger.ONE = nbv(1);\n\n // Copyright (c) 2005-2009 Tom Wu\n // All Rights Reserved.\n // See \"LICENSE\" for details.\n\n // Extended JavaScript BN functions, required for RSA private ops.\n\n // Version 1.1: new BigInteger(\"0\", 10) returns \"proper\" zero\n // Version 1.2: square() API, isProbablePrime fix\n\n // (public)\n function bnClone() { var r = nbi(); this.copyTo(r); return r; }\n\n // (public) return value as integer\n function bnIntValue() {\n if(this.s < 0) {\n if(this.t == 1) return this[0]-this.DV;\n else if(this.t == 0) return -1;\n }\n else if(this.t == 1) return this[0];\n else if(this.t == 0) return 0;\n // assumes 16 < DB < 32\n return ((this[1]&((1<<(32-this.DB))-1))<>24; }\n\n // (public) return value as short (assumes DB>=16)\n function bnShortValue() { return (this.t==0)?this.s:(this[0]<<16)>>16; }\n\n // (protected) return x s.t. r^x < DV\n function bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); }\n\n // (public) 0 if this == 0, 1 if this > 0\n function bnSigNum() {\n if(this.s < 0) return -1;\n else if(this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0;\n else return 1;\n }\n\n // (protected) convert to radix string\n function bnpToRadix(b) {\n if(b == null) b = 10;\n if(this.signum() == 0 || b < 2 || b > 36) return \"0\";\n var cs = this.chunkSize(b);\n var a = Math.pow(b,cs);\n var d = nbv(a), y = nbi(), z = nbi(), r = \"\";\n this.divRemTo(d,y,z);\n while(y.signum() > 0) {\n r = (a+z.intValue()).toString(b).substr(1) + r;\n y.divRemTo(d,y,z);\n }\n return z.intValue().toString(b) + r;\n }\n\n // (protected) convert from radix string\n function bnpFromRadix(s,b) {\n this.fromInt(0);\n if(b == null) b = 10;\n var cs = this.chunkSize(b);\n var d = Math.pow(b,cs), mi = false, j = 0, w = 0;\n for(var i = 0; i < s.length; ++i) {\n var x = intAt(s,i);\n if(x < 0) {\n if(s.charAt(i) == \"-\" && this.signum() == 0) mi = true;\n continue;\n }\n w = b*w+x;\n if(++j >= cs) {\n this.dMultiply(d);\n this.dAddOffset(w,0);\n j = 0;\n w = 0;\n }\n }\n if(j > 0) {\n this.dMultiply(Math.pow(b,j));\n this.dAddOffset(w,0);\n }\n if(mi) BigInteger.ZERO.subTo(this,this);\n }\n\n // (protected) alternate constructor\n function bnpFromNumber(a,b,c) {\n if(\"number\" == typeof b) {\n // new BigInteger(int,int,RNG)\n if(a < 2) this.fromInt(1);\n else {\n this.fromNumber(a,c);\n if(!this.testBit(a-1)) // force MSB set\n this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this);\n if(this.isEven()) this.dAddOffset(1,0); // force odd\n while(!this.isProbablePrime(b)) {\n this.dAddOffset(2,0);\n if(this.bitLength() > a) this.subTo(BigInteger.ONE.shiftLeft(a-1),this);\n }\n }\n }\n else {\n // new BigInteger(int,RNG)\n var x = new Array(), t = a&7;\n x.length = (a>>3)+1;\n b.nextBytes(x);\n if(t > 0) x[0] &= ((1< 0) {\n if(p < this.DB && (d = this[i]>>p) != (this.s&this.DM)>>p)\n r[k++] = d|(this.s<<(this.DB-p));\n while(i >= 0) {\n if(p < 8) {\n d = (this[i]&((1<>(p+=this.DB-8);\n }\n else {\n d = (this[i]>>(p-=8))&0xff;\n if(p <= 0) { p += this.DB; --i; }\n }\n if((d&0x80) != 0) d |= -256;\n if(k == 0 && (this.s&0x80) != (d&0x80)) ++k;\n if(k > 0 || d != this.s) r[k++] = d;\n }\n }\n return r;\n }\n\n function bnEquals(a) { return(this.compareTo(a)==0); }\n function bnMin(a) { return(this.compareTo(a)<0)?this:a; }\n function bnMax(a) { return(this.compareTo(a)>0)?this:a; }\n\n // (protected) r = this op a (bitwise)\n function bnpBitwiseTo(a,op,r) {\n var i, f, m = Math.min(a.t,this.t);\n for(i = 0; i < m; ++i) r[i] = op(this[i],a[i]);\n if(a.t < this.t) {\n f = a.s&this.DM;\n for(i = m; i < this.t; ++i) r[i] = op(this[i],f);\n r.t = this.t;\n }\n else {\n f = this.s&this.DM;\n for(i = m; i < a.t; ++i) r[i] = op(f,a[i]);\n r.t = a.t;\n }\n r.s = op(this.s,a.s);\n r.clamp();\n }\n\n // (public) this & a\n function op_and(x,y) { return x&y; }\n function bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; }\n\n // (public) this | a\n function op_or(x,y) { return x|y; }\n function bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; }\n\n // (public) this ^ a\n function op_xor(x,y) { return x^y; }\n function bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; }\n\n // (public) this & ~a\n function op_andnot(x,y) { return x&~y; }\n function bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; }\n\n // (public) ~this\n function bnNot() {\n var r = nbi();\n for(var i = 0; i < this.t; ++i) r[i] = this.DM&~this[i];\n r.t = this.t;\n r.s = ~this.s;\n return r;\n }\n\n // (public) this << n\n function bnShiftLeft(n) {\n var r = nbi();\n if(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r);\n return r;\n }\n\n // (public) this >> n\n function bnShiftRight(n) {\n var r = nbi();\n if(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r);\n return r;\n }\n\n // return index of lowest 1-bit in x, x < 2^31\n function lbit(x) {\n if(x == 0) return -1;\n var r = 0;\n if((x&0xffff) == 0) { x >>= 16; r += 16; }\n if((x&0xff) == 0) { x >>= 8; r += 8; }\n if((x&0xf) == 0) { x >>= 4; r += 4; }\n if((x&3) == 0) { x >>= 2; r += 2; }\n if((x&1) == 0) ++r;\n return r;\n }\n\n // (public) returns index of lowest 1-bit (or -1 if none)\n function bnGetLowestSetBit() {\n for(var i = 0; i < this.t; ++i)\n if(this[i] != 0) return i*this.DB+lbit(this[i]);\n if(this.s < 0) return this.t*this.DB;\n return -1;\n }\n\n // return number of 1 bits in x\n function cbit(x) {\n var r = 0;\n while(x != 0) { x &= x-1; ++r; }\n return r;\n }\n\n // (public) return number of set bits\n function bnBitCount() {\n var r = 0, x = this.s&this.DM;\n for(var i = 0; i < this.t; ++i) r += cbit(this[i]^x);\n return r;\n }\n\n // (public) true iff nth bit is set\n function bnTestBit(n) {\n var j = Math.floor(n/this.DB);\n if(j >= this.t) return(this.s!=0);\n return((this[j]&(1<<(n%this.DB)))!=0);\n }\n\n // (protected) this op (1<>= this.DB;\n }\n if(a.t < this.t) {\n c += a.s;\n while(i < this.t) {\n c += this[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while(i < a.t) {\n c += a[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += a.s;\n }\n r.s = (c<0)?-1:0;\n if(c > 0) r[i++] = c;\n else if(c < -1) r[i++] = this.DV+c;\n r.t = i;\n r.clamp();\n }\n\n // (public) this + a\n function bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; }\n\n // (public) this - a\n function bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; }\n\n // (public) this * a\n function bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; }\n\n // (public) this^2\n function bnSquare() { var r = nbi(); this.squareTo(r); return r; }\n\n // (public) this / a\n function bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; }\n\n // (public) this % a\n function bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; }\n\n // (public) [this/a,this%a]\n function bnDivideAndRemainder(a) {\n var q = nbi(), r = nbi();\n this.divRemTo(a,q,r);\n return new Array(q,r);\n }\n\n // (protected) this *= n, this >= 0, 1 < n < DV\n function bnpDMultiply(n) {\n this[this.t] = this.am(0,n-1,this,0,0,this.t);\n ++this.t;\n this.clamp();\n }\n\n // (protected) this += n << w words, this >= 0\n function bnpDAddOffset(n,w) {\n if(n == 0) return;\n while(this.t <= w) this[this.t++] = 0;\n this[w] += n;\n while(this[w] >= this.DV) {\n this[w] -= this.DV;\n if(++w >= this.t) this[this.t++] = 0;\n ++this[w];\n }\n }\n\n // A \"null\" reducer\n function NullExp() {}\n function nNop(x) { return x; }\n function nMulTo(x,y,r) { x.multiplyTo(y,r); }\n function nSqrTo(x,r) { x.squareTo(r); }\n\n NullExp.prototype.convert = nNop;\n NullExp.prototype.revert = nNop;\n NullExp.prototype.mulTo = nMulTo;\n NullExp.prototype.sqrTo = nSqrTo;\n\n // (public) this^e\n function bnPow(e) { return this.exp(e,new NullExp()); }\n\n // (protected) r = lower n words of \"this * a\", a.t <= n\n // \"this\" should be the larger one if appropriate.\n function bnpMultiplyLowerTo(a,n,r) {\n var i = Math.min(this.t+a.t,n);\n r.s = 0; // assumes a,this >= 0\n r.t = i;\n while(i > 0) r[--i] = 0;\n var j;\n for(j = r.t-this.t; i < j; ++i) r[i+this.t] = this.am(0,a[i],r,i,0,this.t);\n for(j = Math.min(a.t,n); i < j; ++i) this.am(0,a[i],r,i,0,n-i);\n r.clamp();\n }\n\n // (protected) r = \"this * a\" without lower n words, n > 0\n // \"this\" should be the larger one if appropriate.\n function bnpMultiplyUpperTo(a,n,r) {\n --n;\n var i = r.t = this.t+a.t-n;\n r.s = 0; // assumes a,this >= 0\n while(--i >= 0) r[i] = 0;\n for(i = Math.max(n-this.t,0); i < a.t; ++i)\n r[this.t+i-n] = this.am(n-i,a[i],r,0,0,this.t+i-n);\n r.clamp();\n r.drShiftTo(1,r);\n }\n\n // Barrett modular reduction\n function Barrett(m) {\n // setup Barrett\n this.r2 = nbi();\n this.q3 = nbi();\n BigInteger.ONE.dlShiftTo(2*m.t,this.r2);\n this.mu = this.r2.divide(m);\n this.m = m;\n }\n\n function barrettConvert(x) {\n if(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m);\n else if(x.compareTo(this.m) < 0) return x;\n else { var r = nbi(); x.copyTo(r); this.reduce(r); return r; }\n }\n\n function barrettRevert(x) { return x; }\n\n // x = x mod m (HAC 14.42)\n function barrettReduce(x) {\n x.drShiftTo(this.m.t-1,this.r2);\n if(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); }\n this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);\n this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);\n while(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1);\n x.subTo(this.r2,x);\n while(x.compareTo(this.m) >= 0) x.subTo(this.m,x);\n }\n\n // r = x^2 mod m; x != r\n function barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n // r = x*y mod m; x,y != r\n function barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n\n Barrett.prototype.convert = barrettConvert;\n Barrett.prototype.revert = barrettRevert;\n Barrett.prototype.reduce = barrettReduce;\n Barrett.prototype.mulTo = barrettMulTo;\n Barrett.prototype.sqrTo = barrettSqrTo;\n\n // (public) this^e % m (HAC 14.85)\n function bnModPow(e,m) {\n var i = e.bitLength(), k, r = nbv(1), z;\n if(i <= 0) return r;\n else if(i < 18) k = 1;\n else if(i < 48) k = 3;\n else if(i < 144) k = 4;\n else if(i < 768) k = 5;\n else k = 6;\n if(i < 8)\n z = new Classic(m);\n else if(m.isEven())\n z = new Barrett(m);\n else\n z = new Montgomery(m);\n\n // precomputation\n var g = new Array(), n = 3, k1 = k-1, km = (1< 1) {\n var g2 = nbi();\n z.sqrTo(g[1],g2);\n while(n <= km) {\n g[n] = nbi();\n z.mulTo(g2,g[n-2],g[n]);\n n += 2;\n }\n }\n\n var j = e.t-1, w, is1 = true, r2 = nbi(), t;\n i = nbits(e[j])-1;\n while(j >= 0) {\n if(i >= k1) w = (e[j]>>(i-k1))&km;\n else {\n w = (e[j]&((1<<(i+1))-1))<<(k1-i);\n if(j > 0) w |= e[j-1]>>(this.DB+i-k1);\n }\n\n n = k;\n while((w&1) == 0) { w >>= 1; --n; }\n if((i -= n) < 0) { i += this.DB; --j; }\n if(is1) { // ret == 1, don't bother squaring or multiplying it\n g[w].copyTo(r);\n is1 = false;\n }\n else {\n while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; }\n if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; }\n z.mulTo(r2,g[w],r);\n }\n\n while(j >= 0 && (e[j]&(1< 0) {\n x.rShiftTo(g,x);\n y.rShiftTo(g,y);\n }\n while(x.signum() > 0) {\n if((i = x.getLowestSetBit()) > 0) x.rShiftTo(i,x);\n if((i = y.getLowestSetBit()) > 0) y.rShiftTo(i,y);\n if(x.compareTo(y) >= 0) {\n x.subTo(y,x);\n x.rShiftTo(1,x);\n }\n else {\n y.subTo(x,y);\n y.rShiftTo(1,y);\n }\n }\n if(g > 0) y.lShiftTo(g,y);\n return y;\n }\n\n // (protected) this % n, n < 2^26\n function bnpModInt(n) {\n if(n <= 0) return 0;\n var d = this.DV%n, r = (this.s<0)?n-1:0;\n if(this.t > 0)\n if(d == 0) r = this[0]%n;\n else for(var i = this.t-1; i >= 0; --i) r = (d*r+this[i])%n;\n return r;\n }\n\n // (public) 1/this % m (HAC 14.61)\n function bnModInverse(m) {\n var ac = m.isEven();\n if((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO;\n var u = m.clone(), v = this.clone();\n var a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1);\n while(u.signum() != 0) {\n while(u.isEven()) {\n u.rShiftTo(1,u);\n if(ac) {\n if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); }\n a.rShiftTo(1,a);\n }\n else if(!b.isEven()) b.subTo(m,b);\n b.rShiftTo(1,b);\n }\n while(v.isEven()) {\n v.rShiftTo(1,v);\n if(ac) {\n if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); }\n c.rShiftTo(1,c);\n }\n else if(!d.isEven()) d.subTo(m,d);\n d.rShiftTo(1,d);\n }\n if(u.compareTo(v) >= 0) {\n u.subTo(v,u);\n if(ac) a.subTo(c,a);\n b.subTo(d,b);\n }\n else {\n v.subTo(u,v);\n if(ac) c.subTo(a,c);\n d.subTo(b,d);\n }\n }\n if(v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO;\n if(d.compareTo(m) >= 0) return d.subtract(m);\n if(d.signum() < 0) d.addTo(m,d); else return d;\n if(d.signum() < 0) return d.add(m); else return d;\n }\n\n var lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997];\n var lplim = (1<<26)/lowprimes[lowprimes.length-1];\n\n // (public) test primality with certainty >= 1-.5^t\n function bnIsProbablePrime(t) {\n var i, x = this.abs();\n if(x.t == 1 && x[0] <= lowprimes[lowprimes.length-1]) {\n for(i = 0; i < lowprimes.length; ++i)\n if(x[0] == lowprimes[i]) return true;\n return false;\n }\n if(x.isEven()) return false;\n i = 1;\n while(i < lowprimes.length) {\n var m = lowprimes[i], j = i+1;\n while(j < lowprimes.length && m < lplim) m *= lowprimes[j++];\n m = x.modInt(m);\n while(i < j) if(m%lowprimes[i++] == 0) return false;\n }\n return x.millerRabin(t);\n }\n\n // (protected) true if probably prime (HAC 4.24, Miller-Rabin)\n function bnpMillerRabin(t) {\n var n1 = this.subtract(BigInteger.ONE);\n var k = n1.getLowestSetBit();\n if(k <= 0) return false;\n var r = n1.shiftRight(k);\n t = (t+1)>>1;\n if(t > lowprimes.length) t = lowprimes.length;\n var a = nbi();\n for(var i = 0; i < t; ++i) {\n //Pick bases at random, instead of starting at 2\n a.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]);\n var y = a.modPow(r,this);\n if(y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {\n var j = 1;\n while(j++ < k && y.compareTo(n1) != 0) {\n y = y.modPowInt(2,this);\n if(y.compareTo(BigInteger.ONE) == 0) return false;\n }\n if(y.compareTo(n1) != 0) return false;\n }\n }\n return true;\n }\n\n // protected\n BigInteger.prototype.chunkSize = bnpChunkSize;\n BigInteger.prototype.toRadix = bnpToRadix;\n BigInteger.prototype.fromRadix = bnpFromRadix;\n BigInteger.prototype.fromNumber = bnpFromNumber;\n BigInteger.prototype.bitwiseTo = bnpBitwiseTo;\n BigInteger.prototype.changeBit = bnpChangeBit;\n BigInteger.prototype.addTo = bnpAddTo;\n BigInteger.prototype.dMultiply = bnpDMultiply;\n BigInteger.prototype.dAddOffset = bnpDAddOffset;\n BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;\n BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;\n BigInteger.prototype.modInt = bnpModInt;\n BigInteger.prototype.millerRabin = bnpMillerRabin;\n\n // public\n BigInteger.prototype.clone = bnClone;\n BigInteger.prototype.intValue = bnIntValue;\n BigInteger.prototype.byteValue = bnByteValue;\n BigInteger.prototype.shortValue = bnShortValue;\n BigInteger.prototype.signum = bnSigNum;\n BigInteger.prototype.toByteArray = bnToByteArray;\n BigInteger.prototype.equals = bnEquals;\n BigInteger.prototype.min = bnMin;\n BigInteger.prototype.max = bnMax;\n BigInteger.prototype.and = bnAnd;\n BigInteger.prototype.or = bnOr;\n BigInteger.prototype.xor = bnXor;\n BigInteger.prototype.andNot = bnAndNot;\n BigInteger.prototype.not = bnNot;\n BigInteger.prototype.shiftLeft = bnShiftLeft;\n BigInteger.prototype.shiftRight = bnShiftRight;\n BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;\n BigInteger.prototype.bitCount = bnBitCount;\n BigInteger.prototype.testBit = bnTestBit;\n BigInteger.prototype.setBit = bnSetBit;\n BigInteger.prototype.clearBit = bnClearBit;\n BigInteger.prototype.flipBit = bnFlipBit;\n BigInteger.prototype.add = bnAdd;\n BigInteger.prototype.subtract = bnSubtract;\n BigInteger.prototype.multiply = bnMultiply;\n BigInteger.prototype.divide = bnDivide;\n BigInteger.prototype.remainder = bnRemainder;\n BigInteger.prototype.divideAndRemainder = bnDivideAndRemainder;\n BigInteger.prototype.modPow = bnModPow;\n BigInteger.prototype.modInverse = bnModInverse;\n BigInteger.prototype.pow = bnPow;\n BigInteger.prototype.gcd = bnGCD;\n BigInteger.prototype.isProbablePrime = bnIsProbablePrime;\n\n // JSBN-specific extension\n BigInteger.prototype.square = bnSquare;\n\n // Expose the Barrett function\n BigInteger.prototype.Barrett = Barrett\n\n // BigInteger interfaces not implemented in jsbn:\n\n // BigInteger(int signum, byte[] magnitude)\n // double doubleValue()\n // float floatValue()\n // int hashCode()\n // long longValue()\n // static BigInteger valueOf(long val)\n\n // Random number generator - requires a PRNG backend, e.g. prng4.js\n\n // For best results, put code like\n // \n // in your main HTML document.\n\n var rng_state;\n var rng_pool;\n var rng_pptr;\n\n // Mix in a 32-bit integer into the pool\n function rng_seed_int(x) {\n rng_pool[rng_pptr++] ^= x & 255;\n rng_pool[rng_pptr++] ^= (x >> 8) & 255;\n rng_pool[rng_pptr++] ^= (x >> 16) & 255;\n rng_pool[rng_pptr++] ^= (x >> 24) & 255;\n if(rng_pptr >= rng_psize) rng_pptr -= rng_psize;\n }\n\n // Mix in the current time (w/milliseconds) into the pool\n function rng_seed_time() {\n rng_seed_int(new Date().getTime());\n }\n\n // Initialize the pool with junk if needed.\n if(rng_pool == null) {\n rng_pool = new Array();\n rng_pptr = 0;\n var t;\n if(typeof window !== \"undefined\" && window.crypto) {\n if (window.crypto.getRandomValues) {\n // Use webcrypto if available\n var ua = new Uint8Array(32);\n window.crypto.getRandomValues(ua);\n for(t = 0; t < 32; ++t)\n rng_pool[rng_pptr++] = ua[t];\n }\n else if(navigator.appName == \"Netscape\" && navigator.appVersion < \"5\") {\n // Extract entropy (256 bits) from NS4 RNG if available\n var z = window.crypto.random(32);\n for(t = 0; t < z.length; ++t)\n rng_pool[rng_pptr++] = z.charCodeAt(t) & 255;\n }\n }\n while(rng_pptr < rng_psize) { // extract some randomness from Math.random()\n t = Math.floor(65536 * Math.random());\n rng_pool[rng_pptr++] = t >>> 8;\n rng_pool[rng_pptr++] = t & 255;\n }\n rng_pptr = 0;\n rng_seed_time();\n //rng_seed_int(window.screenX);\n //rng_seed_int(window.screenY);\n }\n\n function rng_get_byte() {\n if(rng_state == null) {\n rng_seed_time();\n rng_state = prng_newstate();\n rng_state.init(rng_pool);\n for(rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr)\n rng_pool[rng_pptr] = 0;\n rng_pptr = 0;\n //rng_pool = null;\n }\n // TODO: allow reseeding after first request\n return rng_state.next();\n }\n\n function rng_get_bytes(ba) {\n var i;\n for(i = 0; i < ba.length; ++i) ba[i] = rng_get_byte();\n }\n\n function SecureRandom() {}\n\n SecureRandom.prototype.nextBytes = rng_get_bytes;\n\n // prng4.js - uses Arcfour as a PRNG\n\n function Arcfour() {\n this.i = 0;\n this.j = 0;\n this.S = new Array();\n }\n\n // Initialize arcfour context from key, an array of ints, each from [0..255]\n function ARC4init(key) {\n var i, j, t;\n for(i = 0; i < 256; ++i)\n this.S[i] = i;\n j = 0;\n for(i = 0; i < 256; ++i) {\n j = (j + this.S[i] + key[i % key.length]) & 255;\n t = this.S[i];\n this.S[i] = this.S[j];\n this.S[j] = t;\n }\n this.i = 0;\n this.j = 0;\n }\n\n function ARC4next() {\n var t;\n this.i = (this.i + 1) & 255;\n this.j = (this.j + this.S[this.i]) & 255;\n t = this.S[this.i];\n this.S[this.i] = this.S[this.j];\n this.S[this.j] = t;\n return this.S[(t + this.S[this.i]) & 255];\n }\n\n Arcfour.prototype.init = ARC4init;\n Arcfour.prototype.next = ARC4next;\n\n // Plug in your RNG constructor here\n function prng_newstate() {\n return new Arcfour();\n }\n\n // Pool size must be a multiple of 4 and greater than 32.\n // An array of bytes the size of the pool will be passed to init()\n var rng_psize = 256;\n\n if (typeof exports !== 'undefined') {\n exports = module.exports = {\n default: BigInteger,\n BigInteger: BigInteger,\n SecureRandom: SecureRandom,\n };\n } else {\n this.jsbn = {\n BigInteger: BigInteger,\n SecureRandom: SecureRandom\n };\n }\n\n}).call(this);\n","\"use strict\";\n// -\n// Created by Ivan Sanz (@isc30)\n// Copyright © 2017 Ivan Sanz Carasa. All rights reserved.\n// -\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Enumerables_1 = require(\"./Enumerables\");\nvar Comparers_1 = require(\"./Comparers\");\n// endregion\n// region EnumerableCollection\nvar EnumerableCollection = /** @class */ (function () {\n function EnumerableCollection() {\n }\n EnumerableCollection.prototype.toList = function () {\n return new List(this.toArray());\n };\n EnumerableCollection.prototype.toDictionary = function (keySelector, valueSelector) {\n return Dictionary.fromArray(this.toArray(), keySelector, valueSelector);\n };\n EnumerableCollection.prototype.reverse = function () {\n return new Enumerables_1.ReverseEnumerable(this.asEnumerable());\n };\n EnumerableCollection.prototype.concat = function (other) {\n var others = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n others[_i - 1] = arguments[_i];\n }\n return (_a = this.asEnumerable()).concat.apply(_a, [other].concat(others));\n var _a;\n };\n EnumerableCollection.prototype.contains = function (element) {\n return this.any(function (e) { return e === element; });\n };\n EnumerableCollection.prototype.where = function (predicate) {\n return new Enumerables_1.ConditionalEnumerable(this.asEnumerable(), predicate);\n };\n EnumerableCollection.prototype.select = function (selector) {\n return new Enumerables_1.TransformEnumerable(this.asEnumerable(), selector);\n };\n EnumerableCollection.prototype.selectMany = function (selector) {\n var selectToEnumerable = function (e) {\n var ie = selector(e);\n return ie instanceof Array\n ? new Enumerables_1.ArrayEnumerable(ie)\n : ie.asEnumerable();\n };\n return this\n .select(selectToEnumerable).toArray()\n .reduce(function (p, c) { return new Enumerables_1.ConcatEnumerable(p, c); }, Enumerables_1.Enumerable.empty());\n };\n EnumerableCollection.prototype.elementAt = function (index) {\n var element = this.elementAtOrDefault(index);\n if (element === undefined) {\n throw new Error(\"Out of bounds\");\n }\n return element;\n };\n EnumerableCollection.prototype.except = function (other) {\n return this.asEnumerable().except(other);\n };\n EnumerableCollection.prototype.first = function (predicate) {\n var element;\n if (predicate !== undefined) {\n element = this.firstOrDefault(predicate);\n }\n else {\n element = this.firstOrDefault();\n }\n if (element === undefined) {\n throw new Error(\"Sequence contains no elements\");\n }\n return element;\n };\n EnumerableCollection.prototype.groupBy = function (keySelector, valueSelector) {\n var array = this.toArray();\n var dictionary = new Dictionary();\n for (var i = 0; i < array.length; ++i) {\n var key = keySelector(array[i]);\n var value = valueSelector !== undefined\n ? valueSelector(array[i])\n : array[i];\n if (!dictionary.containsKey(key)) {\n dictionary.set(key, new List());\n }\n dictionary.get(key).push(value);\n }\n return dictionary.asEnumerable();\n };\n EnumerableCollection.prototype.last = function (predicate) {\n var element;\n if (predicate !== undefined) {\n element = this.lastOrDefault(predicate);\n }\n else {\n element = this.lastOrDefault();\n }\n if (element === undefined) {\n throw new Error(\"Sequence contains no elements\");\n }\n return element;\n };\n EnumerableCollection.prototype.single = function (predicate) {\n var element;\n if (predicate !== undefined) {\n element = this.singleOrDefault(predicate);\n }\n else {\n element = this.singleOrDefault();\n }\n if (element === undefined) {\n throw new Error(\"Sequence contains no elements\");\n }\n return element;\n };\n EnumerableCollection.prototype.singleOrDefault = function (predicate) {\n if (predicate !== undefined) {\n return this.asEnumerable().singleOrDefault(predicate);\n }\n return this.asEnumerable().singleOrDefault();\n };\n EnumerableCollection.prototype.skipWhile = function (predicate) {\n return this.asEnumerable().skipWhile(predicate);\n };\n EnumerableCollection.prototype.takeWhile = function (predicate) {\n return this.asEnumerable().takeWhile(predicate);\n };\n EnumerableCollection.prototype.sequenceEqual = function (other, comparer) {\n if (comparer !== undefined) {\n return this.asEnumerable().sequenceEqual(other, comparer);\n }\n return this.asEnumerable().sequenceEqual(other);\n };\n EnumerableCollection.prototype.distinct = function (keySelector) {\n return new Enumerables_1.UniqueEnumerable(this.asEnumerable(), keySelector);\n };\n EnumerableCollection.prototype.min = function (selector) {\n if (selector !== undefined) {\n // Don't copy iterators\n return new Enumerables_1.TransformEnumerable(this.asEnumerable(), selector).min();\n }\n return this.aggregate(function (previous, current) {\n return (previous !== undefined && previous < current)\n ? previous\n : current;\n });\n };\n EnumerableCollection.prototype.orderBy = function (keySelector, comparer) {\n return new Enumerables_1.OrderedEnumerable(this.asEnumerable(), Comparers_1.createComparer(keySelector, true, comparer));\n };\n EnumerableCollection.prototype.orderByDescending = function (keySelector) {\n return new Enumerables_1.OrderedEnumerable(this.asEnumerable(), Comparers_1.createComparer(keySelector, false, undefined));\n };\n EnumerableCollection.prototype.max = function (selector) {\n if (selector !== undefined) {\n // Don't copy iterators\n return new Enumerables_1.TransformEnumerable(this.asEnumerable(), selector).max();\n }\n return this.aggregate(function (previous, current) {\n return (previous !== undefined && previous > current)\n ? previous\n : current;\n });\n };\n EnumerableCollection.prototype.sum = function (selector) {\n return this.aggregate(function (previous, current) { return previous + selector(current); }, 0);\n };\n EnumerableCollection.prototype.skip = function (amount) {\n return new Enumerables_1.RangeEnumerable(this.asEnumerable(), amount, undefined);\n };\n EnumerableCollection.prototype.take = function (amount) {\n return new Enumerables_1.RangeEnumerable(this.asEnumerable(), undefined, amount);\n };\n EnumerableCollection.prototype.union = function (other) {\n return new Enumerables_1.UniqueEnumerable(this.concat(other));\n };\n EnumerableCollection.prototype.aggregate = function (aggregator, initialValue) {\n if (initialValue !== undefined) {\n return this.asEnumerable().aggregate(aggregator, initialValue);\n }\n return this.asEnumerable().aggregate(aggregator);\n };\n EnumerableCollection.prototype.any = function (predicate) {\n if (predicate !== undefined) {\n return this.asEnumerable().any(predicate);\n }\n return this.asEnumerable().any();\n };\n EnumerableCollection.prototype.all = function (predicate) {\n return this.asEnumerable().all(predicate);\n };\n EnumerableCollection.prototype.average = function (selector) {\n return this.asEnumerable().average(selector);\n };\n EnumerableCollection.prototype.count = function (predicate) {\n if (predicate !== undefined) {\n return this.asEnumerable().count(predicate);\n }\n return this.asEnumerable().count();\n };\n EnumerableCollection.prototype.elementAtOrDefault = function (index) {\n return this.asEnumerable().elementAtOrDefault(index);\n };\n EnumerableCollection.prototype.firstOrDefault = function (predicate) {\n if (predicate !== undefined) {\n return this.asEnumerable().firstOrDefault(predicate);\n }\n return this.asEnumerable().firstOrDefault();\n };\n EnumerableCollection.prototype.lastOrDefault = function (predicate) {\n if (predicate !== undefined) {\n return this.asEnumerable().lastOrDefault(predicate);\n }\n return this.asEnumerable().lastOrDefault();\n };\n EnumerableCollection.prototype.forEach = function (action) {\n return this.asEnumerable().forEach(action);\n };\n EnumerableCollection.prototype.defaultIfEmpty = function (defaultValue) {\n if (defaultValue !== undefined) {\n return this.asEnumerable().defaultIfEmpty(defaultValue);\n }\n return this.asEnumerable().defaultIfEmpty();\n };\n EnumerableCollection.prototype.zip = function (other, selector) {\n return this.asEnumerable().zip(other, selector);\n };\n return EnumerableCollection;\n}());\nexports.EnumerableCollection = EnumerableCollection;\n// endregion\n// region ArrayQueryable\nvar ArrayQueryable = /** @class */ (function (_super) {\n __extends(ArrayQueryable, _super);\n function ArrayQueryable(elements) {\n if (elements === void 0) { elements = []; }\n var _this = _super.call(this) || this;\n _this.source = elements;\n return _this;\n }\n ArrayQueryable.prototype.asArray = function () {\n return this.source;\n };\n ArrayQueryable.prototype.toArray = function () {\n return [].concat(this.source);\n };\n ArrayQueryable.prototype.toList = function () {\n return new List(this.toArray());\n };\n ArrayQueryable.prototype.asEnumerable = function () {\n return new Enumerables_1.ArrayEnumerable(this.source);\n };\n ArrayQueryable.prototype.aggregate = function (aggregator, initialValue) {\n if (initialValue !== undefined) {\n return this.source.reduce(aggregator, initialValue);\n }\n return this.source.reduce(aggregator);\n };\n ArrayQueryable.prototype.any = function (predicate) {\n if (predicate !== undefined) {\n return this.source.some(predicate);\n }\n return this.source.length > 0;\n };\n ArrayQueryable.prototype.all = function (predicate) {\n return this.source.every(predicate);\n };\n ArrayQueryable.prototype.average = function (selector) {\n if (this.count() === 0) {\n throw new Error(\"Sequence contains no elements\");\n }\n var sum = 0;\n for (var i = 0, end = this.source.length; i < end; ++i) {\n sum += selector(this.source[i]);\n }\n return sum / this.source.length;\n };\n ArrayQueryable.prototype.count = function (predicate) {\n if (predicate !== undefined) {\n return this.source.filter(predicate).length;\n }\n return this.source.length;\n };\n ArrayQueryable.prototype.elementAtOrDefault = function (index) {\n if (index < 0) {\n throw new Error(\"Negative index is forbiden\");\n }\n return this.source[index];\n };\n ArrayQueryable.prototype.firstOrDefault = function (predicate) {\n if (predicate !== undefined) {\n return this.source.filter(predicate)[0];\n }\n return this.source[0];\n };\n ArrayQueryable.prototype.groupBy = function (keySelector, valueSelector) {\n var array = this.asArray();\n var dictionary = new Dictionary();\n for (var i = 0; i < array.length; ++i) {\n var key = keySelector(array[i]);\n var value = valueSelector !== undefined\n ? valueSelector(array[i])\n : array[i];\n if (!dictionary.containsKey(key)) {\n dictionary.set(key, new List());\n }\n dictionary.get(key).push(value);\n }\n return dictionary.asEnumerable();\n };\n ArrayQueryable.prototype.lastOrDefault = function (predicate) {\n if (predicate !== undefined) {\n var records = this.source.filter(predicate);\n return records[records.length - 1];\n }\n return this.source[this.source.length - 1];\n };\n ArrayQueryable.prototype.forEach = function (action) {\n for (var i = 0, end = this.source.length; i < end; ++i) {\n action(this.source[i], i);\n }\n };\n ArrayQueryable.prototype.sequenceEqual = function (other, comparer) {\n if (comparer === void 0) { comparer = Comparers_1.strictEqualityComparer(); }\n if (other instanceof ArrayQueryable\n || other instanceof Array) {\n var thisArray = this.asArray();\n var otherArray = other instanceof ArrayQueryable\n ? other.asArray()\n : other;\n if (thisArray.length != otherArray.length) {\n return false;\n }\n for (var i = 0; i < thisArray.length; ++i) {\n if (!comparer(thisArray[i], otherArray[i])) {\n return false;\n }\n }\n return true;\n }\n return this.asEnumerable().sequenceEqual(other, comparer);\n };\n return ArrayQueryable;\n}(EnumerableCollection));\nexports.ArrayQueryable = ArrayQueryable;\nvar List = /** @class */ (function (_super) {\n __extends(List, _super);\n function List() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n List.prototype.copy = function () {\n return new List(this.toArray());\n };\n List.prototype.asReadOnly = function () {\n return this;\n };\n List.prototype.clear = function () {\n this.source = [];\n };\n List.prototype.remove = function (element) {\n var newSource = [];\n for (var i = 0, end = this.source.length; i < end; ++i) {\n if (this.source[i] !== element) {\n newSource.push(this.source[i]);\n }\n }\n this.source = newSource;\n };\n List.prototype.removeAt = function (index) {\n if (index < 0 || this.source[index] === undefined) {\n throw new Error(\"Out of bounds\");\n }\n return this.source.splice(index, 1)[0];\n };\n List.prototype.get = function (index) {\n return this.source[index];\n };\n List.prototype.push = function (element) {\n return this.source.push(element);\n };\n List.prototype.pushRange = function (elements) {\n if (!(elements instanceof Array)) {\n elements = elements.toArray();\n }\n return this.source.push.apply(this.source, elements);\n };\n List.prototype.pushFront = function (element) {\n return this.source.unshift(element);\n };\n List.prototype.pop = function () {\n return this.source.pop();\n };\n List.prototype.popFront = function () {\n return this.source.shift();\n };\n List.prototype.set = function (index, element) {\n if (index < 0) {\n throw new Error(\"Out of bounds\");\n }\n this.source[index] = element;\n };\n List.prototype.insert = function (index, element) {\n if (index < 0 || index > this.source.length) {\n throw new Error(\"Out of bounds\");\n }\n this.source.splice(index, 0, element);\n };\n List.prototype.indexOf = function (element) {\n return this.source.indexOf(element);\n };\n return List;\n}(ArrayQueryable));\nexports.List = List;\nvar Stack = /** @class */ (function (_super) {\n __extends(Stack, _super);\n function Stack() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Stack.prototype.copy = function () {\n return new Stack(this.toArray());\n };\n Stack.prototype.clear = function () {\n this.source = [];\n };\n Stack.prototype.peek = function () {\n return this.source[this.source.length - 1];\n };\n Stack.prototype.pop = function () {\n return this.source.pop();\n };\n Stack.prototype.push = function (element) {\n return this.source.push(element);\n };\n return Stack;\n}(ArrayQueryable));\nexports.Stack = Stack;\nvar Dictionary = /** @class */ (function (_super) {\n __extends(Dictionary, _super);\n function Dictionary(keyValuePairs) {\n var _this = _super.call(this) || this;\n _this.clear();\n if (keyValuePairs !== undefined) {\n for (var i = 0; i < keyValuePairs.length; ++i) {\n var pair = keyValuePairs[i];\n _this.set(pair.key, pair.value);\n }\n }\n return _this;\n }\n Dictionary.fromArray = function (array, keySelector, valueSelector) {\n var keyValuePairs = array.map(function (v) {\n return {\n key: keySelector(v),\n value: valueSelector(v),\n };\n });\n return new Dictionary(keyValuePairs);\n };\n Dictionary.fromJsObject = function (object) {\n var keys = new List(Object.getOwnPropertyNames(object));\n var keyValues = keys.select(function (k) { return ({ key: k, value: object[k] }); });\n return new Dictionary(keyValues.toArray());\n };\n Dictionary.prototype.copy = function () {\n return new Dictionary(this.toArray());\n };\n Dictionary.prototype.asReadOnly = function () {\n return this;\n };\n Dictionary.prototype.asEnumerable = function () {\n return new Enumerables_1.ArrayEnumerable(this.toArray());\n };\n Dictionary.prototype.toArray = function () {\n var _this = this;\n return this.getKeys().select(function (p) {\n return {\n key: p,\n value: _this.dictionary[p],\n };\n }).toArray();\n };\n Dictionary.prototype.clear = function () {\n this.dictionary = {};\n };\n Dictionary.prototype.containsKey = function (key) {\n return this.dictionary.hasOwnProperty(key);\n };\n Dictionary.prototype.containsValue = function (value) {\n var keys = this.getKeysFast();\n for (var i = 0; i < keys.length; ++i) {\n if (this.dictionary[keys[i]] === value) {\n return true;\n }\n }\n return false;\n };\n Dictionary.prototype.getKeys = function () {\n var _this = this;\n var keys = this.getKeysFast();\n return new List(keys.map(function (k) { return _this.keyType === \"number\"\n ? parseFloat(k)\n : k; }));\n };\n Dictionary.prototype.getKeysFast = function () {\n return Object.getOwnPropertyNames(this.dictionary);\n };\n Dictionary.prototype.getValues = function () {\n var keys = this.getKeysFast();\n var result = new Array(keys.length);\n for (var i = 0; i < keys.length; ++i) {\n result[i] = this.dictionary[keys[i]];\n }\n return new List(result);\n };\n Dictionary.prototype.remove = function (key) {\n if (this.containsKey(key)) {\n delete this.dictionary[key];\n }\n };\n Dictionary.prototype.get = function (key) {\n if (!this.containsKey(key)) {\n throw new Error(\"Key doesn't exist: \" + key);\n }\n return this.dictionary[key];\n };\n Dictionary.prototype.set = function (key, value) {\n if (this.containsKey(key)) {\n throw new Error(\"Key already exists: \" + key);\n }\n this.setOrUpdate(key, value);\n };\n Dictionary.prototype.setOrUpdate = function (key, value) {\n if (this.keyType === undefined) {\n this.keyType = typeof key;\n }\n this.dictionary[key] = value;\n };\n return Dictionary;\n}(EnumerableCollection));\nexports.Dictionary = Dictionary;\n// endregion\n","\"use strict\";\n/*\n * Created by Ivan Sanz (@isc30)\n * Copyright © 2017 Ivan Sanz Carasa. All rights reserved.\n*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.strictEqualityComparer = function () { return function (left, right) { return left === right; }; };\nfunction combineComparers(left, right) {\n return function (l, r) { return left(l, r) || right(l, r); };\n}\nexports.combineComparers = combineComparers;\nfunction createComparer(keySelector, ascending, customComparer) {\n if (customComparer !== undefined) {\n return function (l, r) { return customComparer(keySelector(l), keySelector(r)); };\n }\n return ascending\n ? function (l, r) {\n var left = keySelector(l);\n var right = keySelector(r);\n return left < right\n ? -1\n : left > right\n ? 1\n : 0;\n }\n : function (l, r) {\n var left = keySelector(l);\n var right = keySelector(r);\n return left < right\n ? 1\n : left > right\n ? -1\n : 0;\n };\n}\nexports.createComparer = createComparer;\n","\"use strict\";\n// -\n// Created by Ivan Sanz (@isc30)\n// Copyright © 2017 Ivan Sanz Carasa. All rights reserved.\n// -\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Iterators_1 = require(\"./Iterators\");\nvar Comparers_1 = require(\"./Comparers\");\nvar Collections_1 = require(\"./Collections\");\nvar Utils_1 = require(\"./Utils\");\n// endregion\n// region EnumerableBase\nvar EnumerableBase = /** @class */ (function () {\n function EnumerableBase(source) {\n this.source = source;\n }\n EnumerableBase.prototype.reset = function () {\n this.source.reset();\n };\n EnumerableBase.prototype.next = function () {\n return this.source.next();\n };\n EnumerableBase.prototype.asEnumerable = function () {\n return this;\n };\n EnumerableBase.prototype.toArray = function () {\n var result = [];\n this.reset();\n while (this.next()) {\n result.push(this.value());\n }\n return result;\n };\n EnumerableBase.prototype.toList = function () {\n return new Collections_1.List(this.toArray());\n };\n EnumerableBase.prototype.toDictionary = function (keySelector, valueSelector) {\n return Collections_1.Dictionary.fromArray(this.toArray(), keySelector, valueSelector);\n };\n EnumerableBase.prototype.count = function (predicate) {\n if (predicate !== undefined) {\n // Don't copy iterators\n return new ConditionalEnumerable(this, predicate).count();\n }\n var result = 0;\n this.reset();\n while (this.next()) {\n ++result;\n }\n // tslint:disable-next-line:no-bitwise\n return result >>> 0;\n };\n EnumerableBase.prototype.any = function (predicate) {\n if (predicate !== undefined) {\n // Don't copy iterators\n return new ConditionalEnumerable(this, predicate).any();\n }\n this.reset();\n return this.next();\n };\n EnumerableBase.prototype.all = function (predicate) {\n this.reset();\n while (this.next()) {\n if (!predicate(this.value())) {\n return false;\n }\n }\n return true;\n };\n EnumerableBase.prototype.reverse = function () {\n return new ReverseEnumerable(this.copy());\n };\n EnumerableBase.prototype.contains = function (element) {\n return this.any(function (e) { return e === element; });\n };\n EnumerableBase.prototype.sequenceEqual = function (other, comparer) {\n if (comparer === void 0) { comparer = Comparers_1.strictEqualityComparer(); }\n var otherEnumerable = other instanceof Array\n ? new ArrayEnumerable(other)\n : other.asEnumerable();\n this.reset();\n otherEnumerable.reset();\n while (this.next()) {\n if (!otherEnumerable.next() || !comparer(this.value(), otherEnumerable.value())) {\n return false;\n }\n }\n return !otherEnumerable.next();\n };\n EnumerableBase.prototype.where = function (predicate) {\n return new ConditionalEnumerable(this.copy(), predicate);\n };\n EnumerableBase.prototype.select = function (selector) {\n return new TransformEnumerable(this.copy(), selector);\n };\n EnumerableBase.prototype.selectMany = function (selector) {\n var selectToEnumerable = function (e) {\n var ie = selector(e);\n return Array.isArray(ie)\n ? new ArrayEnumerable(ie)\n : ie.asEnumerable();\n };\n return this\n .select(selectToEnumerable).toArray()\n .reduce(function (p, c) { return new ConcatEnumerable(p, c); }, Enumerable.empty());\n };\n EnumerableBase.prototype.skipWhile = function (predicate) {\n return new SkipWhileEnumerable(this.copy(), predicate);\n };\n EnumerableBase.prototype.concat = function (other) {\n var others = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n others[_i - 1] = arguments[_i];\n }\n var asEnumerable = function (e) {\n return e instanceof Array\n ? new ArrayEnumerable(e)\n : e.asEnumerable();\n };\n var result = new ConcatEnumerable(this.copy(), asEnumerable(other).copy());\n for (var i = 0, end = others.length; i < end; ++i) {\n result = new ConcatEnumerable(result, asEnumerable(others[i]).copy());\n }\n return result;\n };\n EnumerableBase.prototype.defaultIfEmpty = function (defaultValue) {\n return new DefaultIfEmptyEnumerable(this, defaultValue);\n };\n EnumerableBase.prototype.elementAt = function (index) {\n var element = this.elementAtOrDefault(index);\n if (element === undefined) {\n throw new Error(\"Out of bounds\");\n }\n return element;\n };\n EnumerableBase.prototype.elementAtOrDefault = function (index) {\n if (index < 0) {\n throw new Error(\"Negative index is forbiden\");\n }\n this.reset();\n var currentIndex = -1;\n while (this.next()) {\n ++currentIndex;\n if (currentIndex === index) {\n break;\n }\n }\n if (currentIndex !== index) {\n return undefined;\n }\n return this.value();\n };\n EnumerableBase.prototype.except = function (other) {\n return this.where(function (e) { return !other.contains(e); });\n };\n EnumerableBase.prototype.first = function (predicate) {\n var element;\n if (predicate !== undefined) {\n element = this.firstOrDefault(predicate);\n }\n else {\n element = this.firstOrDefault();\n }\n if (element === undefined) {\n throw new Error(\"Sequence contains no elements\");\n }\n return element;\n };\n EnumerableBase.prototype.firstOrDefault = function (predicate) {\n if (predicate !== undefined) {\n // Don't copy iterators\n return new ConditionalEnumerable(this, predicate).firstOrDefault();\n }\n this.reset();\n if (!this.next()) {\n return undefined;\n }\n return this.value();\n };\n EnumerableBase.prototype.forEach = function (action) {\n this.reset();\n for (var i = 0; this.next(); ++i) {\n action(this.value(), i);\n }\n };\n EnumerableBase.prototype.groupBy = function (keySelector, valueSelector) {\n var array = this.toArray();\n var dictionary = new Collections_1.Dictionary();\n for (var i = 0; i < array.length; ++i) {\n var key = keySelector(array[i]);\n var value = valueSelector !== undefined\n ? valueSelector(array[i])\n : array[i];\n if (!dictionary.containsKey(key)) {\n dictionary.set(key, new Collections_1.List());\n }\n dictionary.get(key).push(value);\n }\n return dictionary.asEnumerable();\n };\n EnumerableBase.prototype.last = function (predicate) {\n var element;\n if (predicate !== undefined) {\n element = this.lastOrDefault(predicate);\n }\n else {\n element = this.lastOrDefault();\n }\n if (element === undefined) {\n throw new Error(\"Sequence contains no elements\");\n }\n return element;\n };\n EnumerableBase.prototype.lastOrDefault = function (predicate) {\n if (predicate !== undefined) {\n // Don't copy iterators\n return new ConditionalEnumerable(this, predicate).lastOrDefault();\n }\n var reversed = new ReverseEnumerable(this);\n reversed.reset();\n if (!reversed.next()) {\n return undefined;\n }\n return reversed.value();\n };\n EnumerableBase.prototype.single = function (predicate) {\n var element;\n if (predicate !== undefined) {\n element = this.singleOrDefault(predicate);\n }\n else {\n element = this.singleOrDefault();\n }\n if (element === undefined) {\n throw new Error(\"Sequence contains no elements\");\n }\n return element;\n };\n EnumerableBase.prototype.singleOrDefault = function (predicate) {\n if (predicate !== undefined) {\n // Don't copy iterators\n return new ConditionalEnumerable(this, predicate).singleOrDefault();\n }\n this.reset();\n if (!this.next()) {\n return undefined;\n }\n var element = this.value();\n if (this.next()) {\n throw new Error(\"Sequence contains more than 1 element\");\n }\n return element;\n };\n EnumerableBase.prototype.distinct = function (keySelector) {\n return new UniqueEnumerable(this.copy(), keySelector);\n };\n EnumerableBase.prototype.aggregate = function (aggregator, initialValue) {\n var value = initialValue;\n this.reset();\n if (initialValue === undefined) {\n if (!this.next()) {\n throw new Error(\"Sequence contains no elements\");\n }\n value = aggregator(value, this.value());\n }\n while (this.next()) {\n value = aggregator(value, this.value());\n }\n return value;\n };\n EnumerableBase.prototype.min = function (selector) {\n if (selector !== undefined) {\n // Don't copy iterators\n return new TransformEnumerable(this, selector).min();\n }\n return this.aggregate(function (previous, current) {\n return (previous !== undefined && previous < current)\n ? previous\n : current;\n });\n };\n EnumerableBase.prototype.orderBy = function (keySelector, comparer) {\n return new OrderedEnumerable(this.copy(), Comparers_1.createComparer(keySelector, true, comparer));\n };\n EnumerableBase.prototype.orderByDescending = function (keySelector) {\n return new OrderedEnumerable(this.copy(), Comparers_1.createComparer(keySelector, false, undefined));\n };\n EnumerableBase.prototype.max = function (selector) {\n if (selector !== undefined) {\n // Don't copy iterators\n return new TransformEnumerable(this, selector).max();\n }\n return this.aggregate(function (previous, current) {\n return (previous !== undefined && previous > current)\n ? previous\n : current;\n });\n };\n EnumerableBase.prototype.sum = function (selector) {\n return this.aggregate(function (previous, current) { return previous + selector(current); }, 0);\n };\n EnumerableBase.prototype.average = function (selector) {\n this.reset();\n if (!this.next()) {\n throw new Error(\"Sequence contains no elements\");\n }\n var sum = 0;\n var count = 0;\n do {\n sum += selector(this.value());\n ++count;\n } while (this.next());\n return sum / count;\n };\n EnumerableBase.prototype.skip = function (amount) {\n return new RangeEnumerable(this.copy(), amount, undefined);\n };\n EnumerableBase.prototype.take = function (amount) {\n return new RangeEnumerable(this.copy(), undefined, amount);\n };\n EnumerableBase.prototype.takeWhile = function (predicate) {\n return new TakeWhileEnumerable(this.copy(), predicate);\n };\n EnumerableBase.prototype.union = function (other) {\n return new UniqueEnumerable(this.concat(other));\n };\n EnumerableBase.prototype.zip = function (other, selector) {\n var otherAsEnumerable = other instanceof Array\n ? new ArrayEnumerable(other)\n : other.asEnumerable();\n return new ZippedEnumerable(this, otherAsEnumerable, selector);\n };\n return EnumerableBase;\n}());\nexports.EnumerableBase = EnumerableBase;\n// endregion\n// region Enumerable\nvar Enumerable = /** @class */ (function (_super) {\n __extends(Enumerable, _super);\n function Enumerable(source) {\n var _this = _super.call(this, source) || this;\n _this.currentValue = new Utils_1.Cached();\n return _this;\n }\n Enumerable.fromSource = function (source) {\n if (source instanceof Array) {\n return new ArrayEnumerable(source);\n }\n return new Enumerable(source);\n };\n Enumerable.empty = function () {\n return Enumerable.fromSource([]);\n };\n Enumerable.range = function (start, count, ascending) {\n if (ascending === void 0) { ascending = true; }\n if (count < 0) {\n throw new Error(\"Count must be >= 0\");\n }\n var source = new Array(count);\n if (ascending) {\n // tslint:disable-next-line:curly\n for (var i = 0; i < count; source[i] = start + (i++))\n ;\n }\n else {\n // tslint:disable-next-line:curly\n for (var i = 0; i < count; source[i] = start - (i++))\n ;\n }\n return new ArrayEnumerable(source);\n };\n Enumerable.repeat = function (element, count) {\n if (count < 0) {\n throw new Error(\"Count must me >= 0\");\n }\n var source = new Array(count);\n for (var i = 0; i < count; ++i) {\n source[i] = element;\n }\n return new ArrayEnumerable(source);\n };\n Enumerable.prototype.copy = function () {\n return new Enumerable(this.source.copy());\n };\n Enumerable.prototype.value = function () {\n if (!this.currentValue.isValid()) {\n this.currentValue.value = this.source.value();\n }\n return this.currentValue.value;\n };\n Enumerable.prototype.reset = function () {\n _super.prototype.reset.call(this);\n this.currentValue.invalidate();\n };\n Enumerable.prototype.next = function () {\n this.currentValue.invalidate();\n return _super.prototype.next.call(this);\n };\n return Enumerable;\n}(EnumerableBase));\nexports.Enumerable = Enumerable;\n// endregion\n// region ConditionalEnumerable\nvar ConditionalEnumerable = /** @class */ (function (_super) {\n __extends(ConditionalEnumerable, _super);\n function ConditionalEnumerable(source, predicate) {\n var _this = _super.call(this, source) || this;\n _this._predicate = predicate;\n return _this;\n }\n ConditionalEnumerable.prototype.copy = function () {\n return new ConditionalEnumerable(this.source.copy(), this._predicate);\n };\n ConditionalEnumerable.prototype.next = function () {\n var hasValue;\n do {\n hasValue = _super.prototype.next.call(this);\n } while (hasValue && !this._predicate(this.value()));\n return hasValue;\n };\n return ConditionalEnumerable;\n}(Enumerable));\nexports.ConditionalEnumerable = ConditionalEnumerable;\n// endregion\n// region SkipWhileEnumerable\nvar SkipWhileEnumerable = /** @class */ (function (_super) {\n __extends(SkipWhileEnumerable, _super);\n function SkipWhileEnumerable(source, predicate) {\n var _this = _super.call(this, source) || this;\n _this._predicate = predicate;\n _this._shouldContinueChecking = true;\n return _this;\n }\n SkipWhileEnumerable.prototype.reset = function () {\n _super.prototype.reset.call(this);\n this._shouldContinueChecking = true;\n };\n SkipWhileEnumerable.prototype.copy = function () {\n return new SkipWhileEnumerable(this.source.copy(), this._predicate);\n };\n SkipWhileEnumerable.prototype.next = function () {\n if (!this._shouldContinueChecking) {\n return _super.prototype.next.call(this);\n }\n var hasValue;\n do {\n hasValue = _super.prototype.next.call(this);\n } while (hasValue && this._predicate(this.value()));\n this._shouldContinueChecking = false;\n return hasValue;\n };\n return SkipWhileEnumerable;\n}(Enumerable));\nexports.SkipWhileEnumerable = SkipWhileEnumerable;\n// endregion\n// region TakeWhileEnumerable\nvar TakeWhileEnumerable = /** @class */ (function (_super) {\n __extends(TakeWhileEnumerable, _super);\n function TakeWhileEnumerable(source, predicate) {\n var _this = _super.call(this, source) || this;\n _this._predicate = predicate;\n _this._shouldContinueTaking = true;\n return _this;\n }\n TakeWhileEnumerable.prototype.reset = function () {\n _super.prototype.reset.call(this);\n this._shouldContinueTaking = true;\n };\n TakeWhileEnumerable.prototype.copy = function () {\n return new TakeWhileEnumerable(this.source.copy(), this._predicate);\n };\n TakeWhileEnumerable.prototype.next = function () {\n if (_super.prototype.next.call(this)) {\n if (this._shouldContinueTaking && this._predicate(this.value())) {\n return true;\n }\n }\n this._shouldContinueTaking = false;\n return false;\n };\n return TakeWhileEnumerable;\n}(Enumerable));\nexports.TakeWhileEnumerable = TakeWhileEnumerable;\n// endregion\n// region ConcatEnumerable\nvar ConcatEnumerable = /** @class */ (function (_super) {\n __extends(ConcatEnumerable, _super);\n function ConcatEnumerable(left, right) {\n var _this = _super.call(this, left) || this;\n _this._otherSource = right;\n _this._isFirstSourceFinished = false;\n return _this;\n }\n ConcatEnumerable.prototype.copy = function () {\n return new ConcatEnumerable(this.source.copy(), this._otherSource.copy());\n };\n ConcatEnumerable.prototype.reset = function () {\n this.source.reset();\n this._otherSource.reset();\n this._isFirstSourceFinished = false;\n this.currentValue.invalidate();\n };\n ConcatEnumerable.prototype.next = function () {\n this.currentValue.invalidate();\n var hasValue = !this._isFirstSourceFinished\n ? this.source.next()\n : this._otherSource.next();\n if (!hasValue && !this._isFirstSourceFinished) {\n this._isFirstSourceFinished = true;\n return this.next();\n }\n return hasValue;\n };\n ConcatEnumerable.prototype.value = function () {\n if (!this.currentValue.isValid()) {\n this.currentValue.value = !this._isFirstSourceFinished\n ? this.source.value()\n : this._otherSource.value();\n }\n return this.currentValue.value;\n };\n return ConcatEnumerable;\n}(Enumerable));\nexports.ConcatEnumerable = ConcatEnumerable;\n// endregion\n// region UniqueEnumerable\nvar UniqueEnumerable = /** @class */ (function (_super) {\n __extends(UniqueEnumerable, _super);\n function UniqueEnumerable(source, keySelector) {\n var _this = _super.call(this, source) || this;\n _this._keySelector = keySelector;\n _this._seen = { primitive: { number: {}, string: {}, boolean: {} }, complex: [] };\n return _this;\n }\n UniqueEnumerable.prototype.copy = function () {\n return new UniqueEnumerable(this.source.copy(), this._keySelector);\n };\n UniqueEnumerable.prototype.reset = function () {\n _super.prototype.reset.call(this);\n this._seen = { primitive: { number: {}, string: {}, boolean: {} }, complex: [] };\n };\n UniqueEnumerable.prototype.isUnique = function (element) {\n var key = this._keySelector !== undefined\n ? this._keySelector(element)\n : element;\n var type = typeof key;\n return (type in this._seen.primitive)\n ? this._seen.primitive[type].hasOwnProperty(key)\n ? false\n : this._seen.primitive[type][key] = true\n : this._seen.complex.indexOf(key) !== -1\n ? false\n : this._seen.complex.push(key) > -1;\n };\n UniqueEnumerable.prototype.next = function () {\n var hasValue;\n do {\n hasValue = _super.prototype.next.call(this);\n } while (hasValue && !this.isUnique(this.value()));\n return hasValue;\n };\n return UniqueEnumerable;\n}(Enumerable));\nexports.UniqueEnumerable = UniqueEnumerable;\n// endregion\n// region RangeEnumerable\nvar RangeEnumerable = /** @class */ (function (_super) {\n __extends(RangeEnumerable, _super);\n function RangeEnumerable(source, start, count) {\n var _this = this;\n if ((start !== undefined && start < 0) || (count !== undefined && count < 0)) {\n throw new Error(\"Incorrect parameters\");\n }\n _this = _super.call(this, source) || this;\n _this._start = start;\n _this._count = count;\n _this._currentIndex = -1;\n return _this;\n }\n RangeEnumerable.prototype.copy = function () {\n return new RangeEnumerable(this.source.copy(), this._start, this._count);\n };\n RangeEnumerable.prototype.reset = function () {\n _super.prototype.reset.call(this);\n this._currentIndex = -1;\n };\n RangeEnumerable.prototype.isValidIndex = function () {\n var start = this._start !== undefined ? this._start : 0;\n var end = this._count !== undefined ? start + this._count : undefined;\n return this._currentIndex >= start && (end === undefined || this._currentIndex < end);\n };\n RangeEnumerable.prototype.performSkip = function () {\n var start = this._start !== undefined ? this._start : 0;\n var hasValue = true;\n while (hasValue && this._currentIndex + 1 < start) {\n hasValue = _super.prototype.next.call(this);\n ++this._currentIndex;\n }\n return hasValue;\n };\n RangeEnumerable.prototype.next = function () {\n if (this._currentIndex < 0 && !this.performSkip()) {\n return false;\n }\n ++this._currentIndex;\n return _super.prototype.next.call(this) && this.isValidIndex();\n };\n RangeEnumerable.prototype.value = function () {\n if (!this.isValidIndex()) {\n throw new Error(\"Out of bounds\");\n }\n return _super.prototype.value.call(this);\n };\n return RangeEnumerable;\n}(Enumerable));\nexports.RangeEnumerable = RangeEnumerable;\n// endregion\n// region TransformEnumerable\nvar TransformEnumerable = /** @class */ (function (_super) {\n __extends(TransformEnumerable, _super);\n function TransformEnumerable(source, transform) {\n var _this = _super.call(this, source) || this;\n _this._transform = transform;\n _this._currentValue = new Utils_1.Cached();\n return _this;\n }\n TransformEnumerable.prototype.copy = function () {\n return new TransformEnumerable(this.source.copy(), this._transform);\n };\n TransformEnumerable.prototype.value = function () {\n if (!this._currentValue.isValid()) {\n this._currentValue.value = this._transform(this.source.value());\n }\n return this._currentValue.value;\n };\n TransformEnumerable.prototype.reset = function () {\n _super.prototype.reset.call(this);\n this._currentValue.invalidate();\n };\n TransformEnumerable.prototype.next = function () {\n this._currentValue.invalidate();\n return _super.prototype.next.call(this);\n };\n return TransformEnumerable;\n}(EnumerableBase));\nexports.TransformEnumerable = TransformEnumerable;\n// endregion\n// region ReverseEnumerable\nvar ReverseEnumerable = /** @class */ (function (_super) {\n __extends(ReverseEnumerable, _super);\n function ReverseEnumerable(source) {\n var _this = _super.call(this, source) || this;\n _this._elements = new Utils_1.Cached();\n _this._currentIndex = -1;\n return _this;\n }\n ReverseEnumerable.prototype.copy = function () {\n return new ReverseEnumerable(this.source.copy());\n };\n ReverseEnumerable.prototype.reset = function () {\n this._elements.invalidate();\n this._currentIndex = -1;\n };\n ReverseEnumerable.prototype.isValidIndex = function () {\n return this._currentIndex >= 0\n && this._currentIndex < this._elements.value.length;\n };\n ReverseEnumerable.prototype.all = function (predicate) {\n return this.source.all(predicate);\n };\n ReverseEnumerable.prototype.any = function (predicate) {\n if (predicate !== undefined) {\n return this.source.any(predicate);\n }\n return this.source.any();\n };\n ReverseEnumerable.prototype.average = function (selector) {\n return this.source.average(selector);\n };\n ReverseEnumerable.prototype.count = function (predicate) {\n if (predicate !== undefined) {\n return this.source.count(predicate);\n }\n return this.source.count();\n };\n ReverseEnumerable.prototype.max = function (selector) {\n if (selector !== undefined) {\n return this.source.max(selector);\n }\n return this.source.max();\n };\n ReverseEnumerable.prototype.min = function (selector) {\n if (selector !== undefined) {\n return this.source.min(selector);\n }\n return this.source.min();\n };\n ReverseEnumerable.prototype.reverse = function () {\n return this.source.copy(); // haha so smart\n };\n ReverseEnumerable.prototype.sum = function (selector) {\n return this.source.sum(selector);\n };\n ReverseEnumerable.prototype.next = function () {\n if (!this._elements.isValid()) {\n this._elements.value = this.source.toArray();\n }\n ++this._currentIndex;\n return this.isValidIndex();\n };\n ReverseEnumerable.prototype.value = function () {\n if (!this._elements.isValid() || !this.isValidIndex()) {\n throw new Error(\"Out of bounds\");\n }\n return this._elements.value[(this._elements.value.length - 1) - this._currentIndex];\n };\n return ReverseEnumerable;\n}(Enumerable));\nexports.ReverseEnumerable = ReverseEnumerable;\n// endregion\n// region OrderedEnumerable\nvar OrderedEnumerable = /** @class */ (function (_super) {\n __extends(OrderedEnumerable, _super);\n function OrderedEnumerable(source, comparer) {\n var _this = _super.call(this, source) || this;\n _this._comparer = comparer;\n _this._elements = new Utils_1.Cached();\n _this._currentIndex = -1;\n return _this;\n }\n OrderedEnumerable.prototype.isValidIndex = function () {\n return this._currentIndex >= 0\n && this._currentIndex < this._elements.value.length;\n };\n OrderedEnumerable.prototype.orderBy = function (keySelector, comparer) {\n return new OrderedEnumerable(this.source.copy(), Comparers_1.createComparer(keySelector, true, comparer));\n };\n OrderedEnumerable.prototype.orderByDescending = function (keySelector) {\n return new OrderedEnumerable(this.source.copy(), Comparers_1.createComparer(keySelector, false, undefined));\n };\n OrderedEnumerable.prototype.thenBy = function (keySelector, comparer) {\n return new OrderedEnumerable(this.source.copy(), Comparers_1.combineComparers(this._comparer, Comparers_1.createComparer(keySelector, true, comparer)));\n };\n OrderedEnumerable.prototype.thenByDescending = function (keySelector) {\n return new OrderedEnumerable(this.source.copy(), Comparers_1.combineComparers(this._comparer, Comparers_1.createComparer(keySelector, false, undefined)));\n };\n OrderedEnumerable.prototype.reset = function () {\n this._elements.invalidate();\n this._currentIndex = -1;\n };\n OrderedEnumerable.prototype.copy = function () {\n return new OrderedEnumerable(this.source.copy(), this._comparer);\n };\n OrderedEnumerable.prototype.value = function () {\n if (!this._elements.isValid() || !this.isValidIndex()) {\n throw new Error(\"Out of bounds\");\n }\n return this._elements.value[this._currentIndex];\n };\n OrderedEnumerable.prototype.next = function () {\n if (!this._elements.isValid()) {\n this._elements.value = this.toArray();\n }\n ++this._currentIndex;\n return this.isValidIndex();\n };\n OrderedEnumerable.prototype.toArray = function () {\n // Allocate the array before sorting\n // It's faster than working with anonymous reference\n var result = this.source.toArray();\n return result.sort(this._comparer);\n };\n return OrderedEnumerable;\n}(EnumerableBase));\nexports.OrderedEnumerable = OrderedEnumerable;\n// endregion\n// region ArrayEnumerable\nvar ArrayEnumerable = /** @class */ (function (_super) {\n __extends(ArrayEnumerable, _super);\n function ArrayEnumerable(source) {\n var _this = _super.call(this, new Iterators_1.ArrayIterator(source)) || this;\n _this.list = new Collections_1.List(source);\n return _this;\n }\n ArrayEnumerable.prototype.toArray = function () {\n return this.list.toArray();\n };\n ArrayEnumerable.prototype.aggregate = function (aggregator, initialValue) {\n if (initialValue !== undefined) {\n return this.list.aggregate(aggregator, initialValue);\n }\n return this.list.aggregate(aggregator);\n };\n ArrayEnumerable.prototype.any = function (predicate) {\n if (predicate !== undefined) {\n return this.list.any(predicate);\n }\n return this.list.any();\n };\n ArrayEnumerable.prototype.all = function (predicate) {\n return this.list.all(predicate);\n };\n ArrayEnumerable.prototype.average = function (selector) {\n return this.list.average(selector);\n };\n ArrayEnumerable.prototype.count = function (predicate) {\n if (predicate !== undefined) {\n return this.list.count(predicate);\n }\n return this.list.count();\n };\n ArrayEnumerable.prototype.copy = function () {\n return new ArrayEnumerable(this.list.asArray());\n };\n ArrayEnumerable.prototype.elementAtOrDefault = function (index) {\n return this.list.elementAtOrDefault(index);\n };\n ArrayEnumerable.prototype.firstOrDefault = function (predicate) {\n if (predicate !== undefined) {\n return this.list.firstOrDefault(predicate);\n }\n return this.list.firstOrDefault();\n };\n ArrayEnumerable.prototype.lastOrDefault = function (predicate) {\n if (predicate !== undefined) {\n return this.list.lastOrDefault(predicate);\n }\n return this.list.lastOrDefault();\n };\n return ArrayEnumerable;\n}(Enumerable));\nexports.ArrayEnumerable = ArrayEnumerable;\n// endregion\n// region DefaultIfEmptyEnumerable\nvar DefaultIfEmptyEnumerable = /** @class */ (function (_super) {\n __extends(DefaultIfEmptyEnumerable, _super);\n function DefaultIfEmptyEnumerable(source, defaultValue) {\n var _this = _super.call(this, source) || this;\n _this._mustUseDefaultValue = undefined;\n _this._defaultValue = defaultValue;\n return _this;\n }\n DefaultIfEmptyEnumerable.prototype.copy = function () {\n return new DefaultIfEmptyEnumerable(this.source.copy(), this._defaultValue);\n };\n DefaultIfEmptyEnumerable.prototype.value = function () {\n if (this._mustUseDefaultValue) {\n return this._defaultValue;\n }\n return this.source.value();\n };\n DefaultIfEmptyEnumerable.prototype.next = function () {\n var hasNextElement = _super.prototype.next.call(this);\n // single default element\n this._mustUseDefaultValue = this._mustUseDefaultValue === undefined && !hasNextElement;\n return this._mustUseDefaultValue || hasNextElement;\n };\n DefaultIfEmptyEnumerable.prototype.reset = function () {\n _super.prototype.reset.call(this);\n this._mustUseDefaultValue = undefined;\n };\n return DefaultIfEmptyEnumerable;\n}(EnumerableBase));\nexports.DefaultIfEmptyEnumerable = DefaultIfEmptyEnumerable;\n// endregion\n// region ZippedEnumerable\nvar ZippedEnumerable = /** @class */ (function (_super) {\n __extends(ZippedEnumerable, _super);\n function ZippedEnumerable(source, otherSource, selector) {\n var _this = _super.call(this, source) || this;\n _this._otherSource = otherSource;\n _this._isOneOfTheSourcesFinished = false;\n _this._currentValue = new Utils_1.Cached();\n _this._selector = selector;\n return _this;\n }\n ZippedEnumerable.prototype.copy = function () {\n return new ZippedEnumerable(this.source.copy(), this._otherSource.copy(), this._selector);\n };\n ZippedEnumerable.prototype.value = function () {\n if (!this._currentValue.isValid()) {\n this._currentValue.value = this._selector(this.source.value(), this._otherSource.value());\n }\n return this._currentValue.value;\n };\n ZippedEnumerable.prototype.reset = function () {\n _super.prototype.reset.call(this);\n this._otherSource.reset();\n this._isOneOfTheSourcesFinished = false;\n this._currentValue.invalidate();\n };\n ZippedEnumerable.prototype.next = function () {\n this._currentValue.invalidate();\n if (!this._isOneOfTheSourcesFinished) {\n this._isOneOfTheSourcesFinished = !_super.prototype.next.call(this) || !this._otherSource.next();\n }\n return !this._isOneOfTheSourcesFinished;\n };\n return ZippedEnumerable;\n}(EnumerableBase));\nexports.ZippedEnumerable = ZippedEnumerable;\n// endregion\n","\"use strict\";\n/*\n * Created by Ivan Sanz (@isc30)\n * Copyright © 2017 Ivan Sanz Carasa. All rights reserved.\n*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* ES6 compatibility layer :D\ninterface IteratorResult\n{\n done: boolean;\n value: T;\n}\n\ninterface Iterator\n{\n next(value?: any): IteratorResult;\n return?(value?: any): IteratorResult;\n throw?(e?: any): IteratorResult;\n}*/\nvar ArrayIterator = /** @class */ (function () {\n function ArrayIterator(source) {\n this.source = source;\n this.reset();\n }\n ArrayIterator.prototype.copy = function () {\n return new ArrayIterator(this.source);\n };\n ArrayIterator.prototype.reset = function () {\n this._index = -1;\n };\n ArrayIterator.prototype.isValidIndex = function () {\n return this._index >= 0 && this._index < this.source.length;\n };\n ArrayIterator.prototype.next = function () {\n ++this._index;\n return this.isValidIndex();\n };\n ArrayIterator.prototype.value = function () {\n if (!this.isValidIndex()) {\n throw new Error(\"Out of bounds\");\n }\n return this.source[this._index];\n };\n return ArrayIterator;\n}());\nexports.ArrayIterator = ArrayIterator;\n","\"use strict\";\n/*\n * Created by Ivan Sanz (@isc30)\n * Copyright © 2017 Ivan Sanz Carasa. All rights reserved.\n*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Enumerables_1 = require(\"./Enumerables\");\nexports.Enumerable = Enumerables_1.Enumerable;\nvar Iterators_1 = require(\"./Iterators\");\nexports.ArrayIterator = Iterators_1.ArrayIterator;\nvar Collections_1 = require(\"./Collections\");\nexports.List = Collections_1.List;\nexports.Dictionary = Collections_1.Dictionary;\nexports.Stack = Collections_1.Stack;\nvar Comparers_1 = require(\"./Comparers\");\nexports.strictEqualityComparer = Comparers_1.strictEqualityComparer;\n","\"use strict\";\n/*\n * Created by Ivan Sanz (@isc30)\n * Copyright © 2017 Ivan Sanz Carasa. All rights reserved.\n*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/*export function Lazy(factory: () => T): () => T\n{\n let instance: T;\n \n return () => instance !== undefined\n ? instance\n : (instance = factory());\n}*/\nvar Cached = /** @class */ (function () {\n function Cached() {\n this._isValid = false;\n }\n Cached.prototype.invalidate = function () {\n this._isValid = false;\n };\n Cached.prototype.isValid = function () {\n return this._isValid;\n };\n Object.defineProperty(Cached.prototype, \"value\", {\n get: function () {\n if (!this._isValid) {\n throw new Error(\"Trying to get value of invalid cache\");\n }\n return this._value;\n },\n set: function (value) {\n this._value = value;\n this._isValid = true;\n },\n enumerable: true,\n configurable: true\n });\n return Cached;\n}());\nexports.Cached = Cached;\n","var _ = require('./lodash.min').runInContext();\nmodule.exports = require('./fp/_baseConvert')(_, _);\n","var mapping = require('./_mapping'),\n fallbackHolder = require('./placeholder');\n\n/** Built-in value reference. */\nvar push = Array.prototype.push;\n\n/**\n * Creates a function, with an arity of `n`, that invokes `func` with the\n * arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} n The arity of the new function.\n * @returns {Function} Returns the new function.\n */\nfunction baseArity(func, n) {\n return n == 2\n ? function(a, b) { return func.apply(undefined, arguments); }\n : function(a) { return func.apply(undefined, arguments); };\n}\n\n/**\n * Creates a function that invokes `func`, with up to `n` arguments, ignoring\n * any additional arguments.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the new function.\n */\nfunction baseAry(func, n) {\n return n == 2\n ? function(a, b) { return func(a, b); }\n : function(a) { return func(a); };\n}\n\n/**\n * Creates a clone of `array`.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the cloned array.\n */\nfunction cloneArray(array) {\n var length = array ? array.length : 0,\n result = Array(length);\n\n while (length--) {\n result[length] = array[length];\n }\n return result;\n}\n\n/**\n * Creates a function that clones a given object using the assignment `func`.\n *\n * @private\n * @param {Function} func The assignment function.\n * @returns {Function} Returns the new cloner function.\n */\nfunction createCloner(func) {\n return function(object) {\n return func({}, object);\n };\n}\n\n/**\n * A specialized version of `_.spread` which flattens the spread array into\n * the arguments of the invoked `func`.\n *\n * @private\n * @param {Function} func The function to spread arguments over.\n * @param {number} start The start position of the spread.\n * @returns {Function} Returns the new function.\n */\nfunction flatSpread(func, start) {\n return function() {\n var length = arguments.length,\n lastIndex = length - 1,\n args = Array(length);\n\n while (length--) {\n args[length] = arguments[length];\n }\n var array = args[start],\n otherArgs = args.slice(0, start);\n\n if (array) {\n push.apply(otherArgs, array);\n }\n if (start != lastIndex) {\n push.apply(otherArgs, args.slice(start + 1));\n }\n return func.apply(this, otherArgs);\n };\n}\n\n/**\n * Creates a function that wraps `func` and uses `cloner` to clone the first\n * argument it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} cloner The function to clone arguments.\n * @returns {Function} Returns the new immutable function.\n */\nfunction wrapImmutable(func, cloner) {\n return function() {\n var length = arguments.length;\n if (!length) {\n return;\n }\n var args = Array(length);\n while (length--) {\n args[length] = arguments[length];\n }\n var result = args[0] = cloner.apply(undefined, args);\n func.apply(undefined, args);\n return result;\n };\n}\n\n/**\n * The base implementation of `convert` which accepts a `util` object of methods\n * required to perform conversions.\n *\n * @param {Object} util The util object.\n * @param {string} name The name of the function to convert.\n * @param {Function} func The function to convert.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.cap=true] Specify capping iteratee arguments.\n * @param {boolean} [options.curry=true] Specify currying.\n * @param {boolean} [options.fixed=true] Specify fixed arity.\n * @param {boolean} [options.immutable=true] Specify immutable operations.\n * @param {boolean} [options.rearg=true] Specify rearranging arguments.\n * @returns {Function|Object} Returns the converted function or object.\n */\nfunction baseConvert(util, name, func, options) {\n var isLib = typeof name == 'function',\n isObj = name === Object(name);\n\n if (isObj) {\n options = func;\n func = name;\n name = undefined;\n }\n if (func == null) {\n throw new TypeError;\n }\n options || (options = {});\n\n var config = {\n 'cap': 'cap' in options ? options.cap : true,\n 'curry': 'curry' in options ? options.curry : true,\n 'fixed': 'fixed' in options ? options.fixed : true,\n 'immutable': 'immutable' in options ? options.immutable : true,\n 'rearg': 'rearg' in options ? options.rearg : true\n };\n\n var defaultHolder = isLib ? func : fallbackHolder,\n forceCurry = ('curry' in options) && options.curry,\n forceFixed = ('fixed' in options) && options.fixed,\n forceRearg = ('rearg' in options) && options.rearg,\n pristine = isLib ? func.runInContext() : undefined;\n\n var helpers = isLib ? func : {\n 'ary': util.ary,\n 'assign': util.assign,\n 'clone': util.clone,\n 'curry': util.curry,\n 'forEach': util.forEach,\n 'isArray': util.isArray,\n 'isError': util.isError,\n 'isFunction': util.isFunction,\n 'isWeakMap': util.isWeakMap,\n 'iteratee': util.iteratee,\n 'keys': util.keys,\n 'rearg': util.rearg,\n 'toInteger': util.toInteger,\n 'toPath': util.toPath\n };\n\n var ary = helpers.ary,\n assign = helpers.assign,\n clone = helpers.clone,\n curry = helpers.curry,\n each = helpers.forEach,\n isArray = helpers.isArray,\n isError = helpers.isError,\n isFunction = helpers.isFunction,\n isWeakMap = helpers.isWeakMap,\n keys = helpers.keys,\n rearg = helpers.rearg,\n toInteger = helpers.toInteger,\n toPath = helpers.toPath;\n\n var aryMethodKeys = keys(mapping.aryMethod);\n\n var wrappers = {\n 'castArray': function(castArray) {\n return function() {\n var value = arguments[0];\n return isArray(value)\n ? castArray(cloneArray(value))\n : castArray.apply(undefined, arguments);\n };\n },\n 'iteratee': function(iteratee) {\n return function() {\n var func = arguments[0],\n arity = arguments[1],\n result = iteratee(func, arity),\n length = result.length;\n\n if (config.cap && typeof arity == 'number') {\n arity = arity > 2 ? (arity - 2) : 1;\n return (length && length <= arity) ? result : baseAry(result, arity);\n }\n return result;\n };\n },\n 'mixin': function(mixin) {\n return function(source) {\n var func = this;\n if (!isFunction(func)) {\n return mixin(func, Object(source));\n }\n var pairs = [];\n each(keys(source), function(key) {\n if (isFunction(source[key])) {\n pairs.push([key, func.prototype[key]]);\n }\n });\n\n mixin(func, Object(source));\n\n each(pairs, function(pair) {\n var value = pair[1];\n if (isFunction(value)) {\n func.prototype[pair[0]] = value;\n } else {\n delete func.prototype[pair[0]];\n }\n });\n return func;\n };\n },\n 'nthArg': function(nthArg) {\n return function(n) {\n var arity = n < 0 ? 1 : (toInteger(n) + 1);\n return curry(nthArg(n), arity);\n };\n },\n 'rearg': function(rearg) {\n return function(func, indexes) {\n var arity = indexes ? indexes.length : 0;\n return curry(rearg(func, indexes), arity);\n };\n },\n 'runInContext': function(runInContext) {\n return function(context) {\n return baseConvert(util, runInContext(context), options);\n };\n }\n };\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Casts `func` to a function with an arity capped iteratee if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @returns {Function} Returns the cast function.\n */\n function castCap(name, func) {\n if (config.cap) {\n var indexes = mapping.iterateeRearg[name];\n if (indexes) {\n return iterateeRearg(func, indexes);\n }\n var n = !isLib && mapping.iterateeAry[name];\n if (n) {\n return iterateeAry(func, n);\n }\n }\n return func;\n }\n\n /**\n * Casts `func` to a curried function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity of `func`.\n * @returns {Function} Returns the cast function.\n */\n function castCurry(name, func, n) {\n return (forceCurry || (config.curry && n > 1))\n ? curry(func, n)\n : func;\n }\n\n /**\n * Casts `func` to a fixed arity function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the cast function.\n */\n function castFixed(name, func, n) {\n if (config.fixed && (forceFixed || !mapping.skipFixed[name])) {\n var data = mapping.methodSpread[name],\n start = data && data.start;\n\n return start === undefined ? ary(func, n) : flatSpread(func, start);\n }\n return func;\n }\n\n /**\n * Casts `func` to an rearged function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity of `func`.\n * @returns {Function} Returns the cast function.\n */\n function castRearg(name, func, n) {\n return (config.rearg && n > 1 && (forceRearg || !mapping.skipRearg[name]))\n ? rearg(func, mapping.methodRearg[name] || mapping.aryRearg[n])\n : func;\n }\n\n /**\n * Creates a clone of `object` by `path`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {Array|string} path The path to clone by.\n * @returns {Object} Returns the cloned object.\n */\n function cloneByPath(object, path) {\n path = toPath(path);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n result = clone(Object(object)),\n nested = result;\n\n while (nested != null && ++index < length) {\n var key = path[index],\n value = nested[key];\n\n if (value != null &&\n !(isFunction(value) || isError(value) || isWeakMap(value))) {\n nested[key] = clone(index == lastIndex ? value : Object(value));\n }\n nested = nested[key];\n }\n return result;\n }\n\n /**\n * Converts `lodash` to an immutable auto-curried iteratee-first data-last\n * version with conversion `options` applied.\n *\n * @param {Object} [options] The options object. See `baseConvert` for more details.\n * @returns {Function} Returns the converted `lodash`.\n */\n function convertLib(options) {\n return _.runInContext.convert(options)(undefined);\n }\n\n /**\n * Create a converter function for `func` of `name`.\n *\n * @param {string} name The name of the function to convert.\n * @param {Function} func The function to convert.\n * @returns {Function} Returns the new converter function.\n */\n function createConverter(name, func) {\n var realName = mapping.aliasToReal[name] || name,\n methodName = mapping.remap[realName] || realName,\n oldOptions = options;\n\n return function(options) {\n var newUtil = isLib ? pristine : helpers,\n newFunc = isLib ? pristine[methodName] : func,\n newOptions = assign(assign({}, oldOptions), options);\n\n return baseConvert(newUtil, realName, newFunc, newOptions);\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke its iteratee, with up to `n`\n * arguments, ignoring any additional arguments.\n *\n * @private\n * @param {Function} func The function to cap iteratee arguments for.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the new function.\n */\n function iterateeAry(func, n) {\n return overArg(func, function(func) {\n return typeof func == 'function' ? baseAry(func, n) : func;\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke its iteratee with arguments\n * arranged according to the specified `indexes` where the argument value at\n * the first index is provided as the first argument, the argument value at\n * the second index is provided as the second argument, and so on.\n *\n * @private\n * @param {Function} func The function to rearrange iteratee arguments for.\n * @param {number[]} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n */\n function iterateeRearg(func, indexes) {\n return overArg(func, function(func) {\n var n = indexes.length;\n return baseArity(rearg(baseAry(func, n), indexes), n);\n });\n }\n\n /**\n * Creates a function that invokes `func` with its first argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function() {\n var length = arguments.length;\n if (!length) {\n return func();\n }\n var args = Array(length);\n while (length--) {\n args[length] = arguments[length];\n }\n var index = config.rearg ? 0 : (length - 1);\n args[index] = transform(args[index]);\n return func.apply(undefined, args);\n };\n }\n\n /**\n * Creates a function that wraps `func` and applys the conversions\n * rules by `name`.\n *\n * @private\n * @param {string} name The name of the function to wrap.\n * @param {Function} func The function to wrap.\n * @returns {Function} Returns the converted function.\n */\n function wrap(name, func, placeholder) {\n var result,\n realName = mapping.aliasToReal[name] || name,\n wrapped = func,\n wrapper = wrappers[realName];\n\n if (wrapper) {\n wrapped = wrapper(func);\n }\n else if (config.immutable) {\n if (mapping.mutate.array[realName]) {\n wrapped = wrapImmutable(func, cloneArray);\n }\n else if (mapping.mutate.object[realName]) {\n wrapped = wrapImmutable(func, createCloner(func));\n }\n else if (mapping.mutate.set[realName]) {\n wrapped = wrapImmutable(func, cloneByPath);\n }\n }\n each(aryMethodKeys, function(aryKey) {\n each(mapping.aryMethod[aryKey], function(otherName) {\n if (realName == otherName) {\n var data = mapping.methodSpread[realName],\n afterRearg = data && data.afterRearg;\n\n result = afterRearg\n ? castFixed(realName, castRearg(realName, wrapped, aryKey), aryKey)\n : castRearg(realName, castFixed(realName, wrapped, aryKey), aryKey);\n\n result = castCap(realName, result);\n result = castCurry(realName, result, aryKey);\n return false;\n }\n });\n return !result;\n });\n\n result || (result = wrapped);\n if (result == func) {\n result = forceCurry ? curry(result, 1) : function() {\n return func.apply(this, arguments);\n };\n }\n result.convert = createConverter(realName, func);\n result.placeholder = func.placeholder = placeholder;\n\n return result;\n }\n\n /*--------------------------------------------------------------------------*/\n\n if (!isObj) {\n return wrap(name, func, defaultHolder);\n }\n var _ = func;\n\n // Convert methods by ary cap.\n var pairs = [];\n each(aryMethodKeys, function(aryKey) {\n each(mapping.aryMethod[aryKey], function(key) {\n var func = _[mapping.remap[key] || key];\n if (func) {\n pairs.push([key, wrap(key, func, _)]);\n }\n });\n });\n\n // Convert remaining methods.\n each(keys(_), function(key) {\n var func = _[key];\n if (typeof func == 'function') {\n var length = pairs.length;\n while (length--) {\n if (pairs[length][0] == key) {\n return;\n }\n }\n func.convert = createConverter(key, func);\n pairs.push([key, func]);\n }\n });\n\n // Assign to `_` leaving `_.prototype` unchanged to allow chaining.\n each(pairs, function(pair) {\n _[pair[0]] = pair[1];\n });\n\n _.convert = convertLib;\n _.placeholder = _;\n\n // Assign aliases.\n each(keys(_), function(key) {\n each(mapping.realToAlias[key] || [], function(alias) {\n _[alias] = _[key];\n });\n });\n\n return _;\n}\n\nmodule.exports = baseConvert;\n","/** Used to map aliases to their real names. */\nexports.aliasToReal = {\n\n // Lodash aliases.\n 'each': 'forEach',\n 'eachRight': 'forEachRight',\n 'entries': 'toPairs',\n 'entriesIn': 'toPairsIn',\n 'extend': 'assignIn',\n 'extendAll': 'assignInAll',\n 'extendAllWith': 'assignInAllWith',\n 'extendWith': 'assignInWith',\n 'first': 'head',\n\n // Methods that are curried variants of others.\n 'conforms': 'conformsTo',\n 'matches': 'isMatch',\n 'property': 'get',\n\n // Ramda aliases.\n '__': 'placeholder',\n 'F': 'stubFalse',\n 'T': 'stubTrue',\n 'all': 'every',\n 'allPass': 'overEvery',\n 'always': 'constant',\n 'any': 'some',\n 'anyPass': 'overSome',\n 'apply': 'spread',\n 'assoc': 'set',\n 'assocPath': 'set',\n 'complement': 'negate',\n 'compose': 'flowRight',\n 'contains': 'includes',\n 'dissoc': 'unset',\n 'dissocPath': 'unset',\n 'dropLast': 'dropRight',\n 'dropLastWhile': 'dropRightWhile',\n 'equals': 'isEqual',\n 'identical': 'eq',\n 'indexBy': 'keyBy',\n 'init': 'initial',\n 'invertObj': 'invert',\n 'juxt': 'over',\n 'omitAll': 'omit',\n 'nAry': 'ary',\n 'path': 'get',\n 'pathEq': 'matchesProperty',\n 'pathOr': 'getOr',\n 'paths': 'at',\n 'pickAll': 'pick',\n 'pipe': 'flow',\n 'pluck': 'map',\n 'prop': 'get',\n 'propEq': 'matchesProperty',\n 'propOr': 'getOr',\n 'props': 'at',\n 'symmetricDifference': 'xor',\n 'symmetricDifferenceBy': 'xorBy',\n 'symmetricDifferenceWith': 'xorWith',\n 'takeLast': 'takeRight',\n 'takeLastWhile': 'takeRightWhile',\n 'unapply': 'rest',\n 'unnest': 'flatten',\n 'useWith': 'overArgs',\n 'where': 'conformsTo',\n 'whereEq': 'isMatch',\n 'zipObj': 'zipObject'\n};\n\n/** Used to map ary to method names. */\nexports.aryMethod = {\n '1': [\n 'assignAll', 'assignInAll', 'attempt', 'castArray', 'ceil', 'create',\n 'curry', 'curryRight', 'defaultsAll', 'defaultsDeepAll', 'floor', 'flow',\n 'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method', 'mergeAll',\n 'methodOf', 'mixin', 'nthArg', 'over', 'overEvery', 'overSome','rest', 'reverse',\n 'round', 'runInContext', 'spread', 'template', 'trim', 'trimEnd', 'trimStart',\n 'uniqueId', 'words', 'zipAll'\n ],\n '2': [\n 'add', 'after', 'ary', 'assign', 'assignAllWith', 'assignIn', 'assignInAllWith',\n 'at', 'before', 'bind', 'bindAll', 'bindKey', 'chunk', 'cloneDeepWith',\n 'cloneWith', 'concat', 'conformsTo', 'countBy', 'curryN', 'curryRightN',\n 'debounce', 'defaults', 'defaultsDeep', 'defaultTo', 'delay', 'difference',\n 'divide', 'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith', 'eq',\n 'every', 'filter', 'find', 'findIndex', 'findKey', 'findLast', 'findLastIndex',\n 'findLastKey', 'flatMap', 'flatMapDeep', 'flattenDepth', 'forEach',\n 'forEachRight', 'forIn', 'forInRight', 'forOwn', 'forOwnRight', 'get',\n 'groupBy', 'gt', 'gte', 'has', 'hasIn', 'includes', 'indexOf', 'intersection',\n 'invertBy', 'invoke', 'invokeMap', 'isEqual', 'isMatch', 'join', 'keyBy',\n 'lastIndexOf', 'lt', 'lte', 'map', 'mapKeys', 'mapValues', 'matchesProperty',\n 'maxBy', 'meanBy', 'merge', 'mergeAllWith', 'minBy', 'multiply', 'nth', 'omit',\n 'omitBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt', 'partial',\n 'partialRight', 'partition', 'pick', 'pickBy', 'propertyOf', 'pull', 'pullAll',\n 'pullAt', 'random', 'range', 'rangeRight', 'rearg', 'reject', 'remove',\n 'repeat', 'restFrom', 'result', 'sampleSize', 'some', 'sortBy', 'sortedIndex',\n 'sortedIndexOf', 'sortedLastIndex', 'sortedLastIndexOf', 'sortedUniqBy',\n 'split', 'spreadFrom', 'startsWith', 'subtract', 'sumBy', 'take', 'takeRight',\n 'takeRightWhile', 'takeWhile', 'tap', 'throttle', 'thru', 'times', 'trimChars',\n 'trimCharsEnd', 'trimCharsStart', 'truncate', 'union', 'uniqBy', 'uniqWith',\n 'unset', 'unzipWith', 'without', 'wrap', 'xor', 'zip', 'zipObject',\n 'zipObjectDeep'\n ],\n '3': [\n 'assignInWith', 'assignWith', 'clamp', 'differenceBy', 'differenceWith',\n 'findFrom', 'findIndexFrom', 'findLastFrom', 'findLastIndexFrom', 'getOr',\n 'includesFrom', 'indexOfFrom', 'inRange', 'intersectionBy', 'intersectionWith',\n 'invokeArgs', 'invokeArgsMap', 'isEqualWith', 'isMatchWith', 'flatMapDepth',\n 'lastIndexOfFrom', 'mergeWith', 'orderBy', 'padChars', 'padCharsEnd',\n 'padCharsStart', 'pullAllBy', 'pullAllWith', 'rangeStep', 'rangeStepRight',\n 'reduce', 'reduceRight', 'replace', 'set', 'slice', 'sortedIndexBy',\n 'sortedLastIndexBy', 'transform', 'unionBy', 'unionWith', 'update', 'xorBy',\n 'xorWith', 'zipWith'\n ],\n '4': [\n 'fill', 'setWith', 'updateWith'\n ]\n};\n\n/** Used to map ary to rearg configs. */\nexports.aryRearg = {\n '2': [1, 0],\n '3': [2, 0, 1],\n '4': [3, 2, 0, 1]\n};\n\n/** Used to map method names to their iteratee ary. */\nexports.iterateeAry = {\n 'dropRightWhile': 1,\n 'dropWhile': 1,\n 'every': 1,\n 'filter': 1,\n 'find': 1,\n 'findFrom': 1,\n 'findIndex': 1,\n 'findIndexFrom': 1,\n 'findKey': 1,\n 'findLast': 1,\n 'findLastFrom': 1,\n 'findLastIndex': 1,\n 'findLastIndexFrom': 1,\n 'findLastKey': 1,\n 'flatMap': 1,\n 'flatMapDeep': 1,\n 'flatMapDepth': 1,\n 'forEach': 1,\n 'forEachRight': 1,\n 'forIn': 1,\n 'forInRight': 1,\n 'forOwn': 1,\n 'forOwnRight': 1,\n 'map': 1,\n 'mapKeys': 1,\n 'mapValues': 1,\n 'partition': 1,\n 'reduce': 2,\n 'reduceRight': 2,\n 'reject': 1,\n 'remove': 1,\n 'some': 1,\n 'takeRightWhile': 1,\n 'takeWhile': 1,\n 'times': 1,\n 'transform': 2\n};\n\n/** Used to map method names to iteratee rearg configs. */\nexports.iterateeRearg = {\n 'mapKeys': [1],\n 'reduceRight': [1, 0]\n};\n\n/** Used to map method names to rearg configs. */\nexports.methodRearg = {\n 'assignInAllWith': [1, 0],\n 'assignInWith': [1, 2, 0],\n 'assignAllWith': [1, 0],\n 'assignWith': [1, 2, 0],\n 'differenceBy': [1, 2, 0],\n 'differenceWith': [1, 2, 0],\n 'getOr': [2, 1, 0],\n 'intersectionBy': [1, 2, 0],\n 'intersectionWith': [1, 2, 0],\n 'isEqualWith': [1, 2, 0],\n 'isMatchWith': [2, 1, 0],\n 'mergeAllWith': [1, 0],\n 'mergeWith': [1, 2, 0],\n 'padChars': [2, 1, 0],\n 'padCharsEnd': [2, 1, 0],\n 'padCharsStart': [2, 1, 0],\n 'pullAllBy': [2, 1, 0],\n 'pullAllWith': [2, 1, 0],\n 'rangeStep': [1, 2, 0],\n 'rangeStepRight': [1, 2, 0],\n 'setWith': [3, 1, 2, 0],\n 'sortedIndexBy': [2, 1, 0],\n 'sortedLastIndexBy': [2, 1, 0],\n 'unionBy': [1, 2, 0],\n 'unionWith': [1, 2, 0],\n 'updateWith': [3, 1, 2, 0],\n 'xorBy': [1, 2, 0],\n 'xorWith': [1, 2, 0],\n 'zipWith': [1, 2, 0]\n};\n\n/** Used to map method names to spread configs. */\nexports.methodSpread = {\n 'assignAll': { 'start': 0 },\n 'assignAllWith': { 'start': 0 },\n 'assignInAll': { 'start': 0 },\n 'assignInAllWith': { 'start': 0 },\n 'defaultsAll': { 'start': 0 },\n 'defaultsDeepAll': { 'start': 0 },\n 'invokeArgs': { 'start': 2 },\n 'invokeArgsMap': { 'start': 2 },\n 'mergeAll': { 'start': 0 },\n 'mergeAllWith': { 'start': 0 },\n 'partial': { 'start': 1 },\n 'partialRight': { 'start': 1 },\n 'without': { 'start': 1 },\n 'zipAll': { 'start': 0 }\n};\n\n/** Used to identify methods which mutate arrays or objects. */\nexports.mutate = {\n 'array': {\n 'fill': true,\n 'pull': true,\n 'pullAll': true,\n 'pullAllBy': true,\n 'pullAllWith': true,\n 'pullAt': true,\n 'remove': true,\n 'reverse': true\n },\n 'object': {\n 'assign': true,\n 'assignAll': true,\n 'assignAllWith': true,\n 'assignIn': true,\n 'assignInAll': true,\n 'assignInAllWith': true,\n 'assignInWith': true,\n 'assignWith': true,\n 'defaults': true,\n 'defaultsAll': true,\n 'defaultsDeep': true,\n 'defaultsDeepAll': true,\n 'merge': true,\n 'mergeAll': true,\n 'mergeAllWith': true,\n 'mergeWith': true,\n },\n 'set': {\n 'set': true,\n 'setWith': true,\n 'unset': true,\n 'update': true,\n 'updateWith': true\n }\n};\n\n/** Used to map real names to their aliases. */\nexports.realToAlias = (function() {\n var hasOwnProperty = Object.prototype.hasOwnProperty,\n object = exports.aliasToReal,\n result = {};\n\n for (var key in object) {\n var value = object[key];\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }\n return result;\n}());\n\n/** Used to map method names to other names. */\nexports.remap = {\n 'assignAll': 'assign',\n 'assignAllWith': 'assignWith',\n 'assignInAll': 'assignIn',\n 'assignInAllWith': 'assignInWith',\n 'curryN': 'curry',\n 'curryRightN': 'curryRight',\n 'defaultsAll': 'defaults',\n 'defaultsDeepAll': 'defaultsDeep',\n 'findFrom': 'find',\n 'findIndexFrom': 'findIndex',\n 'findLastFrom': 'findLast',\n 'findLastIndexFrom': 'findLastIndex',\n 'getOr': 'get',\n 'includesFrom': 'includes',\n 'indexOfFrom': 'indexOf',\n 'invokeArgs': 'invoke',\n 'invokeArgsMap': 'invokeMap',\n 'lastIndexOfFrom': 'lastIndexOf',\n 'mergeAll': 'merge',\n 'mergeAllWith': 'mergeWith',\n 'padChars': 'pad',\n 'padCharsEnd': 'padEnd',\n 'padCharsStart': 'padStart',\n 'propertyOf': 'get',\n 'rangeStep': 'range',\n 'rangeStepRight': 'rangeRight',\n 'restFrom': 'rest',\n 'spreadFrom': 'spread',\n 'trimChars': 'trim',\n 'trimCharsEnd': 'trimEnd',\n 'trimCharsStart': 'trimStart',\n 'zipAll': 'zip'\n};\n\n/** Used to track methods that skip fixing their arity. */\nexports.skipFixed = {\n 'castArray': true,\n 'flow': true,\n 'flowRight': true,\n 'iteratee': true,\n 'mixin': true,\n 'rearg': true,\n 'runInContext': true\n};\n\n/** Used to track methods that skip rearranging arguments. */\nexports.skipRearg = {\n 'add': true,\n 'assign': true,\n 'assignIn': true,\n 'bind': true,\n 'bindKey': true,\n 'concat': true,\n 'difference': true,\n 'divide': true,\n 'eq': true,\n 'gt': true,\n 'gte': true,\n 'isEqual': true,\n 'lt': true,\n 'lte': true,\n 'matchesProperty': true,\n 'merge': true,\n 'multiply': true,\n 'overArgs': true,\n 'partial': true,\n 'partialRight': true,\n 'propertyOf': true,\n 'random': true,\n 'range': true,\n 'rangeRight': true,\n 'subtract': true,\n 'zip': true,\n 'zipObject': true,\n 'zipObjectDeep': true\n};\n","/**\n * The default argument placeholder value for methods.\n *\n * @type {Object}\n */\nmodule.exports = {};\n","/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

' + func(text) + '

';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

fred, barney, & pebbles

'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '